写好代码的五个要素
部分翻译自:http://www.aclevercookie.com/the-5-elements-of-being-a-vicious-code-ninja/读完有感
都说中国的程序员浮躁,我们为什么浮躁?如果我们不只是整天看着一大堆的新技术眼花缭乱浅尝辄止,而是能静下心来,仔细审视一下我们的代码,哪怕仅仅是让 那些代码整齐一点,稍微好看一点,看起来顺眼一点,方法名好理解一点,最好让别人看了也舒服、也能看懂。。。这些,是不是,我们就不那么浮躁了点?写程序是一门艺术,这样才符合他的名字“程序设计”。既然是设计,那就让我们的程序看上去更美一点吧。。。
前言
我的主要编程语言是PHP。我会让这些规则尽可能的通用,以便他们也适用于其他程序场合。在可读性章节中有个例外,我是用PHP写的例子,某些语法可能不同。
抓紧你的键盘和你旁边的止血药。文章的最后会有血流出来。(实在汗,真不知道怎么翻译shuriken。。。,意思就是文章最后有让你惊讶的吧)
可读性
可读性的关键因素
空白
空白不要钱,尽管用。我知道有些人不赞同,但在我看了他们糟糕的代码之后,让代码留有空白真的很重要。把你的代码看作一本书,你有必要让眼睛很容易找到空白和分割的地方,才能详细分析你的代码,才能找到你看的分割的地方。对齐
当你有很多行相似的代码是,问问你自己是否能让代码对齐,或者能用一种容易表达的方式来分组,同时也更容易从中提取信息。一致性
在个人或团队项目中,一致性很重要。总得来说就是在你的整个应用中,保持代码风格一致。个人
一致性在个体中更难保持。自从你成为一个程序员,你的技术在发展。你不可能总是回过头更改你以前的代码,让他们和你新的发现保持一致。有时候你会,但并不总是这样做。你很可能会创建你自己的库。像你所知,一个库是一个你引入到每项工作中的一个代码集合。基本上是你自建的工具箱。你开始理解函数和面向对象了,以便让你的 生活更加简单并减少重复的任务。让你的库时刻更新很重要,你得花时间修复你的库。你的库就是你的工具箱,你要让你的工具总是锋利,如果你的一件工具变钝 了,你要让它锋利,或者替换掉。
团队
当你进入一个项目时,不要引入你自己的代码风格。项目的风格要让每个人很容易就遵守。如果你给wordpress开发一个插件,你就得遵守这样的方式,让你的代码像是wordpress的一部分。即使很糟糕。为什么呢?一致性很重要!如果你要看整个工程的代码,你不会想看到到处都是不同的代码风格。这妨碍你大脑的理解。即使不是你喜欢的代码风格,一致行也是重要的,应该维护工程的整体可读性。
组织
这个部分是一致性和可读性的综合。整个工程中,你应该把你的代码和文件组织成统一的方式。如果你在文件头部有一个引入,你应该在每个文件中都是在相同的位置引入。代码
MVC模式,大家都清楚(不再多翻译)。你应该用MVC模式组织你的代码。文件结构
文件结构也就是目录结构。比如你把库文件放入lib目录中,那么在另外的地方的lib目录,也应该放的是库文件。相同的文件要组织在一起,比如javascript文件放入js目录,css文件放入css目录等等。可伸缩性
做为一个程序员推销你自己,你的代码的可伸缩性很重要。同时让你的代码提供扩展能力,也很重要。达到伸缩性的最好方式是在可能的时候把事物抽象。即使你认为你不需要扩展,抽象是很好的实践,这点无容置疑。如果你参与一个大型项目,不要说“到那的时候,我们会过桥”。没错,过桥,但是得保证到那的时候桥是建好的。项目早期,很容易就能修复一些问题,也并不花费太多步骤。
可支持
这篇文章的前四部分归结为一句话:可支持。可支持的代码是什么?可支持的代码容易增强,容易修改,容易改正。你离开项目之后,加入某个人要改正你曾经负责代码中的一个bug,你的代码可支持性越好,改正的也就越快。大家伙喜欢你。注释
到现在为止,可能有人一直期望我讲出一直没有被提到的注释。我故意把它放在最后的。注释是创建可支持代码的最完整部分。你的代码在必要的地方需要说明自己,有注释在那,将来会节省很多时间。什么时候用注释
函数:注释用来描述期望的输入、输出,以及函数的功能。复杂的逻辑:用注释给出下面几行代码的容易理解的描述。
声明的变量:指出一个变量的目的。
非直觉方法:当你用非直觉方法解决某个问题时,必须要注释。
什么时候不用注释
如果你总是写注释,那就没有意义了。注释应该是评论,而不是叙述。1.不要声明你要干吗。比如对变量做循环。
2.如果你的代码是冗余的,就不要注释。比如检查一个变量是否等于8。
结论
上述的每一条都应该成为一个习惯。文章的没有一部分都关系密切,组织需要一致,一致需要组织,可读需要一致,可支持需要所有。It’s a vicious ninja star. Use it to tear through your enemies.实在不明白意思。。。
意思我想都明白了,至于翻译。。。汗。再汗。阿富汗。。成吉思汗。。。