[I_Say]写程序的一些感想和教训

(旧文重发,本文写于大学期间)

一.凡事预则立,不预则废。写程序,作软件亦如此。大一的时候,写程序是不打稿的,心中有什么想法,就怎么写,写的挺痛快,也挺滋润。可是带来的后果是无 穷无尽的测试和修改。一个小错误,要查个半死,查出来后了,又把程序改的乱七八糟,程序再也不是优雅的思想的体现,更象是混乱思维的杂糅。这是教训一:不 打没有准备的战。写程序要写设计报告(除非已经对算法了如指掌),做软件,要写需求报告和设计报告,或者一个包含了需求报告的设计报告。这样做会大大提高 工作效率。不至于沉浸在错误的深渊中。

update: 除了写程序,做其他事情也是一样的道理,不熟悉的一定要做计划打草稿,直到养成习惯后,一切都顺其自然了。

二.注释!注释!注释!有的人写程序有一个极为不好的习惯,从来不写注释,老兄,不为别人写也该为自己写啊,如果你不信,拿出你一年前的超过100行的没 有注释的代码,~~~~~晕,特别像c/c++这样大有着大部分过程的语言。更要勤写注释。我有个同学,他从大一开始就写注释,而且特别详细,但是他做的 程序总是那么高效和漂亮。

update:生活要做记录

三.程序格式规范,自打开始编程,一直很重视这方面的东西,包括命名的规范和格式的规范。规范的程序,看着总是那么的漂亮和舒心,特别是看像 《thinking in java》里的例子程序,惊叹于作者的认真,和代码的优美。这和注释是一样的,与其说是为了别人,不如说是为了自己。该所缩进的一定要缩进。还有就是命名 的问题,有的人从学编程开始就喜欢int 1,j,a,b;开始的时候用这些简单的标识符还是可以的,但是当你编一个像模象样的程序你还乐此不彼,那就不得不反思一下了。宁可标识符长一点,也不用 一些无意义的字符。

四.程序模块化,记得有一次一位贝尔实验室的教授来大学作讲座,他说在贝尔实验室,一个函数不会超过100行。当时生表怀疑,可是现在我对此深信不疑,一 个好的程序,总是有很多小的优秀的模块构成。这样即使出错了也可以通过调试判断出到底是哪一个模块除了问题。当升级程序的时候,你所要做的仅仅是更换模 块,而不用去满天下去找程序。java在这方面非常有优势,彻底的面向对象。通过继承,重载,多态,接口等特性。非常容易模块化。不同模块之间通过引用联 系在一起。就像这个世界上的人一样,每个人都是一个独立的个体,个体与个体之间同过亲情,友情,爱情等联系在一起。还有一个好处就是模块的可重用性,我有 一个ToolKit包,我把所有的我认为可重用,而jdk里有没有的类放在这个包里,比如文件读取,数据库联接。如果每读一次文件,连一次数据库都要写一 段相同的程序,想象一下那是多么低效。

五.沟通和交流,也许你是天才,可以完全自学所有东西,否则,还是多问问得好。所谓三人行必有我师。每个人的程序都可能有他的闪光点。在别人许可的条件下 尽可能的学习他人的长处和优点。如果你跷起二郎腿,认为老子天下第一。那你可能真的是天下第一,坐井观天中的井里的第一。多与同事,同学交流,多上论坛, 这样交流双方都学了对方的知识,又交流了感情,何乐而不为?闭门造车是写不出优秀的程序的。

六.激情,有的人20的人60岁的心,喝喝酒,抽抽烟,失恋一次就认为自己看破红尘,做人本来就不容易,如果还让一些烦心事折磨着本来就已经很累得心。那 这日子还怎么过。不如过得平淡一点,因为内心越是平淡,越是容易产生激情。

blog comments powered by Disqus