引言:为什么代码规范如此重要?

在软件开发的世界里,代码不仅仅是给机器执行的指令,更是程序员之间沟通的桥梁。想象一下,当你接手一个遗留项目,看到满屏的abtemp变量,或者面对没有一行注释的复杂算法,那种挫败感是每个开发者都经历过的。代码规范习惯的养成,是每个程序员从初级走向高级的必经之路。

良好的代码规范不仅能提高代码的可读性和可维护性,还能减少bug的产生,提升团队协作效率。更重要的是,它体现了程序员的专业素养和对工作的尊重。本文将从命名规范、注释技巧、格式化习惯等多个维度,深入探讨如何养成优秀的代码规范习惯,并解析常见的误区。

一、命名规范:代码的门面

1.1 命名的基本原则

命名是代码规范中最基础也最重要的一环。好的命名应该像自然语言一样流畅,让人一眼就能理解其含义。

核心原则:

  • 见名知意:变量名、函数名、类名都应该清晰地表达其用途
  • 一致性:在整个项目中保持相同的命名风格
  • 适当长度:既不能太短(如ab),也不能太长(如thisIsAVeryLongVariableNameThatDescribesEverything

1.2 不同语言的命名约定

Python 示例:蛇形命名法

# 好的命名
def calculate_user_age_from_birthdate(birth_date):
    """从出生日期计算用户年龄"""
    current_date = datetime.now()
    age = current_date.year - birth_date.year
    # 考虑生日是否已过
    if (current_date.month, current_date.day) < (birth_date.month, birth_date.day):
        age -= 1
    return age

# 差的命名
def calc(bd):
    cd = datetime.now()
    a = cd.y - bd.y
    if (cd.m, cd.d) < (bd.m, bd.d):
        a -= 1
    return a

Java 示例:驼峰命名法

// 好的命名
public class UserService {
    private UserRepository userRepository;
    
    public User findActiveUserByEmail(String emailAddress) {
        return userRepository.findByEmailAndStatus(emailAddress, UserStatus.ACTIVE);
    }
}

// 差的命名
public class USR {
    private UserRepository ur;
    
    public User findUser(String email) {
        return ur.findByEmail(email);
    }
}

JavaScript 示例:驼峰命名法

// 好的命名
function validateUserInput(username, password) {
    const minLength = 8;
    const hasUpperCase = /[A-Z]/.test(password);
    const hasLowerCase = /[a-z]/.test(password);
    const hasNumbers = /\d/.test(password);
    
    return username.length > 0 && 
           password.length >= minLength && 
           hasUpperCase && 
           hasLowerCase && 
           hasNumbers;
}

// 差的命名
function val(u, p) {
    const m = 8;
    const u1 = /[A-Z]/.test(p);
    const u2 = /[a-z]/.test(p);
    const u3 = /\d/.test(p);
    return u.length > 0 && p.length >= m && u1 && u2 && u3;
}

1.3 常见命名误区

误区1:过度缩写

# ❌ 错误示例
def calc_tot_amt(items):
    tot = 0
    for it in items:
        tot += it.prc * it.qty
    return tot

# ✅ 正确示例
def calculate_total_amount(items):
    total_amount = 0
    for item in items:
        total_amount += item.price * item.quantity
    return total_amount

误区2:使用模糊的数字编号

// ❌ 错误示例
const data1 = getUserInfo();
const data2 = getOrders();
const data3 = process(data1, data2);

// ✅ 正确示例
const userInfo = getUserInfo();
const userOrders = getOrders();
const processedResult = process(userInfo, userOrders);

误区3:混淆命名风格

// ❌ 错误示例 - 混合使用下划线和驼峰
public class user_profile {
    private String user_name;
    private int userAge;
    
    public void get_user_info() { ... }
}

// ✅ 正确示例 - 统一使用驼峰
public class UserProfile {
    private String userName;
    private int userAge;
    
    public void getUserInfo() { ... }
}

二、注释规范:代码的文档

2.1 注释的核心价值

注释不是代码的”补丁”,而是代码意图的补充说明。好的注释应该解释”为什么”(Why),而不是”是什么”(What)。

2.2 不同类型的注释

2.2.1 函数/方法注释

def calculate_discount(price, discount_rate, customer_type):
    """
    计算商品折扣后的最终价格
    
    Args:
        price (float): 商品原价
        discount_rate (float): 折扣率,0.0-1.0之间
        customer_type (str): 客户类型,可选值:'regular', 'vip', 'svip'
    
    Returns:
        float: 折扣后价格,保留两位小数
    
    Raises:
        ValueError: 当折扣率不在0-1之间或客户类型无效时
    
    Examples:
        >>> calculate_discount(100, 0.1, 'vip')
        90.0
        >>> calculate_discount(100, 0.2, 'svip')
        80.0
    """
    if not 0 <= discount_rate <= 1:
        raise ValueError("折扣率必须在0到1之间")
    
    # VIP客户享受额外折扣
    if customer_type == 'vip':
        discount_rate += 0.05
    elif customer_type == 'svip':
        discount_rate += 0.1
    
    final_price = price * (1 - discount_rate)
    return round(final_price, 2)

2.2.2 复杂逻辑注释

/**
 * 使用二分查找算法在有序数组中查找目标值
 * 
 * 为什么使用二分查找而不是线性查找?
 * - 时间复杂度从O(n)优化到O(log n)
 * - 适用于大数据量场景(>1000条记录)
 * - 前提:数组必须是有序的
 * 
 * @param {number[]} sortedArray - 已排序的数字数组
 * @param {number} target - 要查找的目标值
 * @returns {number} 目标值的索引,未找到返回-1
 */
function binarySearch(sortedArray, target) {
    let left = 0;
    let right = sortedArray.length - 1;
    
    // 当左边界小于等于右边界时继续查找
    while (left <= right) {
        // 计算中间位置,防止整数溢出
        const mid = Math.floor(left + (right - left) / 2);
        
        if (sortedArray[mid] === target) {
            return mid;
        } else if (sortedArray[mid] < target) {
            left = mid + 1;
        } else {
            right = mid - 1;
        }
    }
    
    return -1;
}

2.2.3 临时注释(TODO/FIXME)

# TODO: 优化数据库查询性能,当前版本在数据量超过10万条时响应慢
# FIXME: 处理时区转换问题,用户反馈在某些时区下时间显示不正确
def get_user_activity_log(user_id, start_date, end_date):
    # 临时解决方案:先查询再过滤,后续需要优化为数据库层面过滤
    logs = db.query("SELECT * FROM activity_logs WHERE user_id = ?", user_id)
    return [log for log in logs if start_date <= log.timestamp <= end_date]

2.3 常见注释误区

误区1:注释代码

# ❌ 错误示例:注释掉的代码
# def old_function():
#     print("This is old code")
#     # some_var = 10
#     # if some_var > 5:
#     #     do_something()

# ✅ 正确做法:使用版本控制系统,删除无用代码

误区2:重复代码内容

// ❌ 错误示例:重复代码内容的注释
// 获取用户信息
function getUserInfo() {
    // 获取用户信息
    const info = fetchUserInfo();
    // 返回用户信息
    return info;
}

// ✅ 正确示例:解释为什么
// 获取用户信息,包含缓存检查
// 为什么需要缓存?减少数据库查询,提升响应速度
function getUserInfo() {
    const cacheKey = `user_info_${userId}`;
    const cached = cache.get(cacheKey);
    if (cached) return cached;
    
    const info = fetchUserInfo();
    cache.set(cacheKey, info, 300); // 缓存5分钟
    return info;
}

误区3:过时的注释

// ❌ 错误示例:注释与代码不一致
/**
 * 计算用户折扣,VIP用户8折
 */
public double calculateDiscount(User user, double price) {
    // 实际代码:VIP用户7折,注释未更新
    if (user.isVip()) {
        return price * 0.7;
    }
    return price;
}

// ✅ 正确做法:保持注释与代码同步更新

三、代码格式化:视觉上的舒适

3.1 缩进与空格

Python 示例

# ✅ 正确的缩进(4个空格)
def process_order(items, customer):
    total = 0
    for item in items:
        if item.is_valid():
            total += item.price * item.quantity
    
    if total > 1000:
        apply_vip_discount(customer)
    
    return total

# ❌ 错误的缩进(混合空格和制表符)
def process_order(items, customer):
	total = 0
	for item in items:
	    if item.is_valid():
	        total += item.price * item.quantity
	
	if total > 1000:
	    apply_vip_discount(customer)
	
	return total

JavaScript 示例

// ✅ 正确的格式化
function validateForm(formData) {
    const errors = [];
    
    // 验证用户名
    if (!formData.username || formData.username.length < 3) {
        errors.push('用户名至少需要3个字符');
    }
    
    // 验证邮箱
    const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
    if (!emailRegex.test(formData.email)) {
        errors.push('邮箱格式不正确');
    }
    
    return errors;
}

// ❌ 错误的格式化(缺少空格和换行)
function validateForm(formData){const errors=[];if(!formData.username||formData.username.length<3){errors.push('用户名至少需要3个字符');}return errors;}

3.2 行长度限制

# ✅ 好的做法:拆分长行
def create_user(username, email, password, confirm_password, 
                phone_number, address, birth_date):
    # 处理用户创建逻辑
    pass

# ❌ 不好的做法:单行过长
def create_user(username, email, password, confirm_password, phone_number, address, birth_date, country, city, zip_code, emergency_contact):
    pass

3.3 空行的使用

# ✅ 合理使用空行分组
def process_payment(order):
    # 1. 验证订单
    validate_order(order)
    
    # 2. 计算金额
    subtotal = calculate_subtotal(order.items)
    tax = calculate_tax(subtotal)
    total = subtotal + tax
    
    # 3. 处理支付
    payment_result = process_payment_gateway(total)
    
    # 4. 更新状态
    if payment_result.success:
        update_order_status(order, 'paid')
    
    return payment_result

# ❌ 没有空行,难以阅读
def process_payment(order):
    validate_order(order)
    subtotal = calculate_subtotal(order.items)
    tax = calculate_tax(subtotal)
    total = subtotal + tax
    payment_result = process_payment_gateway(total)
    if payment_result.success:
        update_order_status(order, 'paid')
    return payment_result

四、函数与类的设计规范

4.1 函数设计原则

单一职责原则

# ❌ 错误:一个函数做太多事情
def process_user_registration(username, email, password):
    # 验证输入
    if not username or not email or not password:
        return False
    
    # 检查邮箱格式
    if '@' not in email:
        return False
    
    # 创建用户
    user = User(username, email, password)
    
    # 发送欢迎邮件
    send_welcome_email(email)
    
    # 记录日志
    log.info(f"User {username} registered")
    
    # 更新统计
    update_registration_stats()
    
    return True

# ✅ 正确:拆分为多个单一职责的函数
def validate_registration_input(username, email, password):
    """验证注册输入"""
    if not all([username, email, password]):
        return False
    if '@' not in email:
        return False
    return True

def create_user(username, email, password):
    """创建用户"""
    return User(username, email, password)

def send_welcome_email(email):
    """发送欢迎邮件"""
    # 邮件发送逻辑
    pass

def log_registration(username):
    """记录注册日志"""
    log.info(f"User {username} registered")

def process_user_registration(username, email, password):
    """处理用户注册流程"""
    if not validate_registration_input(username, email, password):
        return False
    
    user = create_user(username, email, password)
    send_welcome_email(email)
    log_registration(username)
    update_registration_stats()
    
    return True

函数长度控制

# ❌ 过长的函数(50+行)
def calculate_order_total(order):
    # ... 50行以上的复杂计算逻辑 ...
    pass

# ✅ 拆分为小函数
def calculate_subtotal(items):
    """计算小计"""
    return sum(item.price * item.quantity for item in items)

def calculate_tax(subtotal, tax_rate=0.08):
    """计算税费"""
    return subtotal * tax_rate

def calculate_discount(subtotal, customer_type):
    """计算折扣"""
    # 折扣逻辑
    pass

def calculate_order_total(order):
    """计算订单总额"""
    subtotal = calculate_subtotal(order.items)
    tax = calculate_tax(subtotal)
    discount = calculate_discount(subtotal, order.customer_type)
    return subtotal + tax - discount

4.2 类设计规范

类的单一职责

# ❌ 错误:违反单一职责
class User:
    def __init__(self, name, email):
        self.name = name
        self.email = email
    
    def save_to_database(self):
        # 保存到数据库
        pass
    
    def send_email(self, message):
        # 发送邮件
        pass
    
    def generate_report(self):
        # 生成报表
        pass

# ✅ 正确:职责分离
class User:
    def __init__(self, name, email):
        self.name = name
        self.email = email

class UserRepository:
    def save(self, user):
        # 保存到数据库
        pass

class EmailService:
    def send_to_user(self, user, message):
        # 发送邮件
        pass

class ReportGenerator:
    def generate_user_report(self, user):
        # 生成报表
        pass

构造函数规范

# ✅ 好的构造函数
class Order:
    def __init__(self, order_id, customer_id, items, created_at=None):
        """
        初始化订单
        
        Args:
            order_id (str): 订单ID
            customer_id (str): 客户ID
            items (list): 订单项列表
            created_at (datetime, optional): 创建时间. Defaults to None.
        """
        self.order_id = order_id
        self.customer_id = customer_id
        self.items = items
        self.created_at = created_at or datetime.now()
        self.status = 'pending'
    
    def __repr__(self):
        return f"Order(id={self.order_id}, items={len(self.items)}, status={self.status})"

五、版本控制与协作规范

5.1 Git提交信息规范

好的提交信息示例

# ✅ 清晰的提交信息
git commit -m "feat: 添加用户注册功能"
git commit -m "fix: 修复订单计算精度问题"
git commit -m "refactor: 重构支付模块,提升可扩展性"
git commit -m "docs: 更新API文档,添加错误码说明"

# ✅ 详细的提交信息(多行)
git commit -m "feat: 实现用户头像上传功能

- 添加文件上传接口
- 支持JPG/PNG格式,最大5MB
- 集成阿里云OSS存储
- 添加上传进度反馈

相关issue: #123
需要后续优化:添加图片压缩功能"

不好的提交信息

# ❌ 模糊的提交信息
git commit -m "fix bug"
git commit -m "update"
git commit -m "修改了一些东西"

5.2 代码审查 checklist

## 代码审查 Checklist

### 命名规范
- [ ] 变量名是否见名知意
- [ ] 函数名是否清晰表达功能
- [ ] 类名是否符合单一职责

### 注释质量
- [ ] 复杂逻辑是否有解释
- [ ] 注释是否过时
- [ ] 是否有TODO/FIXME标记

### 代码结构
- [ ] 函数长度是否适中(<30行)
- [ ] 类是否职责单一
- [ ] 代码是否有重复(DRY原则)

### 错误处理
- [ ] 是否有异常处理
- [ ] 错误信息是否清晰
- [ ] 边界条件是否考虑

### 测试覆盖
- [ ] 核心逻辑是否有测试
- [ ] 边界情况是否覆盖
- [ ] 测试命名是否清晰

六、自动化工具与最佳实践

6.1 使用Linter

Python: flake8 + black

# 安装
pip install flake8 black

# 配置 .flake8
[flake8]
max-line-length = 88
extend-ignore = E203, W503

# 自动格式化
black your_code.py

# 检查代码规范
flake8 your_code.py

JavaScript: ESLint + Prettier

// .eslintrc.json
{
  "extends": ["eslint:recommended", "prettier"],
  "rules": {
    "no-console": "warn",
    "prefer-const": "error",
    "no-unused-vars": "error"
  }
}

// .prettierrc
{
  "semi": true,
  "singleQuote": true,
  "tabWidth": 2,
  "trailingComma": "es5"
}

6.2 Git Hooks 自动检查

# pre-commit 钩子示例
#!/bin/bash
# .git/hooks/pre-commit

echo "Running code style checks..."

# Python
if ! flake8 .; then
    echo "flake8检查失败,请修复代码规范问题"
    exit 1
fi

# JavaScript
if ! npm run lint; then
    echo "ESLint检查失败,请修复代码规范问题"
    exit 1
fi

echo "所有检查通过!"

七、团队协作规范

7.1 代码风格统一

# 团队代码规范文档

## 1. 命名约定
- Python: snake_case
- JavaScript/TypeScript: camelCase
- 常量: UPPER_SNAKE_CASE
- 类名: PascalCase

## 2. 文件组织

project/ ├── src/ │ ├── models/ # 数据模型 │ ├── services/ # 业务逻辑 │ ├── controllers/ # 控制层 │ ├── utils/ # 工具函数 │ └── config/ # 配置 ├── tests/ # 测试文件 ├── docs/ # 文档 └── README.md


## 3. 提交规范
- feat: 新功能
- fix: 修复bug
- docs: 文档更新
- style: 代码格式调整
- refactor: 重构
- test: 测试相关
- chore: 构建/工具变动

## 4. 代码审查
- 所有代码必须经过至少1人审查
- 审查时间不超过24小时
- 使用GitHub PR模板

7.2 代码审查最佳实践

# 审查时关注的重点示例

# 1. 安全性
def get_user_data(user_id):
    # ❌ 危险:直接拼接SQL
    query = f"SELECT * FROM users WHERE id = {user_id}"
    
    # ✅ 安全:使用参数化查询
    query = "SELECT * FROM users WHERE id = ?"
    return db.execute(query, (user_id,))

# 2. 性能
# ❌ 低效:N+1查询问题
def get_users_with_orders():
    users = User.all()
    for user in users:
        user.orders = Order.filter(user_id=user.id)  # 每次循环都查询数据库
    return users

# ✅ 高效:使用JOIN或批量查询
def get_users_with_orders():
    users = User.all().prefetch('orders')  # 预加载
    return users

# 3. 边界条件
def divide(a, b):
    # ❌ 未处理边界
    return a / b
    
    # ✅ 完整处理
    if b == 0:
        raise ValueError("除数不能为零")
    if not isinstance(a, (int, float)) or not isinstance(b, (int, float)):
        raise TypeError("参数必须是数字")
    return a / b

八、持续改进与习惯养成

8.1 每日代码规范检查清单

## 每日代码规范检查清单

### 编码前
- [ ] 明确函数/类的单一职责
- [ ] 思考清晰的命名
- [ ] 规划注释要点

### 编码中
- [ ] 保持适当的缩进和空格
- [ ] 控制函数长度(<30行)
- [ ] 及时添加必要注释

### 编码后
- [ ] 自我代码审查
- [ ] 运行linter检查
- [ ] 添加/更新单元测试
- [ ] 撰写清晰的提交信息

8.2 学习资源推荐

  1. 经典书籍

    • 《代码整洁之道》(Clean Code)
    • 《重构》(Refactoring)
    • 《程序员修炼之道》
  2. 在线工具

    • CodeClimate:代码质量分析
    • SonarQube:代码安全扫描
    • GitHub Copilot:AI辅助编码
  3. 社区规范参考

    • Google代码风格指南
    • Airbnb JavaScript风格指南
    • PEP 8(Python)

8.3 建立个人代码规范库

# 个人代码规范模板库

# 常用函数模板
def function_template():
    """
    函数功能简述
    
    详细说明:
    1. 输入参数说明
    2. 处理逻辑说明
    3. 返回值说明
    
    Example:
        >>> function_template()
        "预期输出"
    """
    # 1. 参数验证
    # 2. 核心逻辑
    # 3. 错误处理
    # 4. 返回结果
    pass

# 类模板
class ClassTemplate:
    """类功能简述"""
    
    def __init__(self, param1, param2):
        """
        初始化
        
        Args:
            param1: 参数1说明
            param2: 参数2说明
        """
        self.param1 = param1
        self.param2 = param2
    
    def method_template(self):
        """方法功能简述"""
        pass

九、常见误区深度解析

9.1 “代码能运行就行”误区

# ❌ 典型的"能运行就行"代码
def process(data):
    try:
        a = data['user']['name']
        b = data['orders'][0]['price']
        c = data['config']['tax_rate']
        return a, b * (1 + c)
    except:
        return None

# ✅ 专业级代码
def process_order_data(data):
    """
    处理订单数据,计算含税总价
    
    Args:
        data (dict): 包含用户、订单、配置信息的字典
    
    Returns:
        tuple: (用户名, 含税总价) 或 (None, None) 处理失败时
    
    Raises:
        KeyError: 数据结构不完整
        TypeError: 数据类型错误
    """
    try:
        # 明确的键访问,便于维护
        user_name = data['user']['name']
        order_price = data['orders'][0]['price']
        tax_rate = data['config']['tax_rate']
        
        # 类型检查
        if not isinstance(order_price, (int, float)):
            raise TypeError("订单价格必须是数字")
        if not isinstance(tax_rate, (int, float)):
            raise TypeError("税率必须是数字")
        
        # 计算含税总价
        total_price = order_price * (1 + tax_rate)
        
        return user_name, round(total_price, 2)
        
    except KeyError as e:
        log.error(f"数据结构不完整,缺少键: {e}")
        return None, None
    except Exception as e:
        log.error(f"处理数据时发生错误: {e}")
        return None, None

9.2 “注释越多越好”误区

# ❌ 过度注释
def add(a, b):
    # 这是一个加法函数
    # 接收两个参数a和b
    # 将它们相加
    # 返回结果
    # 参数a是第一个数
    # 参数b是第二个数
    # 结果是a+b
    return a + b  # 返回a+b的结果

# ✅ 适度注释
def add(a, b):
    """计算两个数的和"""
    return a + b

# ✅ 需要注释的复杂情况
def calculate_gaussian(x, mu, sigma):
    """
    计算高斯函数值
    
    公式:f(x) = (1/(σ√(2π))) * e^(-(x-μ)²/(2σ²))
    
    Args:
        x: 输入值
        mu: 均值μ
        sigma: 标准差σ
    """
    import math
    coefficient = 1 / (sigma * math.sqrt(2 * math.pi))
    exponent = -((x - mu) ** 2) / (2 * sigma ** 2)
    return coefficient * math.exp(exponent)

9.3 “复制粘贴”代码复用误区

# ❌ 重复代码(违反DRY原则)
def process_order_v1(order):
    total = 0
    for item in order.items:
        total += item.price * item.quantity
    if order.customer_type == 'vip':
        total *= 0.9
    tax = total * 0.08
    return total + tax

def process_order_v2(order):
    total = 0
    for item in order.items:
        total += item.price * item.quantity
    if order.customer_type == 'vip':
        total *= 0.9
    tax = total * 0.08
    return total + tax

# ✅ 提取公共逻辑
def calculate_subtotal(items):
    return sum(item.price * item.quantity for item in items)

def apply_customer_discount(total, customer_type):
    if customer_type == 'vip':
        return total * 0.9
    return total

def calculate_tax(total, tax_rate=0.08):
    return total * tax_rate

def process_order(order):
    subtotal = calculate_subtotal(order.items)
    discounted = apply_customer_discount(subtotal, order.customer_type)
    tax = calculate_tax(discounted)
    return discounted + tax

十、总结与行动建议

10.1 核心要点回顾

  1. 命名是基础:见名知意,保持一致性
  2. 注释是补充:解释”为什么”,而不是”是什么”
  3. 格式化是艺术:让代码视觉上舒适
  4. 函数要短小:单一职责,易于测试
  5. 工具是助力:自动化检查,事半功倍
  6. 规范是团队共识:统一标准,高效协作

10.2 30天养成计划

## 30天代码规范养成计划

### 第1周:基础规范
- Day 1-2: 学习并配置linter工具
- Day 3-4: 练习命名规范(重构旧代码)
- Day 5-7: 学习注释规范,添加必要注释

### 第2周:函数与类设计
- Day 8-10: 练习函数拆分(保持<30行)
- Day 11-14: 学习类设计原则,重构类

### 第3周:版本控制与协作
- Day 15-17: 学习Git提交规范
- Day 18-21: 练习代码审查,参与团队审查

### 第4周:自动化与优化
- Day 22-24: 配置Git hooks,自动化检查
- Day 25-27: 学习性能优化和安全规范
- Day 28-30: 总结个人规范,制定团队规范

10.3 持续改进的建议

  1. 定期回顾:每月回顾自己的代码,找出不规范的地方
  2. 学习优秀代码:阅读开源项目,学习大师的编码风格
  3. 接受反馈:虚心接受同事的代码审查意见
  4. 保持耐心:习惯养成需要时间,不要急于求成
  5. 以身作则:成为团队中的规范倡导者

10.4 最后的忠告

“代码是写给人看的,只是顺便让机器执行。” —— Donald Knuth

记住,优秀的代码规范习惯不是一蹴而就的,它需要持续的学习、实践和反思。当你养成这些习惯后,你会发现:

  • 代码质量显著提升
  • 维护成本大幅降低
  • 团队协作更加顺畅
  • 个人职业发展更加顺利

从今天开始,从下一行代码开始,养成良好的代码规范习惯。这不仅是对自己负责,更是对团队、对项目、对未来的负责。


附录:快速参考卡片

# 命名速查
# ✅ 好的命名
user_name, calculate_total, UserProfile, MAX_SIZE

# ❌ 避免
a, b, temp, data1, User_profile

# 注释速查
# ✅ 好的注释:解释为什么
# ❌ 避免:重复代码内容

# 函数速查
# ✅ 好的函数:单一职责,<30行
# ❌ 避免:过长,多职责

# 格式化速查
# ✅ 4空格缩进,80字符换行,合理空行
# ❌ 混合缩进,超长行,无空行