代码整洁
提高代码质量,为后期维护、升级奠定基础
第一章
-
编写可读的代码
-
关注细节
-
变量名命名
-
重视代码整洁
-
学会总结,回看之前写过的代码,多写代码
why bad code
时间不够、思路不对、难实现
稍后等于永不
LeBlancBjarne Stoystrup C++语言发明者
代码逻辑直截了当
减少依赖关系,便于维护
依据某种分层战略完善错误处理代码
性能调至最优简单代码规则 Ron Jeffries
- 能通过所有测试
- 没有重复代码
- 提现系统中的全部设计理念
- 包括尽量少的实体,比如类、方法、函数等
总结 减少重复代码、提高表达力,提早构建简单抽象。
修改变量名、拆分过长的函数、消除重复代码
第二章
- 根据具体用处命名
- 避免使用有歧义的变量名
- 小心使用差别较小的名称
- 明确数据类型或者说是什么用处
- 命名尽量可读可搜索
- 把类和函数写的尽量小
- 用名词/名称短语来命名类
- 方法名应该是动词/动词短语
- 尽量用通用的一些名称来表示
- 相同单词用于相同的目的
- 使用计算机专业术语
- 添加变量名所在的有意义的语境
- 不管重构还是自己写都需要重视命名,增加代码可读性
第三章 函数
- 函数需要短小
- 判断函数能否在拆出一个函数来
- 自顶向下读代码 向下规则
- 函数名称尽量具体、有描述性
- 函数参数尽可能少
- 函数参数较多时,应封装成类
- 全局变量和局部变量要区分好
- 函数只做一件事
- 抽离异常处理语句
- 消除重复
- 结构化编程 每一个代码块有一个入口和一个出口 只有一个return 循环没有continue 和break 不能有goto
- 可以先写出整体逻辑代码,不断优化
- 程序就像是故事
第四章 注释
- 注释是你代码编写的失败
- 注释很少去维护
- 尽量少写注释
- 源头还会代码太糟糕
- 还是有一些必要的注释(法律信息、信息的注释、对意图的解释、出现某些特定的情况或者问题的注释)
- TODO 以后要写的东西,现在还没实现
- 保证注释的正确性
- 删除没有意义的注释
- 日志式注释应做相应的删除
- 不要的代码直接删掉
- 注释信息太多
- 注释和相关代码联系紧密
- 代码重构和注释重构
第五章 格式
- 保持良好的代码格式,尽量使用相同的格式规则
- 格式会影响之后代码维护者
- 大致的结构和框架要搭好
- 空格和空行增加代码阅读性
- 关联紧密的代码应该相互靠近
- 不要把关系密切的概念放在不同的文件中
- 变量声明靠近使用位置(函数顶部)
- 实体变量在类的顶部声明
- 空格可以强调字符或运算符
第6章 对象和数据结构
- 对象内部的结构要隐藏不应该暴露出去
- 以抽象的形态表述数据
- 过程式代码和面向对象
- 得墨忒耳定律
每个单元对于其他的单元只能拥有有限的知识:只是与当前单元紧密联系的单元;
每个单元只能和它的朋友交谈:不能和陌生单元交谈;
只和自己直接的朋友交谈。 - 避免混杂的数据结构或对象
- Active Record 类似flask-sqlalchemy
第7章 错误处理
- 必要时需要写异常处理代码
- 针对特定语句可能抛出异常的语句增加异常,结构清楚
- 避免传递null值
- 错误处理隔离看待,独立于主要逻辑之外,增加代码的可维护性
第8章 边界
…
第9章 单元测试
- 编写测试代码,用于测试
- tdd测试驱动开发,单元测试,编写生产代码之前要编写测试代码
- 编写整洁的测试代码,按照生产代码规范来编写
- 维护代码也是一个大工程,如果在编写测试代码是没有规范化。
- 测试可读性,要求简洁明了
- 用于测试而非生产环境
- 测试代码可以对代码的限制宽松一点,测试都需要断言断言断言
- 功能代码分解测试,越小越好
- 测试规则
- 快速
- 独立
- 可重复
- 自足验证
- 及时
- 提高测试代码的重视程度 非常重要
第10章 类
- 类的封装,包括变量和函数的私有性
- 创建短小的类
- 只有一条修改的理由,只做一件事
- 类的内部实现内聚,变量被每个类中的方法所使用(尽量)
- 增加抽象类以满足多变量
- 结构要清晰,关系要理顺
- 调整代码之后还是需要做进一步的验证、测试