python之代码重构
在撸码过程中,总有很多代码需要重构,码一个问候用户的小例子,加深对代码重构的印象。
原始代码:
1 import json 2 3 filename = 'username.json' #定义文件名 4 5 try: 6 with open(filename) as file_object: 7 username = json.load(file_object) #加载存储的用户名,如果有的话 8 9 except FileNotFoundError: 10 username = input("what is your name: ") 11 with open(filename,'w') as file_object: #以写入的方式打开文件filename 12 json.dump(username,file_object) #将username写入到文件对象中 13 print("We will remember you when you back " +username + "!") #打印问候语 14 15 else: 16 print("Welcome back, " + username + "!") #打印问候语
代码重构1,将代码全部封装到一个函数里面:
1 import json 2 3 '''定义函数,用于代码封装''' 4 def greet_user(): 5 filename = 'username.json' 6 try: 7 with open(filename) as file_object: 8 username = json.load(file_object) 9 10 except FileNotFoundError: 11 username = input("What is your name: ") 12 with open(filename,'w') as file_object: 13 json.dump(username,file_object) 14 print("We will remember you when you back, " + username + "!") 15 16 else: 17 print("Welcome back, " + username + "!") 18 19 greet_user() #调用函数问候
代码重构2,将代码重构1的函数进一步拆分,让函数greet_user()不执行那么多任务,我们将获取存储的用户名的代码写到另一个get_stored_user()函数中。
1 import json 2 3 4 def get_stored_user(): 5 filename = 'username.json' 6 try: 7 with open(filename) as file_object: 8 username = json.load(file_object) 9 10 except FileNotFoundError: 11 return None 12 13 else: 14 return username 15 16 17 def greet_user(): 18 username = get_stored_user() 19 if username: 20 print("Welcome back " + username + "!") 21 else: 22 username = input("What is your name: ") 23 filename = 'username.json' 24 with open(filename,'w') as file_object: 25 json.dump(username,file_object) 26 print("We will remember you when you back, " + username + "!") 27 28 greet_user() #调用函数问候
代码重构3,由于最终的目的是问候用户,我们可以将重构2里的代码进一步拆分,将没有用户名的时候提示输入用户名的代码存储在另外一个函数中。
1 import json 2 3 def get_stored_user(): 4 '''定义函数以获取存储了的用户名''' 5 filename = 'username.json' 6 try: 7 with open(filename) as file_object: 8 username = json.load(file_object) 9 except FileNotFoundError: 10 return None 11 else: 12 return username #返回用户名 13 14 def get_new_user(): 15 '''定义函数以获取用户输入''' 16 username = input("What is your name: ") 17 filename = 'username.json' 18 with open(filename,'w') as file_object: 19 json.dump(username,file_object) 20 21 return username #返回用户名 22 23 def greet_user(): 24 '''定义函数问候用户''' 25 username = get_stored_user() 26 if username: 27 print("Welcome back, " + username + "!") 28 else: 29 username = get_new_user() 30 print("We will remember you when you back, " + username + "!") 31 32 greet_user() #调用函数,打印问候语
代码重构的意义在于,简化同一个代码块的任务量,让代码更容易读懂。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)