高质量代码

浅谈对高质量代码的一些细节理解和注意事项总结

Posted by 袁平 on August 24, 2018

前言

本文不会详细去讲解代码规范等东西, 只是浅谈对高质量代码的一些细节理解和注意事项总结

«剑指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一致 不能方便的使用计算结果
全局变量 能够方便的使用计算结果 用户可能会忘记检查全局变量
异常 可以为不同的出错原因定义不同的异常类型, 逻辑清晰明了 有些语言不支持异常, 跑出异常对性能有负面影响
  • 三种错误处理方式详解
    1. 返回值: 即通过函数返回值来识别是否出错和出错类型, 如: Win32 API
    2. 全局变量: 即设置一个全局变量, 用于标识是否出错, 函数正常返回计算结果
    3. 异常: try…catch…, 但是有些语言不支持