当我谈分号时,我谈些什么?

@lifesinger 2012-07-17 02:41:45发表于 lifesinger/blog blog

前不久,hax 挑起了分号之争:JavaScript 语句后应该加分号么?

hax 的论点不赘述,请仔细阅读知乎上的文字。微博上后来也有讨论,有兴趣的可搜索。

这场不大不小的讨论,现在回想起来,挺有意思。几点感想:

  1. 浮躁影响深入。经常有人问我如何成长、如何成为前端牛人?牛人的定义各有各的不同。在我心目中,牛人是黑客的代名词。我自己离“牛”的境界还远着,至于如何牛,也在摸索中。最近几年最大的感受是:心静自然牛。“静”字很有意思,拆开,是 “争” + “青”,即赢得青春。心静首先就得不浮躁,能沉下心来,踏踏实实去做好每一件事。回到分号之争,不浮躁首先就要求能安安静静下来认真去读一遍 hax 的总结,读完之后再悄然离开或发表自己的观点。这样才有可能真正参与到讨论中来,而不是当局者清,旁观者迷。
  2. 习惯是件可怕的东西。很多人反对不加分号的理由是:习惯了加分号。这让我想起见过的很多代码:死套设计模式的、陈旧性能优化的、老式惯有写法的等等。比如,目前 node 风生云起,但很多玩 node 的代码里,充斥着 for each 等代码,而从来没有去尝试过 forEach / map / filter / reduce 等方法,更别说去试试老赵的 Jscex 异步流程的自然写法了。每每看到这些,我脑海里就浮现出大大的两个字:码农。从这个层面上讲,码农还真不是自嘲,而是国内很多程序员的真实写照。码农是悲催的,每天搬运着砖块,倘若跟对了人,还能为大厦添些砖加些瓦,倘若没跟对人,能造出来的也只能是豆腐渣工程。挑战习惯需要勇气,勇气是创新的第一步。前面举的例子只是非常小的一个点,写 for each 是没错的,但只会写 for each 的程序员,不客气的说,就别写程序了。挑战习惯,是种生活方式。如果老保持旧有习惯,那么我们应该继续沿袭包办婚姻才对。习惯是件可怕的东西,当你拿习惯来抵抗新事物时,一定要小心。
  3. 入乡随俗最可贵。对于分号,其实对我来说无所谓。加分号也习惯,不加分号也习惯,取决于在哪个社区。比如要给 zepto 提交 pull request,遵守 zepto 的无分号风格很重要。去 backbone 社区提交代码,则遵循 backbone 的注释规范很重要,同理,jquery 社区,node 社区等等,都会有自己的风格,如果想参与到这些社区中,遵循社区的统一风格是基本要求。除了分号,还有用四空格还是两空格,以及括号前后是否加空格等等细节问题。遵循并理解这些不同的风格,这对个人来说是种提升,对社区也是一种尊重。倘若想改变,首先得先融入。生活中的很多事情也如此。比如旅游,如果去了西藏,依旧每天吃水煮鱼,或玩手机,那就别去了。那种旅游,只是肉体的转移和金钱的浪费,没啥裨益。

好久没写博客了,这次用 GitHub 的 Issue 来写,也算是挑战一下旧有习惯,和代码里不写分号其实是一样一样的。