Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

袋子与盒子与代码风格

  最近看到好多奇奇怪怪的代码风格让我想起了以前曾扯过的一篇「袋子与盒子的概念」。好像很多人都喜欢使用「袋子」风格的代码(我以前也喜欢这种),这也许确实更利于机器阅读、还可以少输几个字符,但对于编辑和团队开发而言「盒子」风格也许会更方便。
  JavaScript 的变量定义到底应该怎么写比较好?有好多写法比如 var a = 1, b = 2, c = 3; var a = 1,
    b = 2,
    c = 3;
  这些这样的写法都很常见。但用着就发现,这些「袋子」风格的写法编辑起来很不方便。比如上面代码中 a、b、c 的定义顺序如果要改成 b、a、c,那就不是移动整行可以解决的。必须定位到一行中的某个字符,然后修改字符。比起移动整行,修改过字符显然要麻烦得多。所以我认为,JavaScript 的变量定义语法最好是写成「盒子」风格的,比如 var a = 1;
var b = 2;
var c = 3;
  这样即使要交换 a 和 b 的定义顺序只要交换两行就可以了。很多编辑器都有移动整行的功能,vim 也可以 dd 再 p,简直秒秒钟就解决!
  使用「盒子」风格不仅仅是便于编辑,还有一个更伟大的目的就是可以有效地在团队开发时候较少代码冲突。因为 git 是以行为单位来 diff 的,如果编辑的代码在不同行上就不会冲突。一个典型的例子就是依赖注入。比如有这样的代码 require(['a', 'b', 'c'], function(a, b, c) { /***/ });   如果两个开发者一个将 a 依赖换成 x 依赖,另一个开发者将 c 依赖改成 y,然后解冲突就蛋疼了 <<<<<<< HEAD
require(['x', 'b', 'c'], function(x, b, c) { /***/ });
=======
require(['a', 'b', 'y'], function(a, b, y) { /***/ });
>>>>>>> b
  如果将这些依赖分行写出来就不会冲突(相邻的行确实依然会冲突)。
  其实把这些变量分行写也不完全算是「盒子」风格,因为最后的逗号处理总是会很纠结。经常会出现添加一行后丢了个逗号或者删除一行后多了个逗号的情况,这应该算是 JavaScript 的坑吧?不过从 ES5 就开始支持数组和对象最后存在多余的逗号了,而在 ES7 中函数的定义与调用也将支持末尾存在多余逗号,也许以后的风格会完全往「盒子」方向发展吧?
网名:
54.144.24.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^