JavaScript 编码风格

174 阅读3分钟

JavaScript 编码风格

良好的编码风格可以让代码更易于阅读、理解和维护。


1. 格式化

缩进

  • 使用 2 个空格进行缩进,避免使用制表符。

    function sum(a, b) {
      return a + b;
    }
    

行长度

  • 将每行代码限制在 80-100 个字符以内,尽量保持简洁。
    • 如果一行超过限制,可以通过分行使代码更具可读性。

分号

  • 每个语句结束时始终添加分号。

    let user = 'John';
    console.log(user);
    

大括号

  • 将大括号的起始位置放在同一行。

    if (isTrue) {
      console.log('True');
    }
    

空格

  • 运算符两侧保留空格:

    let sum = a + b;
    
  • 函数调用与括号之间不留空格:

    console.log('Hello');
    

2. 命名

变量和常量

  • 变量使用驼峰命名法:let userName

  • 常量使用全大写下划线命名法:const MAX_USERS = 100

  • 尽量使用描述性的变量名,避免单字母变量(除非在循环中)。

    let userAge = 25; // 好
    let a = 25;      // 不推荐
    

函数

  • 函数名应使用动词开头,描述其功能:

    function fetchData() {
      //...
    }
    

3. 引号

  • 字符串使用单引号 '’'。如果字符串中包含单引号,则使用双引号 “”“。

    let greeting = 'Hello';
    let message = "It's a sunny day";
    
  • 对于包含变量的字符串,优先使用模板字符串:

    let name = 'John';
    console.log(`Hello, ${name}`);
    

4. 函数

箭头函数

  • 简单逻辑使用箭头函数:

    const add = (a, b) => a + b;
    
  • 对于需要多行的复杂逻辑,使用大括号和 return:

    const multiply = (a, b) => {
      let result = a * b;
      return result;
    };
    

默认参数

  • 为函数参数设置默认值:

    function greet(name = 'Guest') {
      console.log(`Hello, ${name}`);
    }
    

5. 对象与数组

对象属性

  • 使用简写形式定义对象属性:

    let user = 'John';
    let age = 30;
    let person = { user, age };
    

解构赋值

  • 使用解构提高代码的简洁性:

    let { user, age } = person;
    let [first, second] = [1, 2];
    

扩展运算符

  • 使用扩展语法复制或扩展对象:

    let extended = { ...person, city: 'New York' };
    
  • 对数组进行合并或克隆:

    let numbers = [1, 2, 3];
    let moreNumbers = [...numbers, 4, 5];
    

6. 条件语句

三元运算符

  • 简短条件使用三元运算符:

    let status = isActive ? 'Active' : 'Inactive';
    

提前返回

  • 使用提前返回减少嵌套:

    function check(user) {
      if (!user) return;
      console.log(user.name);
    }
    

7. 循环

  • 对于可迭代对象,使用 for..of

    for (let value of array) {
      console.log(value);
    }
    
  • 对于对象,使用 Object.entries()

    for (let [key, value] of Object.entries(obj)) {
      console.log(key, value);
    }
    
  • 优先使用高阶函数,如 mapfilterreduce

    let numbers = [1, 2, 3];
    let doubled = numbers.map(num => num * 2);
    

8. 注释

单行注释

  • 将注释放在代码上方:

    // 获取用户数据
    let user = fetchUser();
    

多行注释

  • 对于复杂逻辑,使用多行注释:

    /**
     * 从服务器获取用户数据。
     * @param {number} id - 用户 ID
     * @returns {Object}
     */
    function fetchUser(id) {
      //...
    }
    
  • 避免无意义的注释:

    // 不推荐
    let a = 5; // 定义变量 a
    

9. 错误处理

Try-Catch

  • 优雅地处理错误:

    try {
      let data = fetchData();
    } catch (error) {
      console.error('Error fetching data:', error);
    }
    

抛出错误

  • 抛出具体的错误信息:

    if (!user) {
      throw new Error('User not found');
    }
    
  • 避免过度依赖错误捕获,优先检查条件:

    if (Array.isArray(data)) {
      process(data);
    } else {
      console.error('Invalid data format');
    }
    

10. 工具

代码检查与格式化

  • 使用 ESLint 强制执行编码规范。
  • 使用 Prettier 保持代码格式一致。

版本控制

  • 提交清晰、可读的代码,并撰写有意义的提交信息。
  • 在代码合并前进行代码审查,确保代码质量。

遵循这些最佳实践将帮助您编写干净、可维护且高质量的 JavaScript 代码。