@@ -116,7 +116,7 @@ update: 经验表明,TDD未必是必要的,但是单元测试是很必要的
116116对于什么是好代码,什么是坏代码我现在还没有太多经验,但是最近工作接手别人的代码感觉困难重重,还是too naive啊。每个人实力不同,风格不同,一起协作的时候确实会遇到很多问题和分歧。感觉code review啥的还是很有必要的,可以让菜鸟学习下老鸟的经验,也可以让老鸟指导下菜鸟的失误,同时避免过于个人化的糟糕风格(比如让人想立马离职的高达成百上千行的复杂函数,比如上来一堆不知道干啥的幻数,比如上来就 `form shit import *` 导致俺的编辑工具找不到定义,比如整个项目没有一行测试代码,比如不知道用logger,全用print+眼珠子瞅,一个bug找半天,比如没有pep8检测导致你的环境打开别人的代码彪了一堆警告......)。说好的规范呢,说好的设计模式呢,说好的高内聚低耦合呢?说好的KISS原则呢?说好的DYR原则呢?其实俺只是想多活几年,至少不要到三十岁头发掉光。啥设计模式的可以不用,能干活的代码就行,牢记几个原则,没事的时候对复杂的东西重构下,代码不能自解释的搞搞文档,不被队友坑同时不坑队友,俺就心满意足了 ,遇到坑队友就等着加班和折寿吧:(。最后还是列举一下常用原则、思想和注意事项吧(最好import this看看python之禅,很多思想是通用的):
117117
118118* KISS原则,Keep It Simple, Stupid。能简单的绝对不要复杂,不要炫耀代码技巧,简单可读最重要,后人会感谢你的,控制复杂度。
119- * DRY原则。就算咱不懂设计模式,只要代码复杂重复了就及时抽取出来,至少不会碰到大问题。当然不要矫枉过正,过度追求设计和通用可能导致难以维护和理解。重复代码一旦接口变动的时候就是灾难,要修改很多地方。
119+ * DRY原则。就算咱不懂设计模式,只要代码复杂重复了就及时抽取出来,至少不会碰到大问题。当然不要矫枉过正,过度追求设计和通用可能导致难以维护和理解。重复代码一旦接口变动的时候就是灾难,要修改很多地方,一定要十分警惕代码重复 。
120120* YAGNI(You Aren't Gonna Need It),不要猜测性编码,不用的及时删除,估计以后也不太可能会用到,冗余的无用代码会给维护者带来很多混淆和麻烦。
121121* 快速失败,灵活使用断言。契约式编程(先验条件和后置条件),越早失败,越容易排查错误。
122122* 增量式编程。及时清理技术债务,防止『破窗』。及时重构不合理代码,及时进行测试。
@@ -437,7 +437,7 @@ Docstring应该包括什么?接口易用性
437437注释分5类(来自《代码大全》),但是仅『总结性注释』和『意图注释』可以接受
438438代码的重复:用不同的词语重申代码的内容
439439代码的解释: 解释复杂的有效的和灵敏的代码,通常有用但是尽可能修改代码使得代码本身更清晰
440- 代码中标记: TODO 标记等,经验表明,往往写了 TODO 后来就一直成了 TODO,所以最好提交代码前把要做的 TODO 做完,TODO 仅仅作为一次代码合并之前的提示。
440+ 代码中标记: TODO 标记等,经验表明,往往写了 TODO 后来就一直成了 TODO,所以最好提交代码前把要做的 TODO 做完,TODO 仅仅作为一次代码合并之前的提示。TODO 注释记得加上姓名,日期和提示,方便 grep。
441441代码中的总结:简化代码为一句或两句话,这种注释比重复代码更有价值,能帮助人快速理解代码
442442代码意图的描述:解释代码的目的。意图注释在问题一级上,而不是在答案一级,是一句利用答案的总结描述。『理解最初的编程意图是最难的问题』
443443
@@ -517,6 +517,7 @@ Code Review
517517最后,很多东西我也在摸索,上面的玩意你就当小白的踩坑记录,随着理解和经验的加深我会不定期更新本篇内容。另外我发现网上大部分是教程性的东西,对于python相关的工程性的东西很少,我很疑惑难道大部分公司的python项目都写得相当规范?没人吐槽?反正我是踩过坑,希望看到过本章的人能把python代码质量重视起来。
518518
519519如何定位和修复 bug:复现和定位。定位需要找到 bug 出现时候的上下文信息,可以用 log,sentry 等查看。确认之后通过走查代码、断点调试等方式寻找代码逻辑错误。
520+
520521- 走查代码
521522- 看日志,各种日志(logging, nginx),看 sentry 异常信息
522523- 问同事,让同事帮忙 review 审查代码。有时候人有思维定势,你自己看不出来的别人可能一眼就看出来了。
0 commit comments