返回

写出整洁代码的12条建议:写出高质量代码的宝典

后端

1. 遵循单一职责原则 (SRP)

每个函数或类应该只做一件事情。这样可以保持模块清晰,降低维护成本。

示例代码

# 不推荐的做法
def process_user_data(user):
    validate(user)
    save_to_db(user)
    send_email(user)
    
# 推荐的做法
def validate(user): 
    # 验证用户数据
    
def save_to_db(user): 
    # 将用户保存到数据库中
    
def send_email(user): 
    # 向用户提供邮件通知

2. 坚持使用有意义的命名

变量、函数和类名应该能够直接反映出它们的作用。

示例代码

# 不推荐的做法
a = 10
b = a + 5
    
# 推荐的做法
current_value = 10
new_value = current_value + 5

3. 维持一致的代码风格

使用统一的标准和格式,比如括号的位置、缩进数量等。

示例代码

# 不推荐的做法
if x == 2 : print(x)

# 推荐的做法
if x == 2:
    print(x)

4. 减少不必要的注释

好的命名和结构能够自然地解释代码。过多的注释反而可能增加混乱。

示例

def calculate_area(length, width):
    return length * width # 计算面积

这里,“计算面积”的注释是多余的,因为函数名已经表明了这一点。

5. 避免使用魔术数字

避免在代码中直接使用没有解释的数值。这些值应该用常量或枚举来表示。

示例

# 不推荐的做法
if age > 18:
    print("成年人")

# 推荐的做法
ADULT_AGE = 18
if age > ADULT_AGE:
    print("成年人")

6. 使用函数参数而非全局变量

这可以减少副作用,提高代码的可复用性。

示例

# 不推荐的做法
global_var = "world"
def greet(name):
    print(f"Hello, {name} {global_var}")

# 推荐的做法
def greet(name, greeting_suffix="world"):
    print(f"Hello, {name} {greeting_suffix}")

7. 代码复用,避免重复

重用现有代码可以提高效率,并降低出错的几率。

示例

# 不推荐的做法
def do_something():
    x = calculate()
    # 使用x...
    
def do_another_thing():
    y = calculate() 
    # 使用y...

# 推荐的做法
def use_calculate(func):
    value = calculate()
    func(value)

do_something(use_calculate)

8. 避免复杂的条件判断

复杂且嵌套的if-else语句会降低代码可读性。可以尝试重构或使用策略设计模式。

示例

# 不推荐的做法
def process(data):
    if condition1:
        # 处理...
    elif condition2:
        # 另一种处理...

# 推荐的做法
class ConditionHandlerStrategy(ABC):
    @abstractmethod
    def handle(self, data): pass

class SpecificConditionStrategy(ConditionHandlerStrategy):
    def handle(self, data):
        # 具体的处理逻辑
        
def process(data, handler: ConditionHandlerStrategy = None):
    if handler is not None:
        handler.handle(data)

9. 合理使用异常处理

恰当的异常处理可以避免程序崩溃,并提供有用的错误信息。

示例

try:
    result = some_function()
except SomeError as e:
    # 处理异常
    print(f"An error occurred: {e}")
finally:
    # 清理资源

10. 考虑代码的可扩展性

设计时考虑未来可能的变化,避免硬编码。

示例

# 不推荐的做法
def calculate_total_price(item):
    return item.price * 0.85
    
# 推荐的做法
DISCOUNT = 0.15
def calculate_total_price(item, discount=DISCOUNT):
    return item.price * (1 - discount)

11. 使用代码审查工具

如SonarQube、ESLint等,可以自动检查代码中的常见问题并提出改进建议。

示例

eslint --fix your_file.js

这行命令不仅会识别出潜在的问题,还会尝试自动修复它们。

12. 经常重构

随着项目的发展和需求变化,定期审视并重构代码可以保持其整洁和高效。

通过以上建议的实施,开发人员能够编写更加简洁、高效且易于维护的代码。这些做法在长期看来不仅提升了项目的质量,也加速了开发速度。