函数重构
函数重构
函数重构是指对现有函数进行修改和优化的过程。重构的目的是改善代码的可读性、可维护性和灵活性,同时保持其功能不变。函数重构通常包括以下步骤:
-
理解函数的功能和目的。了解函数的作用和期望结果,确定重构的目标。
-
检查函数的代码质量。查看函数的代码是否清晰、简洁、可读,有无可改进之处。
-
提取重复的代码。如果函数中有重复的代码块,可以将其提取为单独的函数或方法,避免重复编写代码。
-
简化函数逻辑。如果函数的逻辑过于复杂,可以将其拆分成多个较小的函数,每个函数只负责一部分逻辑。
-
优化函数参数。检查函数的参数是否过多或过少,是否有不必要的参数,可以考虑重新设计参数,使函数的接口更清晰和简洁。
-
修改函数的命名。函数的命名应该准确地描述函数的功能和作用,可以根据函数的具体功能和语义重新命名。
-
添加注释和文档。为函数添加合适的注释和文档,使其他开发人员能够更容易地理解和使用函数。
-
运行测试用例。确保重构后的函数仍然能够正确地完成其功能,并通过运行测试用例进行验证。
通过函数重构,可以改善代码的质量和可维护性,提高开发效率和代码的可读性。同时,重构还可以帮助发现和修复代码中的潜在问题和bug。函数重构是指对现有函数进行修改和优化的过程。重构的目的是改善代码的可读性、可维护性和灵活性,同时保持其功能不变。函数重构通常包括以下步骤:
-
理解函数的功能和目的。了解函数的作用和期望结果,确定重构的目标。
-
检查函数的代码质量。查看函数的代码是否清晰、简洁、可读,有无可改进之处。
-
提取重复的代码。如果函数中有重复的代码块,可以将其提取为单独的函数或方法,避免重复编写代码。
-
简化函数逻辑。如果函数的逻辑过于复杂,可以将其拆分成多个较小的函数,每个函数只负责一部分逻辑。
-
优化函数参数。检查函数的参数是否过多或过少,是否有不必要的参数,可以考虑重新设计参数,使函数的接口更清晰和简洁。
-
修改函数的命名。函数的命名应该准确地描述函数的功能和作用,可以根据函数的具体功能和语义重新命名。
-
添加注释和文档。为函数添加合适的注释和文档,使其他开发人员能够更容易地理解和使用函数。
-
运行测试用例。确保重构后的函数仍然能够正确地完成其功能,并通过运行测试用例进行验证。
通过函数重构,可以改善代码的质量和可维护性,提高开发效率和代码的可读性。同时,重构还可以帮助发现和修复代码中的潜在问题和bug。
pycharm函数重构步骤
- 选择要重构的函数,在PyCharm中打开该函数所在的文件。
- 鼠标右键点击函数名称或者函数体,选择"Refactor",然后选择"Extract"。
- 在弹出的菜单中选择"Function",然后输入新的函数名称。
- 在弹出的对话框中,选择要提取的代码块,包括函数参数和函数体内的代码。
- 点击"OK"按钮,PyCharm将会自动在当前文件中创建一个新的函数,并将选中的代码块移动到新的函数中。
- 在原来的位置上,会生成一个函数调用语句,调用新创建的函数。
- 检查新创建的函数是否正确,如果需要修改参数或者函数体内的代码,可以在新创建的函数中进行修改。
- 如果需要修改函数调用处的参数,可以在原来的位置上修改函数调用语句。
- 确保重构后的代码没有错误,并且与之前的代码功能一致。
- 提交代码变更,完成函数重构。
函数重构练习
学生信息管理系统是一个控制台应用,它使用 Python 编写,包含以下功能:
-
查询所有信息:通过
select_all
函数实现,它遍历学生列表并打印每个学生的学号、姓名、年龄和分数。 -
新增信息:由
add_one
函数负责,提示用户输入学生的学号、姓名、年龄和分数,然后将这些信息存储在一个字典中,并检查学号是否已经存在于学生列表中,以避免重复。 -
修改信息:
update_one
函数用于根据学号修改学生的分数。如果学号存在,则更新其分数;否则,给出错误提示。 -
删除信息:通过
delete_one
函数,根据学号删除学生信息。如果学号不存在,给出错误提示。 -
退出:
exit_system
函数用于安全地关闭程序。 -
主菜单:
data_manager
函数作为系统的主入口点,显示菜单供用户选择,并根据用户的选择调用相应的函数。此外,它还处理了非法输入的情况。
系统使用一个名为 stu_dic
的列表来存储学生信息,其中每个学生的信息都保存在一个字典中。
# 写一个控制台版的学生信息管理系统
# 菜单的输出print
# 菜单
# 1、查询所有信息
# 2、新增信息
# 3、修改信息
# 4、删除信息
# 5、退出
# 菜单的选择input
# 当输入1时,遍历stu
# 当输入2时,输入需要新增的信息(学号、姓名、年龄、得分),将数据插入到stu
# 3时,根据id修改得分
# 4时,根据id删除该条信息
# 5,结束
# 除了5以外的任意功能操作结束后需要返回主菜单界面
# 定义一个学生信息列表,每个学生信息包括学号、姓名、年龄和分数
import sys
# 初始化学生信息列表
d1 = {"id": 1, "name": "zl", "age": 20, "score": 100}
d2 = {"id": 2, "name": "jwj", "age": 21, "score": 95}
d3 = {"id": 3, "name": "zff", "age": 24, "score": 90}
stu_dic = [d1, d2, d3]
# 打印所有学生信息
def select_all(stu):
"""
打印学生列表中的所有学生信息。
参数:
stu -- 学生信息列表。
"""
print("学号\t姓名\t年龄\t分数")
for i in stu:
for j in i.values():
print(j, end="\t")
print()
# 根据姓名查询并打印学生信息
def select_one(stu):
"""
根据输入的姓名查询并打印学生信息。
参数:
stu -- 学生信息列表。
"""
temp_name = input("请输入要查询的学生姓名:")
for i in stu:
if i["name"] == temp_name:
print("学号\t姓名\t年龄\t分数")
for j in i.values():
print(j, end="\t")
print()
break
else:
print("查无此人")
# 添加学生信息
def add_one(stu):
"""
添加学生信息到列表中。
参数:
stu -- 学生信息列表。
"""
while True:
print("请输入学号、姓名、年龄、分数")
# 输入并构建一个新的学生信息
temp_id = input("学号:")
temp_name = input("姓名:")
temp_age = input("年龄:")
temp_score = input("分数:")
if temp_id.isdigit() and temp_age.isdigit() and temp_score.isdigit():
temp_info = {
"id": int(temp_id),
"name": temp_name,
"age": int(temp_age),
"score": int(temp_score),
}
if temp_info["id"] in [i["id"] for i in stu]:
print("学号已存在,请重新输入")
break
else:
# 将新学生信息添加到学生信息列表中
stu.append(temp_info)
else:
print("输入错误,请重新输入")
# 询问用户是否继续添加
continue_check = input("是否继续添加?y/n:")
# 如果用户不打算继续添加,则退出循环
if continue_check == "n":
break
# 修改学生信息
def update_one(stu):
"""
根据输入的学号修改学生信息中的分数。
参数:
stu -- 学生信息列表。
"""
# 修改学生分数
temp_id = input("请输入要修改的学号:")
temp_score = input("请输入修改后的分数:")
if temp_id.isdigit() and temp_score.isdigit():
temp_id = int(temp_id)
temp_score = int(temp_score)
for i in stu:
if i["id"] == temp_id:
# 找到对应学号的学生,修改其分数
i["score"] = temp_score
print("修改成功")
break
else:
print("学号不存在")
else:
print("输入错误,请重新输入")
# 删除学生信息
def delete_one(stu):
"""
根据输入的学号删除学生信息。
参数:
stu -- 学生信息列表。
"""
# 删除学生信息
temp_id = input("请输入要删除的学号:")
if temp_id.isdigit():
temp_id = int(temp_id)
for i in stu:
if i["id"] == temp_id:
# 找到对应学号的学生,从列表中删除
stu.remove(i)
print("删除成功")
break
else:
print("学号不存在")
else:
print("输入错误,请重新输入")
# 退出系统
def exit_system():
"""
退出学生信息管理系统。
"""
print("退出系统成功")
sys.exit()
# 主菜单函数,提供学生信息管理的各种选项
def data_manager(stu):
"""
学生信息管理系统的主菜单函数。
参数:
stu -- 学生信息列表。
"""
while True:
print(
"""# 菜单
# 1、查询信息
# 2、新增信息
# 3、修改分数
# 4、删除信息
# 5、退出系统"""
)
# 获取用户的选择
number = int(input("请输入序号:"))
# 根据用户的选择执行不同的操作
if number == 1:
# 查询所有学生信息
print(
"""
1. 查询所有学生信息
2. 查询单个学生信息
"""
)
select_number = input("请输入序号:")
if select_number.isdigit():
select_number = int(select_number)
if select_number == 1:
select_all(stu)
elif select_number == 2:
select_one(stu)
else:
print("输入错误,请重新输入")
else:
print("输入错误,请重新输入")
elif number == 2:
add_one(stu)
elif number == 3:
update_one(stu)
elif number == 4:
delete_one(stu)
elif number == 5:
# 退出系统
exit_system()
else:
# 如果用户输入了无效的选项
print("输入错误,请重新输入")
# 启动学生信息管理系统主菜单
data_manager(stu_dic)
标签:重构,函数,temp,python,学生,stu,print,id
From: https://blog.csdn.net/qq_18296979/article/details/140383611