编程规范

笔者一直觉得自己的编程不够规范,突然想到准备简单学习一下这种规范

1. 命名规范

命名规范有助于提高代码的可读性和理解性。不同的命名风格有助于区分不同类型的变量、函数、类等。

  • 变量和函数命名

    • 驼峰命名法(CamelCase):大多数编程语言都使用驼峰命名法。变量名和函数名从小写字母开始,后续每个单词的首字母大写。
      • 示例:userName, getUserInfo()
    • 下划线命名法(Snake_case):在变量和函数名称中使用下划线来分隔单词。常见于 Python 等语言。
      • 示例:user_name, get_user_info()
    • 大写命名法(UPPER_CASE):常用于常量或枚举的命名,所有字母大写,单词之间用下划线分隔。
      • 示例:MAX_SIZE, PI_VALUE
  • 类名命名

    • 帕斯卡命名法(PascalCase):类名的每个单词首字母大写,没有下划线。
      • 示例:Person, EmployeeInfo
  • 常量命名

    • 常量通常使用大写字母,并且单词之间用下划线分隔。
      • 示例:PI, MAX_LENGTH
  • 命名注意事项

    • 避免使用缩写:除非非常常见(如 URL, HTML),否则避免使用缩写,保证代码的可读性。
    • 有意义的名称:变量名和函数名应清晰表明其用途和功能。
  • 有时候会给函数参数前加上一个下划线,以此来区分是函数参数还是外部全局变量

2. 缩进与格式化

正确的缩进和格式化有助于提高代码的可读性,尤其是当代码变得复杂时。

  • 缩进

    • 空格 vs 制表符(Tab):通常推荐使用空格而不是制表符。一个常见的约定是每级缩进使用 2 或 4 个空格。
    • 一致性:无论使用空格还是制表符,保持整个项目一致性至关重要。
  • 行宽

    • 为了避免代码横向滚动,建议将每行代码的长度限制在 80 到 120 个字符之间。
  • 空格的使用

    • 操作符前后加空格:操作符(如 =, +, -, *)前后应加空格,增加代码的可读性
      int a = 5 + 3;  // 正确
      int a=5+3;      // 错误
      
    • 逗号后加空格:在列表、函数参数等中,逗号后应加一个空格。
      let arr = [1, 2, 3];  // 正确`
      
    • 换行:在表达式比较长时,可以在合适的位置拆分为多行,保证代码不会过长并保持可读性。

3. 注释

注释是帮助开发人员理解代码的重要工具。良好的注释可以减少维护代码的难度。

  • 函数和方法注释:每个函数和方法应该有简短的注释,说明其功能、参数和返回值。
    /**
 * 计算两数之和
 * @param {number} a - 第一个数字
 * @param {number} b - 第二个数字
 * @returns {number} - 两数之和
 */
function add(a, b) {
    return a + b;
}
  • 类注释:类应该有描述其用途和功能的注释。
  • 避免过多注释:如果代码本身足够清晰,尽量避免不必要的注释。代码应该自解释。
  • 注释样式:使用单行注释 (//#) 或多行注释 (/* ... */) 时,要根据项目的代码风格一致地使用。

4. 函数与方法设计

  • 单一职责原则(SRP):每个函数应该只做一件事,函数的功能应该尽量简单和专一。避免一个函数做多个不相关的事情。
  • 函数长度:函数应该保持简短,一般控制在 20 行以内。
  • 参数数量:尽量减少函数的参数数量,通常不超过 3 到 4 个。如果参数太多,可以考虑将它们封装到一个对象中。

5. 代码结构与组织

  • 文件组织:不同的功能应该分配到不同的文件中。每个文件应该具有单一的责任,并且文件命名应清晰表达其内容。
  • 类与函数顺序:类和函数的定义顺序应遵循一定的规则,通常是先定义类,再定义类方法。
  • 模块化:大型项目应该使用模块化设计,将代码拆分为多个独立的模块,每个模块完成一个独立的功能,方便管理和重用。

6. 错误处理

  • 异常处理:使用适当的错误处理机制(如 try/catchtry/except)捕获和处理可能的异常,避免程序崩溃。
  • 返回值和错误码:在没有异常处理机制的语言中,通常会使用返回值或错误码来指示函数执行是否成功。
  • 清晰的错误信息:错误信息应简洁且具有描述性,便于开发人员定位问题。

7. 性能优化

  • 避免不必要的计算:在循环中避免重复计算相同的值,将计算移出循环。
  • 数据结构选择:选择适合的算法和数据结构,以提高程序的效率。
  • 内存管理:对于需要手动管理内存的语言(如 C/C++),要特别注意内存分配和释放,避免内存泄漏。

8. 版本控制与提交规范

  • 提交信息:每次提交都应该有清晰的提交信息,简洁地描述本次提交的内容和目的。
  • 分支管理:合理使用 Git 或其他版本控制工具的分支管理功能,确保开发、测试和生产环境的代码隔离。

9. 安全性

  • 输入验证:对于来自外部(如用户输入、API 请求等)的数据要进行充分的验证和清理,防止 SQL 注入、XSS 攻击等安全问题。
  • 加密与存储:对敏感信息(如密码)进行加密存储,使用安全的加密算法。