## 什么样的代码才是优秀的代码 > 许多去 Google 参观的人,用完洗手间后,都会惊奇而略带羞涩地问:“你们马桶前面的门上,贴着的 Python 编程规范,是用来搞笑的吗?” > > 这事儿还真不是搞笑,Google 对编码规范的要求极其严格。今天,我们就来聊聊编程规范这件事儿。 ### 1.**代码是写给谁的**? 随着科技与互联网的进步,今天得我们可以很容易从事计算机相关工作,基本上只要简单懂一些计算机编程相关的内容,就可以写出让计算机理解和执行的代码,但是处在当下的我们,写出的代码虽然是需要计算机执行.但是更多的情况下,我们编写的代码是给人类理解和阅读的. **代码更多是写给人看,而不是仅仅给机器跑而已** **代码千万条,整洁第一条,代码不规范,同事两行泪** ### 2.代码不规范导致的问题 - 刚找到一份新工作,想要快速融入,结果看看开发的项目代码一团如麻. - 当你的上司看到你写的代码时,你解释了半天他依然一头雾水 - 作为一个老司机,本想在公司大干一场,结果天天在改代码找bug - 作为团队中的一员,你们每个人的代码风格迥异. - 在电脑前工作的你,码字速度越来越快,代码越写越多,结果最终你像码农一样垒代码.却跑题了.. - 无数个日夜疯狂敲代码的你,在提交代码后终于长舒一口气,却发现测试没过... - 开发到一半的项目,在休假结束后,本想快速继续开发,却发现有点看不懂了.. - 总是被催促着,着急赶工,代码写的乱七八糟,特性越加越多,崩溃的几率越来越大,最后代码无法管理,产品下线,公司倒闭.. - 着急写出的烂代码居然能够运行,心想着有朝一日能够再回头清理,结果稍后等于永不 - 团队初期开发进展迅速,但是随着时间却慢如蜗牛,代码的每次修改都会影响其它几处代码. - 项目随着开发团队人员的变动和迭代,每一次都会有所改变,却越来越糟糕,最后束手无策. ### 3.代码风格规范的好处 > 任何一个傻瓜都能写出计算机可以理解的代码。唯有写出人类容易理解的代码,才是优秀的程序员。 - 利于团队合作 - 发现潜在的bug - 提高运行效率 - 降低维护成本 - 有助于代码审查 - 有利于代码安全 - 有助于自身的成长 - 令人心情愉悦 ### 4.什么样的代码才是优秀的代码 > 好的代码,就像是好的笑话——无需解释就能让别人明白。如果你的代码能够做到不解自明,在大多数时候,你根本无需为其配备说明文档。 举例: #### 好代码像是一本写作技巧高超的人所写的书 > 1.容易理解 > > 2.分章明确,每一章都有清晰的主旨 #### 而坏的代码像是刚刚学会写字的人所写的书 > 1.各个章节之间纷乱复杂,每一章都没有明确的主旨 > > 2.连篇累牍的重复一句话,而且毫无缘由 > > 3.作者在一开始设定了一些规则,但是在后面的内容中却自己不断的违反这些规则 > > 4.突然间书里出现了一个吸血鬼,而且还能在白天出来吸血。 #### 优秀代码的特点 - 可读性——不只是你,还有你身边与你合作的其他开发者 - 可维护性——让你的代码在修改的时候很简单 - 简洁性——不要让你的代码看上去毫无必要的复杂 - 效率性——尽可能的让你的代码获得最快的运行速度 - 明确性——如果你的代码能够做到不解自明,在大多数时候,你根本无需为其配备说明文档。在为方法和属性命名的时候,做到尽可能的合理。把长的代码进行拆分。不要复制/粘贴代码块。 如果你的同事不能轻松的看懂你写的代码,那么你的代码就不够好。 #### 如何知道我写的代码好不好? ##### 简单的代码质量测试 > 1.找一个从来没读过你的代码的开发者,让他看你的代码,并且让他试着说出每一个模块的作用。 > > 2.如果你经常需要向他进行解释,那么说明你的代码不够好。解释的次数越多,代码的质量就越低。 > > 3.如果你只是静静的坐在一边,他无需问你任何问题,那说明你的代码质量很高。 ##### 当你在写代码的时候,一些信号可以证明你写的代码质量不错: - 代码写的很聪明,但是又不会过分的聪明 - 无论在速度上,还是可读性上,你都使用了最佳的算法 - 类、变量和函数都得到了正确的命名,让人看一眼就能理解 - 休息了一个周末之后,你继续写代码,发现自己可以立刻继续之前的工作 - 那些需要重复使用的东西总是可用 - 你所使用的方法都很短,最理想的情况下要少于50行,最多不超过100行而且能够完美的执行单个任务 - 在调用方法的时候,你有着足够的信息,无需在代码堆中苦苦寻找 - 能够很轻松的在此前的代码中进行功能添加和修改 - try/catch块的体量尽可能的小 - 毫不费力的就可以写出单元测试 **当然以上都是经验的总结,其实关于写代码,还是有很多编程规范可以遵循的.也是我们本次课程中的重点内容.** #### 总结:好看+安全+高效