英文原文:Why he vertically aligns his code (And why you shouldn't)。
在 Terence Eden 的博客里,最近有一篇文章是讨论竖向对齐代码问题的:为什么我要竖向对齐程序代码(你也应该这样做)。
其中,它指出,”不好”的代码格式是这样的:
original="http://www.webhek.com/techug-res/uploads/2014/12/1.png" />
而经过“纠正”,代码看起来是这样样子的:
出于学习,我在我的代码编辑器里敲入了他的例子:
很显然,因为我使用的是一款具有语法高亮功能的编辑器,数字是绿色的,跟其它代码的颜色反差很明显。这样的效果中,我很容易在这些绿色的数字中发现其中有异常的数字。
同样,使用合适的字体,会使得驼峰式书写风格的变量名非常的明显好认;相反,下划线式的命名方式使得屏幕上的代码密度变低,字体变小。
我的代码编辑器还使用了语法高亮功能来强调字距。比如,caozuofu.html" target="_blank">操作符两边的字距比普通的字距要大很多,这样更容易让人识别。同样,空格符要比普通的字符宽出 50%,也是同样的作用。
在 Terence 的文章里,我想他遗漏了一个常见的问题,我通常会把变量按变量名的字母顺序排列,这样能够避免重复的定义。对于版本合并冲突问题,有一个很好的方法能解决中间新增变量行问题。
编程原子
我想最大的问题来自我们的编程的最小原子是以行为单位的。
看看下面的这个例子,它也是来自 Terence 的博客,这次是一个函数声明:
extern int SomeDemoCode (int fred, int wilma);
如果我们给这个函数增加一个参数,注意参数两边多出的空白:
extern int SomeDemoCode (int fred, + int barney, int wilma);
diff 比较工具将这个函数拆成了 3 行,这里的合并成功只是个巧合,diff 并不知道,这三行中的任何一行单拉出来都不成立。
如果把三行代码放在一行,合并起来会变成这样:
-extern int SomeDemoCode (int fred, int wilma); +extern int SomeDemoCode (int fred, int barney, int wilma);
长话短说,使用空白控制代码的呈现是 70 年代的产物,找一个更好的代码编辑器吧。