网站首页 > 博客文章 正文
腐朽、丑陋的代码会随着时间散发出一定的味道,我们需要从这味道中,寻找启发,寻找解决之道。
注释
C1:不恰当的信息
让注释传达一些本来应该在其他地方更好的保存的信息是错误的,比如修改历史记录:作者、最后修改时间、SPR数等元数据不应该在注释中出现。注释只应该描述相关代码和设计的技术性信息。
C2:废弃的注释
过时、无关或不正确的注释就是废弃的注释。
C3:冗余的注释
如果注释描述的是某种充分自我描述的东西,那么注释就是多余的。
注释应该谈及代码自身没有提及的东西。
C4:糟糕的代码
值得编写的注释,就值得好好写。使用正确的语法和拼写,保持整洁。
C5:注释掉的代码
注释掉的代码纯属厌物。看到注释掉的代码,就删除它。别担心,源代码控制系统还会记得它,如果需要,可以重新签出之前的代码。
环境
E1:需要多少步才能实现的构建
构建代码应该是单步的小操作。
不应该从源代码控制系统中一小点一小点签出代码。
不应该需要一系列神秘的指令或环境依赖脚本来构建单个元素。
你应当能够用单个命令签出系统,并用单个指令构建它。
E2:需要多少步才能做到的测试
你应当能够发出单个指令就可以运行全部单元测试。能够运行全部测试是如此基础和重要,应该快速、轻易和直截了当地做到。
函数
F1:过多的函数
函数的参数量应该少。没参数最好。
F2:输出参数
输出参数违反直觉。读者期望参数用于输入而非输出。如果函数非要修改什么东西的状态不可,就修改它所在的对象的状态即可。
F3 标识参数
布尔值参数大声宣告函数做了不止一件事情。他们令人迷惑,应该消灭掉。
F4:死函数
永不被调用的方法应该丢弃。保留死代码纯属浪费。别害怕删除函数。记住源代码控制系统还会记得它。
一般性问题
G1:一个源文件存在多种语言
理想的源文件包括且只包括一种语言。现实上,我们可能会不得不使用多于一种语言,但应该尽力减少源文件中额外语言的数量和范围。
G2:明显的行为未被实现
遵循最小惊异原则,函数或类应该实现其他程序员有理由期待的行为。
G3:不正确的边界行为
没有什么可以替代谨小慎微。别依赖直觉。追索每种边界条件,并编写测试。
G4:忽略安全
忽略安全相当危险,手动控制安全非常有必要。
G5:重复
不要重复自己,一次都不要,尽可能找出重复并消除重复。
G6:在错误的抽象层级上的代码
创建分离较高层级代码一般性概念与较低层级细节概念的抽象模型,这很重要,有时,我们创建抽象类来容纳较高层级概念,创建派生类来容纳较低层次概念。这样做时,要确保分离完整。所有较低层级概念放在派生类中,所有较高层级概念放在基类中。
G7:基类依赖于派生类
将概念分解到基类和派生类的最普遍原因是较高层级基类概念可以不依赖于较低层级派生类概念。
G8:信息过多
设计良好的模块有着非常小的接口,可以让你事倍功半。
良好的整洁的代码 不会散发腐朽的味道,如有过,就要警惕
猜你喜欢
- 2024-11-10 代码整洁之道P52-P62(代码整洁之道pdf下载)
- 2024-11-10 Python代码整洁之道01--整洁代码,真的有那么重要吗?
- 2024-11-10 常说的代码整洁到底是什么?(代码整洁之道适合什么人读)
- 2024-11-10 写出一手骚代码,学习下《代码整洁之道》
- 2024-11-10 Python代码整洁之道01--整洁代码(代码整洁之道pdf百度云)
- 2024-11-10 《代码整洁之道》:5大基本要点(代码整洁之道总结)
- 2024-11-10 《代码整洁之道》阅读整理,附脑图
- 2024-11-10 优秀程序员需要掌握的代码整洁之道
- 2024-11-10 编写整洁代码的十大心得,你 Get 了吗?
你 发表评论:
欢迎- 08-06nginx 反向代理
- 08-06跨表插入连续的日期,sheetsname函数#excel技巧
- 08-06初中生也能学的编程,不走弯路,先用后学
- 08-06find命令的“七种武器”:远不止-name和-type
- 08-06恶意代码常见的编程方式
- 08-06kali2021ping 外网不通
- 08-06因为一个函数strtok踩坑,我被老工程师无情嘲笑了
- 08-06hadoop集群搭建详细方法
- 52℃nginx 反向代理
- 最近发表
- 标签列表
-
- ifneq (61)
- 字符串长度在线 (61)
- googlecloud (64)
- powershellfor (73)
- messagesource (71)
- plsql64位 (73)
- vueproxytable (64)
- npminstallsave (63)
- #NAME? (61)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- nacos启动失败 (64)
- ssh-add (70)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- qcombobox样式表 (68)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)