作者|Ravi Shankar Rajan
来源|Hacker Noon
编译|虎不唬
“唯一能有效测量代码质量的方式,就是是每分钟说多少个What-the-F**k ”
—Robert Martin
当我们通常 Review 别人代码的时候,差不多是以下三种反应:
· What-the-F**k (厌恶) —  这一坨代码根本没用
· What-the-F**k (恍然大悟)  —  不错,很机智
· What-the-F**k (无奈)  —  你TM到底在表达什么
回想我们的反应,当我们看代码的时候,第一感觉绝对是:这段代码“长相”如何。
所以,能够写出干净利落的代码,在码农界绝对是高手不可或缺的技能之一。
如何学会这两个技能 - 理论与练习。理论可以教会职业中所需的模式、原则、实践和启发式。但是只有通过不断的练习和努力工作,这些知识需要被才能成为你的一部分。
这里有一些你可以快速掌握,并且立即学得,整洁代码编写方法。

从命名说起

如果我要讲一个真实的故事,我会从介绍我的名字开始
—Kendrick Lamar
代码中名称到处都是,函数、类、参数、包以及其他。我们会命名源文件和目录以及里面的一切。而有效的命名,是写出整洁代码中最重要的部分。
命名应该有根有据,在选名称的时候一定要动脑经想想,这部分花的时间,可以在后来情况更复杂的时候,百倍的赚回来。不少程序员的命名到最后自己都不记得了,让人看得头皮发麻。要注意你的命名,之后每个阅读你代码的人都会因此而很感谢你。
给变量、函数或者类的命名的时候要想到三个问题:它们存在的理由?做了什么?如何使用?
这不仅需要好的描述技巧,同时也需要考虑到跨国界的文化背景。

函数应该只做一件事

“功能决定设计” -—Louis Sullivan
函数是语言的动词,而类是名词。在任何编程语言中,函数通常是系统中的第一行,编写好的函数是写好代码的实质所在。
两条书写整洁函数的黄金定律:
  • 代码应该少
  • 函数应该专注做一件事,并且做精
所以这也意味着你的函数不应该太大来嵌套其他结构。同时,函数的缩进,不应该大于一个或者两个。该技巧可以使得代码更容易阅读理解消化。
除此之外,我们也要使得函数内的语句处于同一个抽象程度。在同一个函数中混合不同层次的抽象,会使得其令人迷惑,并且不利于管理。主程思考函数就像在讲故事一样,而非如何去写代码。

注释并不能弥补劣质的代码

“每个人有自己的注释,这就是谣言开始的方式”
—Venus Williams
注释就像两面刀
  • 看别人优秀的注释真是让人心旷神怡;
  • 我最讨厌写注释啦,浪费时间,浪费空间,于是造成:传递错误信息的注释。
大部分时候,注释越老,维护起来越困难,大部分程序员都因为不维护注释而臭名昭著。
代码移动和更改:代码块移动到其他地方,而注释不随着移动,就会成为一个问题!
要牢记,带有一点注释并且整洁和有表现力的代码,要远远好过复杂并带有大量注释的代码。不要浪费时间去解释你写的代码,而去投入时间去使其整洁。

优先进行代码规范化

“代码规范化是要去交流,而交流是一个专业的开发者首先要做的。”
—Robert C. Martin
敲黑板,这是一名真正伟大的开发者最重要的习惯之一。
如果你觉得把代码码出来是职业开发者的头等大事,那么你离真相将更远。你现在创建的功能很有可能在下个版本中被替换,但你的代码可读性将不会改变。
在原始代码完全变得不能识别之后,代码的风格和可读性会持续的影响代码的维护。
要知道将来被记得的是你的代码风格,而几乎不是你的代码。所以你需要注意你的规范化并约束在整个小组的能理解简单的规范下。

书写你的"try-catch-finally"语句

“犯错是人类的本性,但是持续犯错就是穷凶极恶了”
—Georges Canguilhem
Debug是所有程序员都要做的。输入可能不正常,设备工作可能不正常。作为开发者,我们致力于让代码的准确运行。然而,问题不在于解决这些错误,而是用干净可读的方式去解决问题。
很多代码的混乱是由处理过去的错误造成的。代码变得分散后,完全磨灭了主代码的目的和逻辑。
一个好的建议是在 try-catch 语句中合理的闭合并捕获错误。这些块某种程度上也定义了你代码的作用域。当你在 try-catch-finally 语句中的 try 部分执行代码的时候,就是在表明执行会在任意时刻终止,并在 catch 中恢复。
因为这个原因,写代码的时候从 try-catch-finally 语句写起是个好的习惯。这可以帮助你确定可以预期到的用户代码,不管代码在 try 有没有报错。

总结

把以上五点总结为一个词:代码意识。
“书写清洁的代码,就需要在痛苦的“清洁”感中,严谨的使用无数小技巧,而这些小技巧统称代码意识。" 
—Robert Martin
一些人生来有之,其他人就需要通过痛苦的坚持锻炼来获得。代码意识不仅可以帮助我们区分优秀的代码与劣质的代码,而且可以有助形成策略,将劣质代码转换为优质的代码。
代码意识可以帮助程序员选择最好的工具,去指导他们努力创建一个更有价值的整洁漂亮的代码。
“程序员的代码是主要是给人看的,给机器执行只是顺便的。”
—Harold Abelson
想要代码更加简洁?
想要提高你的刷题效率?
点击阅读原文了解更多吧!
继续阅读
阅读原文