👉导读
👉目录
int a, b, c; // 不具有描述性的变量名
float f; // 不清楚变量表示的含义
int num1, num2, result; // 具有描述性的变量名
float price; // 清晰明了的变量名
def count_grade(score):
if score >= 90:
grade = 'A'
elif score >= 80:
grade = 'B'
elif score >= 70:
grade = 'C'
elif score >= 60:
grade = 'D'
else:
grade = 'F'
if grade == 'A' or grade == 'B':
result = 'Pass'
else:
result = 'Fail'
return result
def count_grade(score):
grade = get_grade(score)
result = pass_or_fail(grade)
return result
def get_grade(score):
if score >= 90:
return 'A'
elif score >= 80:
return 'B'
elif score >= 70:
return 'C'
elif score >= 60:
return 'D'
else:
return 'F'
def pass_or_fail(grade):
if grade == 'A' or grade == 'B':
return 'Pass'
else:
return 'Fail'
def f(x):
if x>0:return 'positive' elif x<0:return 'negative'else:return 'zero'
def check_number(x):
if x > 0:
return 'positive'
elif x < 0:
return 'negative'
else:
return 'zero'
int num1, num2; // 定义两个变量
def divide(x, y):
return x / y
def divide(x, y):
try:
return x / y
except ZeroDivisionError:
return 'Cannot divide by zero!'
def divide(a, b):
try:
result = a / b
except ZeroDivisionError:
result = float('inf')
return result
def divide(a, b):
if b == 0:
result = float('inf')
else:
result = a / b
return result
try {
// 执行一些可能抛出异常的代码
} catch (Exception e) {
// 捕获所有异常,并忽略错误
}
try {
// 执行一些可能抛出异常的代码
} catch (FileNotFoundException e) {
// 处理文件未找到异常
logger.error("File not found", e);
} catch (IOException e) {
// 处理IO异常
logger.error("IO error", e);
} catch (Exception e) {
// 处理其他异常
logger.error("Unexpected error", e);
}
def calculate_area_of_rectangle(length, width):
return length * width
def calculate_volume_of_cuboid(length, width, height):
return length * width * height
def calculate_area_of_triangle(base, height):
return 0.5 * base * height
def calculate_volume_of_cone(radius, height):
return (1/3) * 3.14 * radius * radius * height
def calculate_area_of_rectangle(length, width):
return length * width
def calculate_volume(length, width, height):
return calculate_area_of_rectangle(length, width) * height
def calculate_area_of_triangle(base, height):
return 0.5 * base * height
def calculate_volume_of_cone(radius, height):
return (1/3) * 3.14 * radius * radius * height
class User:
def __init__(self, name):
self.name = name
def save(self):
# 保存用户到数据库的逻辑
def send_email(self, content):
# 发送邮件的逻辑
class Order:
def __init__(self, user, product):
self.user = user
self.product = product
def save(self):
# 保存订单到数据库的逻辑
def send_email(self, content):
# 发送邮件的逻辑
```
class User:
def __init__(self, name):
self.name = name
def save(self):
# 保存用户到数据库的逻辑
class Order:
def __init__(self, user, product):
self.user = user
self.product = product
def save(self):
# 保存订单到数据库的逻辑
class EmailSender:
def send_email(self, content):
# 发送邮件的逻辑
def calculate_score(score):
if (score > 60) {
// do something
}
PASS_SCORE = 60;
def calculate_score(score):
if (score > PASS_SCORE) {
// do something
}
counter = 0
def increment():
global counter
counter += 1
def increment(counter):
return counter + 1
def add_number(a, b):
return a + b
import unittest
def add_number(a, b):
return a + b
class TestAdd(unittest.TestCase):
def add_number(self):
self.assertEqual(add(2, 3), 5)
if __name__ == '__main__':
unittest.main()
def is_even(n):
return n % 2 == 0
import unittest
def is_even(n):
return n % 2 == 0
class TestIsEven(unittest.TestCase):
def test_even(self):
self.assertTrue(is_even(2))
self.assertFalse(is_even(3))
if __name__ == '__main__':
unittest.main()
def get_current_time():
return datetime.datetime.now()
def get_time(now):
return now
def sum(numbers):
return functools.reduce(operator.add, numbers)
这段代码的问题在于,它使用了 functools.reduce 和 operator.add 来计算列表的和,虽然这样做可以提高一点点性能,但是这使得代码难以理解。我们应该在保持代码清晰和易读的前提下,进行适度的优化。例如:
def sum(numbers):
return sum(numbers)
这段代码使用了内置的 sum 函数来计算列表的和,虽然它可能比上面的代码慢一点,但是它更清晰、易读。
选择合适的数据结构可以提高代码的性能。使用不合适的数据结构可能导致代码执行缓慢或占用过多的内存。例如:
def find_duplicate(numbers):
duplicates = []
for i in range(len(numbers)):
if numbers[i] in numbers[i+1:]:
duplicates.append(numbers[i])
return duplicates
在这个示例中,我们使用了列表来查找重复元素,但这种方法的时间复杂度较高。我们可以使用集合来查找元素。例如:
def find_duplicate(numbers):
duplicates = set()
seen = set()
for num in numbers:
if num in seen:
duplicates.add(num)
else:
seen.add(num)
return list(duplicates)
我们使用了集合来查找重复元素,这种方法的时间复杂度较低。
没有对用户输入进行充分验证和过滤可能导致恶意用户执行恶意代码或获取敏感信息。例如:
import sqlite3
def get_user(username):
conn = sqlite3.connect('database.db')
cursor = conn.cursor()
query = f"SELECT * FROM users WHERE username = '{username}'"
cursor.execute(query)
user = cursor.fetchone()
conn.close()
return user
在这个示例中,我们没有对用户输入的 `username` 参数进行验证和过滤,可能导致 SQL 注入攻击。正确示例:
import sqlite3
def get_user(username):
conn = sqlite3.connect('database.db')
cursor = conn.cursor()
query = "SELECT * FROM users WHERE username = ?"
cursor.execute(query, (username,))
user = cursor.fetchone()
conn.close()
return user
在这个示例中,我们使用参数化查询来过滤用户输入,避免了 SQL 注入攻击。
将明文密码存储在数据库或文件中,或使用不安全的哈希算法存储密码都是不安全的做法。错误示例:
import hashlib
def store_password(password):
hashed_password = hashlib.md5(password.encode()).hexdigest()
# 存储 hashed_password 到数据库或文件中
在这个示例中,我们使用了不安全的哈希算法 MD5 来存储密码。正确示例:
import hashlib
import bcrypt
def store_password(password):
hashed_password = bcrypt.hashpw(password.encode(), bcrypt.gensalt())
# 存储 hashed_password 到数据库或文件中
在这个示例中,我们使用了更安全的哈希算法 bcrypt 来存储密码。
没有正确验证用户的身份和权限可能导致安全漏洞。错误示例:
def delete_user(user_id):
if current_user.is_admin:
# 执行删除用户的操作
else:
raise PermissionError("You don't have permission to delete users.")
在这个示例中,我们只检查了当前用户是否为管理员,但没有进行足够的身份验证和权限验证。正确示例:
def delete_user(user_id):
if current_user.is_authenticated and current_user.is_admin:
# 执行删除用户的操作
else:
raise PermissionError("You don't have permission to delete users.")
在这个示例中,我们不仅检查了当前用户是否为管理员,还检查了当前用户是否已经通过身份验证。
git commit -m "Fixed a bug"
$ git commit -m "Fixed a bug in calculate function, which caused grade calculation for scores below 60"
$ mv important_code.py important_code_backup.py
$ rm important_code.py
$ git clone project.git
$ cp important_code.py important_code_backup.py
$ git add .
$ git commit -m "Created backup of important code"
$ git push origin master
$ rm important_code.py
“
细节之中自有天地,整洁成就卓越代码。
写代码时犯过什么搞笑的低级错误?你又有什么避免错误的好办法?欢迎在评论区分享讨论。我们将选取1则最有意义的分享,送出腾讯云开发者-手腕垫1个(见下图)。7月24日中午12点开奖。