写程序的一些感想和教训(转载)
一.凡事预则立,不预则废。写程序,作软件亦如此。大一的时候,写程序是不打稿的,心中有什么想法,就怎么写,写的挺痛快,也挺滋润。可是带来的后果是无穷无尽的测试和修改。一个小错误,要查个半死,查出来后了,又把程序改的乱七八糟,程序再也不是优雅的思想的体现,更象是混乱思维的杂糅。这是教训一:不打没有准备的战。写程序要写设计报告(除非已经对算法了如指掌),做软件,要写需求报告和设计报告,或者一个包含了需求报告的设计报告。这样做会大大提高工作效率。不至于沉浸在错误的深渊中。
二.注释!注释!注释!有的人写程序有一个极为不好的习惯,从来不写注释,老兄,不为别人写也该为自己写啊,如果你不信,拿出你一年前的超过100行的没有注释的代码,~~~~~晕,特别像c/c++这样大有着大部分过程的语言。更要勤写注释。我有个同学,他从大一开始就写注释,而且特别详细,但是他做的程序总是那么高效和漂亮。
三.程序格式规范,自打开始编程,一直很重视这方面的东西,包括命名的规范和格式的规范。规范的程序,看着总是那么的漂亮和舒心,特别是看像《thinking in java》里的例子程序,惊叹于作者的认真,和代码的优美。这和注释是一样的,与其说是为了别人,不如说是为了自己。该所缩进的一定要缩进。还有就是命名的问题,有的人从学编程开始就喜欢int 1,j,a,b;开始的时候用这些简单的标识符还是可以的,但是当你编一个像模象样的程序你还乐此不彼,那就不得不反思一下了。宁可标识符长一点,也不用一些无意义的字符。
四.程序模块化,记得有一次一位贝尔实验室的教授来大学作讲座,他说在贝尔实验室,一个函数不会超过100行。当时生表怀疑,可是现在我对此深信不疑,一个好的程序,总是有很多小的优秀的模块构成。这样即使出错了也可以通过调试判断出到底是哪一个模块除了问题。当升级程序的时候,你所要做的仅仅是更换模块,而不用去满天下去找程序。java在这方面非常有优势,彻底的面向对象。通过继承,重载,多态,接口等特性。非常容易模块化。不同模块之间通过引用联系在一起。就像这个世界上的人一样,每个人都是一个独立的个体,个体与个体之间同过亲情,友情,爱情等联系在一起。还有一个好处就是模块的可重用性,我有一个ToolKit包,我把所有的我认为可重用,而jdk里有没有的类放在这个包里,比如文件读取,数据库联接。如果每读一次文件,连一次数据库都要写一段相同的程序,想象一下那是多么低效。
五.沟通和交流,也许你是天才,可以完全自学所有东西,否则,还是多问问得好。所谓三人行必有我师。每个人的程序都可能有他的闪光点。在别人许可的条件下尽可能的学习他人的长处和优点。如果你跷起二郎腿,认为老子天下第一。那你可能真的是天下第一,坐井观天中的井里的第一。多与同事,同学交流,多上论坛,这样交流双方都学了对方的知识,又交流了感情,何乐而不为?闭门造车是写不出优秀的程序的。
六.激情,有的人20的人60岁的心,喝喝酒,抽抽烟,失恋一次就认为自己看破红尘,爱情?扯淡!你说这样又如何写程序。做人本来就不容易,如果还让一些烦心事折磨着本来就已经很累得心。那这日子还怎么过。不如过得平淡一点,因为内心越是平淡,越是容易产生激情。写程序写到激情处,那是一种无比的快乐。