一、定义

代码重构是对已完成基本功能的代码进行改进,使之更清晰,易于理解、易于扩展。

前提是代码已完成基本功能。

二、方式

我理解的代码重构即是,分两步走。

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)