阅读更多
最近,我在阅读 Steve Yegg 的文集《程序员的呐喊》。
这是一本非常有趣的书,里面甚至包含了一个小测试(原文),区分一个程序员到底是保守派还是自由派。
下面一共有十个问题,每个问题都有 A 和 B 两个选项,请选择你的答案。
问题一:Bug 还没修复,软件能不能上线?
(A)软件发布前,应该编写完整测试,充分调试,尽量修复所有bug。
(B)不管多努力,bug 总是无法避免的,如果性质不是很严重,可以先上线,根据反馈再调试和修补。
问题二:容易出错的特性,是否应该用在程序中?
(A)很多语言的高级特性都是很容易出错和危险的,应该禁止用在代码里。没有这些特性我们一样可以进行开发,代码也会因此变得更安全。
(B)聪明的程序员有学习动力,知道怎么可以解决问题。为了避免出错,就立下一堆规矩,完全不可取。
问题三:新的语言或语法是否应该有所限制?
(A)公司里可以使用的语言数量应该受到限制,这样万一系统在半夜或是圣诞夜挂掉的时候,值班的人就不需要去临时抱佛脚学习新语法了。另外,也应该禁止改变语言原始定义的语法,比如严格限制操作符重载和元编程。
(B)程序员的学习能力是惊人的,没必要"保护"程序员远离新语法,只要有需要,他们自然能学会。
问题四:静态检查是否必要?
(A)编译器的安全检查很重要,不能进行静态检查的代码通常是不可接受的。
(B)代码应该短小精悍,静态检查工具可能会让代码变得又臭又长。
问题五:数据是否一定要有格式定义?
(A)数据必须遵循事先定义好的格式。比如,关系型数据库必须满足第三范式或UML,XML都必须有DTD,NoSQL数据库必须有单独的格式定义(标明所有允许的键,以及相应的值类型)。
(B)严格的数据定义只会妨碍灵活性,延缓开发进程。更好的策略是写一些注释,或者只定义一部分,甚至先略过它。因为在大量用户案例出现之前,没人知道数据可能会是什么样,代码先行才是正确的做法。
阅读全文直接点击: http://click.aliyun.com/m/9462/