前言
本文不会详细去讲解代码规范等东西, 只是浅谈对高质量代码的一些细节理解和注意事项总结
«剑指Offer»第三章要点总结
正文
一. 什么叫高质量代码
1.1 规范性
从三个方面考虑: 书写, 布局, 命名
1.1-1 清晰的书写
- 能够辨识, 一般而言, 面试代码都比较短, 所以一般时间充足
1.1-2 清晰的布局
- 代码缩进, 空格等, 了解一下手打格式
1.1-3 合理的命名
- 命名需要有意义, 不要嫌函数名太长, 最好做到一眼能够猜出大致用途
- 比如命名:
BinaryTreeNode
而不要用Node
, 相比较之下, 前者更明确 - 用完整的英文单词组合命名, 除了公认的缩写
1.2 完整性
也从三个方面考虑: 基本功能, 边界值, 错误处理
1.2-1 基本功能
- 基本功能是首要考虑的, 基本功能出错是硬伤, hh
1.2-2 边界值
- 边界值一般是较为看重的细节地方, 有一句话叫面向测试编程, 虽然不推荐, 但是在动手之前, 想好测试用例, 有助于书写出更鲁棒性的代码
- 比如: int等类型的范围限制, 输入数据的正负, 0等
1.2-3 错误处理
- 主要指输入错误, 错误的处理方式有三种, 其优缺点参见下表
优点 | 缺点 | |
---|---|---|
返回值 | 和系统API一致 | 不能方便的使用计算结果 |
全局变量 | 能够方便的使用计算结果 | 用户可能会忘记检查全局变量 |
异常 | 可以为不同的出错原因定义不同的异常类型, 逻辑清晰明了 | 有些语言不支持异常, 跑出异常对性能有负面影响 |
- 三种错误处理方式详解
- 返回值: 即通过函数返回值来识别是否出错和出错类型, 如: Win32 API
- 全局变量: 即设置一个全局变量, 用于标识是否出错, 函数正常返回计算结果
- 异常: try…catch…, 但是有些语言不支持