山地人

第008期.如何才能写出一手整洁的好代码?(下篇)

山地人
山地人
2021-05-13

Computer C++ Code

上一期我们将了起名里应该避免的一些做法和如何封装好函数的五大规则。

本期我们重点来讨论下代码注释和格式。

到底该不该写注释?

如果你的代码能够表达清楚你的意图,那些注释其实就是一件多余的事情。换个角度来思考,如果你的代码非要用一段注释才能讲清楚问题。那是不是意味着你已经失败了。因为你无法让代码自己来讲述完整的故事。这个时候你是否应该反思一下,如何让代码的表达能力增强。

一、代码是最好的注释

所以建议你在每一次需要加注释的时候,想一想,你是否可以提升你代码的表达。记得当你完成了一次这样的改进给自己在内心里鼓掌一次。每写一次注释,也记得在内心给自己做一个鬼脸,感受一下自己代码表达能力的欠缺。

二、会帮倒忙的注释

代码经常会被调整,但是注释有时候会忘记调整。时间一久,代码和注释就彼此分离了。这个时候再去阅读时,注释可能就在帮你的倒忙了。因为很多时候开发更多的是关注代码的维护,而不是坚持去维护注释。

三、少用注释遮掩糟糕的代码

“Don’t comment bad code — rewrite it.”

— Brian W. Kernighan and P. J. Plaugher

代码写得烂,这个时候很容易想到用一段注释来做掩盖。其实这种习惯非常不好,时间久了,你就会习惯写烂代码并加注释。所以这种时刻,提醒自己回到我们的第一条,发现自己要给不好的代码添加注释的时候,想一想是否可以优化一下代码的表达,因为代码是最好的注释

代码格式

讲完了命名,函数和注释,接下来我们再来讨论下格式问题。

不管是在团队开发中还是你自己独立维护一个项目。你都应该始终保持良好的代码格式。对于一个团队,大家一起商量好一套简单的格式规则,然后所有的成员都要准守这个规则。当然这里可以借用一些现代化的格式规则工具来辅助你。

代码格式的价值

可能很多开发者会有这样的误区,认为当代码工作才是一个专业开发者要关心的头等大事。其实不然,在经历过几次迭代之后,你的最早的那批代码可能早就不存在了或者以及被改动掉了。虽然代码不在,但是代码所带来的风格和之前的一些习惯却会传承下来。所以代码的整个风格,代码的格式会留在你的项目中,并继续影响后续的开发。它们会在项目里和整个团队的开发进行无声的沟通。

既然代码格式这么重要,那我们应该如何做好代码格式工作呢?

单个文件长度不宜过长

对于我们开发人员来说,太行的文件是不易于维护的。试想一下你打开一个2000行的源文件,然后要修改里面的几行代码。眯着眼睛,脑袋贴着屏幕,拖动鼠标从上往下一点点翻阅,这是一种什么样的代码阅读体验。因此,学会合理拆分组织你的代码文件。建议单个代码文件的长度控制在200~500行。始终记得短文件比长文件易于理解和维护

缩进代码

不管是前端和后端,代码的缩进都是代码格式的重要的一部分。我们的前端代码中,我们常常会使用如下的风格来进行代码的缩进。

image-20190415151654813

代码的缩进就像上图所画出来的,一层一层的圈起来。每一对花括号{ },都会圈出一块控制区域,内部的另一对花括号在圈出一块控制区域。对于程序员来说,在阅读代码的时候非常依赖这种层次缩进关系。如果没有了这种缩进关系,代码的阅读会变得非常困难。

//没有缩进的代码
function getUserInfos( data ){var userInfos = data.uses.map( user => { name: user.name,gender: user.gender,});return userInfos; }
//使用了缩进的代码
function getUserInfos( data ){
var userInfos = data.uses.map( user => {
name: user.name,
gender: user.gender,
});
return userInfos;
}

相信通过面的对比,你就能够理解没有了缩进代码将变得多么难于阅读。所以,从现在开始养成良好的代码缩进习惯,真的非常重要。

一套系统犹如一个故事

当你打开一个项目,从入口文件开始,关于这个系统的故事的讲述也就开始了。写在这个系统最开头的那些代码应该像故事的大纲一样,把整个系统的主要部分展现在你的眼前。顺着外层的大纲往里走,系统的每一个功能一点点展开。所以一个好的项目从组织结构上应该是清晰调理,层次鲜明的。

这一期我着重讨论了注释和代码格式问题,下次当你再写注释的时候,停下来想一想到底是要加注释还是要调整代码呢。另外如果你有良好的代码缩进习惯,那么很好,请继续保持。如果之前并不在意代码的缩进问题,那么看过本期的内容后,请开始注意这个问题。

本期的分享就到这里,希望对你有所收货。