• 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() #调用函数,打印问候语

    代码重构的意义在于,简化同一个代码块的任务量,让代码更容易读懂。

  • 相关阅读:
    [Violet]天使玩偶/SJY摆棋子
    语音识别终极教程
    语音识别
    转:awesome-lane-detection
    转:awesome-object-detection
    转:Awesome
    转:Awesome Image/Video segmentation
    转:目标检测算法总结
    转:10行代码实现物体检测
    转:词向量word2vector那些事儿
  • 原文地址:https://www.cnblogs.com/mafu/p/13030588.html
Copyright © 2020-2023  润新知