命名清晰:使用描述性强的命名,让代码自我解释。
简洁性:力求简洁,避免冗余,用最少的代码行数完成功能。
一致性:保持项目中命名和编码风格的统一,减少认知负荷。
注释:用注释阐明代码意图,但避免过度注释。
避免复杂性:将复杂逻辑分解为简单、可管理的函数或模块。
重构:定期重构,提升代码的可读性和性能。
测试:编写单元测试,确保代码的稳定性和可靠性。
错误处理:合理处理错误,增强程序的健壮性。
文档:编写清晰的文档,包括 API 文档和项目文档。
代码复用:创建可复用的函数或模块,避免重复代码。
性能优化:在不牺牲可读性的前提下,优化性能瓶颈。
安全性:编写安全的代码,防范常见的安全漏洞。
# 好的例子:命名清晰
def calculate_area(width, height):
return width * height
# 坏的例子:命名不清晰
def calc(w, h):
return w * h
# 好的例子:使用内置函数
numbers = [1, 2, 3, 4, 5]
total = sum(numbers)
# 坏的例子:冗余的循环
total = 0
for number in numbers:
total += number
# 好的例子:一致的命名
def get_user_name(user):
return user.name
def get_user_email(user):
return user.email
# 坏的例子:不一致的命名
def getName(user):
return user.name
def getEmail(user):
return user.email
# 好的例子:必要的注释
# 检查用户是否已登录
if user.is_authenticated:
# 用户已登录,允许访问
pass
# 坏的例子:过度注释
def add(a, b):
# a 是第一个数字
# b 是第二个数字
# 这个函数返回两个数字的和
return a + b
# 好的例子:简单的逻辑
def is_even(number):
return number % 2 == 0
# 坏的例子:复杂的逻辑
def check_number(number):
if number is None:
return False
elif number < 0:
return False
else:
return number % 2 == 0
# 重构前:重复的字符串格式化
def greet(name):
return 'Hello, ' + name + '!'
def farewell(name):
return 'Goodbye, ' + name + '!'
# 重构后:使用字符串格式化
def greet(name):
return f'Hello, {name}!'
def farewell(name):
return f'Goodbye, {name}!'
# 使用unittest框架编写测试
import unittest
class TestCalculator(unittest.TestCase):
def test_add(self):
self.assertEqual(add(1, 2), 3)
def test_subtract(self):
self.assertEqual(subtract(3, 1), 2)
# 好的例子:恰当的错误处理
try:
number = int(input('Enter a number: '))
if number < 0:
raise ValueError('Number must be non-negative')
except ValueError as e:
print(f'Error: {e}')
# 坏的例子:缺乏错误处理
number = int(input('Enter a number: ')) # 没有错误处理
'''
这个模块提供了一些用于处理用户数据的工具函数。
'''
def validate_email(email):
'''
检查邮箱地址是否合法。
参数:
email (str): 待验证的邮箱地址。
返回:
bool: 如果邮箱合法,返回 True;否则返回 False。
'''
# 实现验证逻辑
# 好的例子:复用代码
def format_name(first, last):
return f'{first} {last}'
user1 = format_name('John', 'Doe')
user2 = format_name('Jane', 'Smith')
# 坏的例子:重复代码
def get_user1_name():
return 'John Doe'
def get_user2_name():
return 'Jane Smith'
# 好的例子:使用集合提高查找效率
def has_duplicates(numbers):
return len(numbers) != len(set(numbers))
# 坏的例子:使用列表进行查找,效率较低
def has_duplicates(numbers):
for i in range(len(numbers)):
for j in range(i + 1, len(numbers)):
if numbers[i] == numbers[j]:
return True
return False
# 好的例子:防止SQL注入
cursor.execute('SELECT * FROM users WHERE username = %s AND password = %s', (username, password))
# 坏的例子:易受SQL注入攻击
cursor.execute('SELECT * FROM users WHERE username = ' + username + ' AND password = ' + password)
联系客服