谈谈编码与规范

一提到编码风格时,往往也会引起腥风血雨

比如:

JavaScript 语句后面应该加分号吗?

缩进应该用 Tab、四空格还是两空格?

变量应该统一提前声明好还是就近声明?

变量名应该用驼峰风格还是下划线风格?

注释应该采用 JSDoc 风格还是 Markdown 风格?

私有属性约定用下划线开头吗?

函数最好不要超过多少行?

……

#这类问题不仅在程序员中普遍存在,文字工作者也常常纠结:

中英文混排时,中文与英文之间应该加空格吗?

中英文混排时,英文字母后面应该用全角还是半角标点符号?

段落前面真有必要空两格吗?

引号是否应该用 『』和「」?

破折号是一杠还是两杠?

例如、参考等词汇后,究竟需不需要加冒号?

……

#风格

我们日常说的编码规范,经常指的是 Style Guide,正确的翻译是编码风格。

既然是风格,就没有对错。就如现实生活中,我们每个人都有自己的穿着打扮一样。可能有些人打扮土一点,但土就土,并不影响什么。

很有意思的是,风格也没有孰优孰劣。比如郭敬明的打扮,很多人很喜欢,会为其尖叫为其疯狂。但在我看来,郭敬明的相貌让我非常讨厌,这还是男人吗?太锉啦。

别去争辩,喜欢和对错无关,风格亦无高低之别。

编码风格如此,文字排版风格也是一样。

#规范

风格之外,也有规范。比如穿着打扮,光怪陆离都没问题,但在公众场合不能不穿。规范经常很少很少,但的的确确存在。

对于 JavaScript 语言来说,通用的编码规范基本没有,有的话只有一条:要能运行。除此之外,还会有一些:

JavaScript 文件的编码必须是 UTF-8 。

JavaScript 中不能出现 URL 硬编码。

……

以上规范都是针对具体公司具体场景下的要求,除了以上这些规范,其他都是编码风格问题。

社会中的规范,是为了维护基本秩序和道德底线。编码规范,则是为了避免错误。

#态度

程序员经常有个坏习惯:拿到别人的代码,喜欢首先按照自己的风格格式化一下。

好的习惯是这样的:

给他人的开源项目提交补丁也是一样:尽可能多地做足功课,弄清楚该项目使用的代码风格和测试集的组织,甚至是 git 提交日志的书面格式,尽量让我写的东西酷似项目作者本人写出的东西,这样可以节约对方的时间,是对他的最大尊重。

这就如我们去朋友家里做客,你可能会很不喜欢朋友家里的装修风格,但你最好不要自带颜料桶去帮朋友重新装修。道理不用多说,对他人的风格我们要懂得尊重,无论是在现实生活中,还是在写代码时。

当然,认可的规范还是得遵守。比如别在公共场合裸奔,别在一个 UTF-8 团队把文件存成 GBK 编码。

对待规范,要严格遵守。对待风格,要懂得尊重。

#关键

一旦你拥有了开放的心态,一旦你开始懂得去欣赏他人的风格,你会发现世界是五彩缤纷的,你会开始越过一些表象,关注起一些真正值得关注的。

比如一个长得很丑的人,当你不再去看外表时,你会发现某些情况下丑人是会发光的,那种光十分漂亮,比很多帅哥漂亮百倍千倍。你会开始懂得生活,懂得真爱。

编码也如此。不再去纠结四空格还是两空格后,你会看到

代码的逻辑抽象是否正确?

代码背后的数据模型是否可以优化?

这段代码是否应该放在这个文件里?

这个模块的职责是否过大?

这个设计模式是否用得太僵硬?

某个功能点是否应该用 CSS 而不是 JS 来实现?

这段代码是否忘了写单元测试?

……

一旦你开始能从他人的代码中,去纠结以上各种问题而不是代码风格时,你的功力经常就会大增。牛逼的程序员有个不怎么对外说的秘密:

去更多地看代码,看优秀的代码。迫不得已才自己去写少量代码。

#最后

代码如人,风格的差异很正常,彼此尊重。相爱是灵魂的碰触,别停留在表象。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏即时通讯技术

微信团队分享:Kotlin渐被认可,Android版微信的技术尝鲜之旅1、引言2、概述3、“烹饪”准备4、“烹饪”过程5、开锅,上菜6、如何更好地了解Kotlin这种食材的味道附录:QQ、微信团队原创

本文由微信开发团队工程是由“oneliang”原创发表于WeMobileDev公众号,内容稍有改动。

12450
来自专栏落影的专栏

程序员进阶之算法练习(二十六)

前言 金三银四,求职黄金月做算法面试题,热热身子。 正文 1.Chess For Three 题目链接 题目大意: 有三个人A,B,C玩剪刀石头布的游戏,但...

49460
来自专栏阮一峰的网络日志

每行字符数(CPL)的起源

前几天,我收到网友小龙的Email。 他想与我讨论一个问题: "各种计算机语言的编码风格,有的建议源码每行的字符数(characters per line)不...

36160
来自专栏GopherCoder

『Go 语言学习专栏』-- 第七期

27560
来自专栏HelloCode开发者学习平台

iOS开发-KVC从使用到原理详解(1)

相比往年的iOS招聘,相比之前波涛汹涌,这会已经是相对风平浪静.但是实际上这样的风平浪静只不过是由于无法坚守的iOS 开发者相继退出而已.但是该有的竞争...

9030
来自专栏牛客网

iOS秋招总结 = 面经 + 闲言碎语 (不断更新)

面经包含:携程、阿里、京东、腾讯 十一假期,秋招基本上已经结束了,剩下少量面试和少量流程中。虽然还没有最终决定,不过也还是决定来开个帖子,写一些总结回馈一下牛...

45540
来自专栏开源FPGA

数字电路基础

十进制数转化为R进制数:整数部分,除R取余法,除到商为0为止。小数部分,乘R取整法,乘到积为0为止。

13410
来自专栏大宽宽的碎碎念

程序里怎么表达“没有”

最近忙着调研gRPC做服务治理,尝试用protobuf3重写现有的接口逻辑,发现了一个问题:protobuf3的基本类型不支持nullable。如果想表达“没有...

11120
来自专栏编程之旅

《代码整洁之道》读书小结

最近晚间的加班暂时暂停了,大概已经整整一个月每天焦头烂额的写着业务代码,被各种逻辑搞的整个人都不大好了,好在是写的差不多了。

33930
来自专栏C语言C++游戏编程

零基础究竟怎样才可以学好C语言?多年开发老司机告诉你答案!

看到这,你也许有疑问:C语言功能强大,运行这么简单的一个程序就算入门了,没这么简单吧?

15000

扫码关注云+社区

领取腾讯云代金券