最近又看经典编程书籍《C程序设计语言,第2版,新版》(Kernighan,Ritchie著,徐宝文,李志译),发现了以前不曾留意的东西。C语言作者在书中第1章导言中,多次提到代码规范问题。
       
        1. 文字摘录
        在介绍while循环时,作者提到“...。我们总是把由while控制的语句缩进一个制表位,这样就可以很容易地看出循环语句中包含哪些语句。这种缩进方式突出了程序的逻辑结构。尽管C编译器并不关心程序的外观形式,但正确的缩进以及保留适当空格的程序设计风格,对程序的易读性非常重要。我们建议每行只写一条语句,并在运算符两边各加上一个空格字符,这样就可以使运算的结合关系更清楚明了。...”(p5)
        在浮点数赋值时,作者提到“...,即使浮点常量取的是整型值,字书写时最好还是为它加上一个显示的小数点,这样可以强调其浮点性质,便于阅读。...”(p7)
        针对符号常量,作者提到“...。在程序中使用300、20等类似的“魔数”并不是一个好习惯,他们几乎无法向以后阅读该程序的人提供什么信息,而且使程序的修改变得更加困难。...。符号常量通常用大写字母拼写,这样可以很容易与用小写字母拼写的变量名相区别。...”(p9)
        针对while中的复杂逻辑,作者提到“...。不过,如果我们过多地使用这种类型的复杂语句,编写的程序可能会很难理解,应尽量避免这种情况。...”(p11)
        针对外部变量,作者提到“...。过分依赖外部变量会导致一定的风险,因为它会使程序中的数据关系模糊不清---外部变量的值可能会被意外地或不经意第修改,而程序的修改又变得十分困难。...。函数将它们操作的外部变量名直接写入了函数,从而...失去了通用性。...”
       
        2. 回顾
        以前印象中,C语言强调性能,《C程序设计语言》的示例非常短小使用,但风格不佳、防御性不好,不能模仿。其实作者早有考虑,只是自己没有发现。现在关注代码规范,再次阅读时,就找到共鸣之处。Kernighan在另外一本专著《程序设计实践》中,对风格、接口、性能、可移植性等,进行了更加深入具体的讨论,非常值得阅读。
        回想,刚进入大学的新生,对各种制度遵守程度高,上课、早锻炼、自习等,宁愿花时间多次咨询确认,以避免犯错误引起自己不知道的后果。高年级学生则有时旷课,早上睡懒觉,因为他已经知道后果不严重。
        刚进入公司的新人,也是如此,对各种人事流程制度非常遵守,一些突发情况,让他不按流程特殊处理,还要多费一番口舌才行。资深员工则会灵活变通得多,通过各种手段解决问题。
       
        3. 非正常例外
        在代码编写方面,则是例外。新手很容易选择“最方便快捷的暴力解决问题方式”,而不愿遵守规则,并以规范太死,实现“不简单”来辩解;老手则对编码规范非常注重,解决问题时,长运用系统思维整体考虑。这里混淆了“简单”和“方便”的概念。简单方案,是KISS,不一定是好理解的直白方案,但会考虑好接口、封装等,而且前期可定会花很长时间去研究实现改进。方便,则通常与匆忙联系在一起,最快速度扫除当前异常,以自己运行检测为主。
       
        4. 原因
        ?程序员职业还没有被当做常规职业?