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() #調用函數,打印問候語

代碼重構的意義在於,簡化同一個代碼塊的任務量,讓代碼更容易讀懂。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM