最近开始修改其他人的 ksh 脚本,边改边庆幸不是跟这些人一起用 C 开发程序。在下虽然现在只写脚本,但是用 C 时养成的习惯已经在脑中根深蒂固,不管看什么程序,最见不得与自己习惯相违背的代码。shell 虽然很灵活,但有些一般性的原则总不能不遵循吧?试举数例:
- 函数定义一会 function f 一会 f(),其实两者区别很大,就算没搞清楚,保持一致应该不难吧?
- 函数内部变量不加 typeset,到处都是全局变量
- 代码缩进风格不一致,空格和 TAB 混用?建议大学程序设计入门改成教 python,先学会写整齐的代码再说。
- 变量名字这里大写那里小写,时不时又出来个大小写混合,还好你没听说 camelCase
- 重复代码宁愿贴来贴去,也不抽象出一个函数
- 函数不加返回值,有返回值的也不检查
- 公共函数不加注释,不检查输入参数
- 不检查空串,经常出来个 awk syntax error,或者 grep 等在那(因为输入文件名为空)
- set -x 不删除就提交了
- log 语句太少,阅读 journal 是不够的,出错之后看源码是必需的
- 临时输出宁愿重定向到中间文件,而且文件名是个随意的
据说美国人曾抓住一个前苏联高级间谍,审问的几个人故意当着他的面作出各种愚蠢假设和推理,最后间谍听不下去,招了。让一个严谨的程序员抓狂的,莫过于阅读有上面这些类问题的程序。
1 Comments so far
wayne, on Sep 4, 2008 at 12:22am, said:
前阵子改一个wm的应用, 改到我最后做噩梦...