怎样成为一个好程序员

我总梦想有一天自己成为一个伟大的程序员,现在这个梦想和现实的距离还很遥远。但是如果要问怎样做一个好程序员的话,我很有一些看法…

一,最重要的一点,要懂得平衡。

说这是最重要的一点也不为过,因为程序员的生命中要平衡的东西实在是太多了。我隐隐觉得,是不是对其他职业的人们来说,这也是最重要的呢?比如说,搞革命工作的人,有一个很重要的理论指导文件,毛泽东写的《矛盾论》,其实就是要做到主要矛盾、次要矛盾之间的区分、平衡,要懂得这两者在特殊条件下的相互转变,等等等等。

举一个简单的例子,程序员都要看书学习,关于看书的平衡,就是一门很大的学问。书要看多少本?看多快?哪些书可以看仔细一点,哪些书翻翻就行?这本书我现在翻翻,将来仔细看,还是现在仔细看,将来再拿出来翻翻?

又比如,现在设计模式很流行,那么,看完GOF的那本设计模式以后,关于怎么使用这么多的模式也有一个很重要的平衡问题。每种模式什么时候该用,什么时候不能用?这个其实在那本经典的著作中已经讲得很清楚,对每一种模式的优缺点理解透彻,尤其是缺点,那么做到平衡就不难了。

新程序员容易犯的一个毛病,叫做过犹不及。学完面向对象以后,什么程序都用类,不仅如此,还要用上继承。学了设计模式,就在哪儿都来一个工厂,再来一个抽象工厂,什么Singleton。就象大腕里的那个神经病说的,什么玩意儿时髦就整什么。这就是没有彻底理解这些技术造成的。搞不懂什么时候该用,什么时候不该用。

如果实在一时半会儿不能学会怎么平衡的话,有一个很好的办法,叫做克制。尽量不用一些复杂的新鲜玩意儿,就准没错。

这么说不过瘾,下面列一个表,看看有哪些东西要平衡

1. 怎么给变量起名?用匈牙利命名法不?szFooBar?用骆驼式?fooBar?下划线式?foo_bar?

2. 变量名取多长合适?5个字符,10个字符?最长可以忍受多长?全局变量给什么标准,局部变量呢

3. if while for 语句后面的{ 另起一行还是不另起一行?

4. 一段代码没用了,是删掉,还是注释掉?为什么?你怕什么?

5. 函数名前加不加注释?如果加,写不写你的名字、日期、?

6. 写不写文档?用word写,还是.txt?

7. 画不画UML?用visio,还是白板加相机?

8. 用不用设计模式?用其精髓,还是皮毛?

9. 用不用TDD?精髓,还是皮毛?

10. 什么是精髓,什么是皮毛?

11. 看书的时候要囫囵吞枣,还是全盘接受,还是批判性的阅读。要站得比作者高,他说什么想想对不对,还是比他低,他说什么就是什么。

12. 读别人的代码,要读得多透?哪一块要读透,哪些不用?

13. 自己写代码,写之前想多久?什么都不想,上来就写?想了半天,什么也不写?

14. 写多少代码之后,编译一下,看看出了什么错误?写两行就编译一次?全写完再编译?还是写了几个函数之后?

15. 写多少个函数能解决问题?只有一个main? 用一百个函数来打印hello world?

16. 做出一个决定以后能不能再改?不能轻易改的决定,花多少心思做?随便改的决定,花多少?

17. 写代码最重要的是什么,执行效率?用汇编?内存占用要少?变量名重用?(这一条不需要平衡。因为标准只有一个,就是要易懂。只要代码可理解,即使它的逻辑是错的也无所谓。如果代码不可理解,那么,你根本不知道逻辑是对是错,为什么对为什么错,执行快还是慢,为什么快,为什么慢。所以,下一次,我会聊一下可理解的代码对一个好程序员的重要性)。

今晚就写这些了。

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


%d bloggers like this: