Skip to content

代码风格规范

核心原则

代码风格必须保持一致性,使用自动化工具(Biome、gofmt)进行格式化。

允许的做法

缩进和空格

  • 使用 2 空格缩进(TypeScript/JavaScript)
  • 使用 Tab 缩进(Go 语言,遵循 gofmt)
  • 使用 一致的空格规则
typescript
// ✅ 正确 - TypeScript
function calculateTotal(items: Product[]) {
  return items.reduce((sum, item) => {
    return sum + item.price;
  }, 0);
}
go
// ✅ 正确 - Go
func CalculateTotal(items []Product) float64 {
	total := 0.0
	for _, item := range items {
		total += item.Price
	}
	return total
}

行宽限制

  • 遵循 120 字符行宽限制(TypeScript/Go)
  • 使用 换行保持可读性
typescript
// ✅ 正确 - TypeScript
const user = await getUserById(userId, { includeProfile: true, includeOrders: false });

// 超过 120 字符时换行
const result = await processComplexOperation(
  param1,
  param2,
  { option1: true, option2: false, option3: 'value' }
);
go
// ✅ 正确 - Go
user, err := userService.GetUserByID(userID, &GetUserOptions{IncludeProfile: true})

注释规范

  • 使用 注释说明"为什么",而非"是什么"
  • 使用 JSDoc/GoDoc 格式编写函数文档
  • 使用 单行注释 //避免 多行注释 /* */
typescript
// ✅ 正确 - 说明原因
// 使用 setTimeout 避免阻塞主线程
setTimeout(() => {
  processHeavyTask();
}, 0);

/**
 * 根据 ID 获取用户信息
 * @param id - 用户 ID
 * @returns 用户对象,不存在时返回 null
 */
async function getUserById(id: number): Promise<User | null> {
  // ...
}
go
// ✅ 正确 - Go 文档注释
// GetUserByID 根据 ID 获取用户信息
// 如果用户不存在,返回 nil
func GetUserByID(id int64) (*User, error) {
	// ...
}

空行使用

  • 使用 空行分隔逻辑块
  • 使用 空行分隔函数定义
  • 避免 过多的空行(连续空行不超过 1 行)
typescript
// ✅ 正确
function processOrder(order: Order) {
  // 验证订单
  if (!validateOrder(order)) {
    throw new Error('Invalid order');
  }

  // 计算金额
  const total = calculateTotal(order.items);

  // 保存订单
  return saveOrder({ ...order, total });
}

导入语句

  • 使用 分组导入(标准库、第三方、本地)
  • 使用 字母顺序排序
typescript
// ✅ 正确 - TypeScript
import { useState, useEffect } from 'react';  // React
import axios from 'axios';                    // 第三方库

import { UserService } from '@/services';     // 本地模块
import type { User } from '@/types';
go
// ✅ 正确 - Go
import (
	"context"
	"fmt"
	"time"

	"github.com/labstack/echo/v4"
	"gorm.io/gorm"

	"your-project/models"
	"your-project/services"
)

禁止的做法

  • 禁止 手动格式化代码(使用工具)
  • 禁止 行尾空格
  • 禁止 文件末尾缺少换行符
  • 避免 嵌套层级超过 4 层
typescript
// ❌ 错误 - 嵌套过深
if (user) {
  if (user.isActive) {
    if (user.hasPermission) {
      if (user.canEdit) {
        // 操作
      }
    }
  }
}

// ✅ 正确 - 提前返回
if (!user || !user.isActive) return;
if (!user.hasPermission || !user.canEdit) return;
// 操作

工具配置

TypeScript/JavaScript - Biome

json
{
  "formatter": {
    "indentStyle": "space",
    "indentWidth": 2,
    "lineWidth": 100
  }
}

Go - gofmt

bash
# 自动格式化
gofmt -w .

特殊规则

字符串

  • 使用 单引号(TypeScript)
  • 使用 模板字符串进行拼接
typescript
// ✅ 正确
const message = 'Hello';
const greeting = `Welcome, ${userName}!`;

分号

  • 使用 分号结尾(TypeScript)
  • 禁止 分号(Go 语言自动插入)
typescript
// ✅ 正确 - TypeScript
const name = 'Alice';
const age = 25;

相关文档