一、定义
代码重构是对已完成基本功能的代码进行改进,使之更清晰,易于理解、易于扩展。
前提是代码已完成基本功能。
二、方式
我理解的代码重构即是,分两步走。
1、先将完成功能的代码划分为单一功能函数,如仅是获得数值,获取输入,判断是否正确的函数等等;
2、基于各个函数的功能,组织并实现高层逻辑。高层逻辑一般不涉及具体代码的底层架构。
三、方法
可以先完成基本功能,然后根据代码提出需求,然后再画草图,画流程图,形成基本架构,再组织代码。
四、示例
(一)原始代码
import json
filename = './test/username.json'
try:
with open(filename) as f_obj:
usernames = f_obj.readlines()
except FileNotFoundError:
username = input("What is your name? ")
with open(filename,'w') as f_obj:
json.dump(username,f_obj)
print("We'll rember you when you come back, " + username + "!")
else:
print(usernames)
print("")
for username in usernames:
user = json.loads(username)
print("Hello, Welcome back, " + user + "!")
(二)重构后代码
import json
import os
def is_exits(filename):
"""Judge a file if exist,and return 'True' or 'False'"""
if os.path.exists(filename):
return True
else:
return False
def get_text(file):
"""Get text of the file"""
with open(file) as f_obj:
usernames = f_obj.readlines()
for username in usernames:
user = json.loads(username)
print("Hello, Welcome back, " + user + "!")
def creat_new_file(filename):
"""Creat the new json files."""
username = input("What is your name? ")
with open(filename,'w') as f_obj:
json.dump(username,f_obj)
def main(filename):
"""Main"""
if is_exits(filename):
get_text(filename)
else:
creat_new_file(filename)