Python - 在函数

时间:2017-07-27 06:23:47

标签: python python-3.x oop dictionary

我正在遭受<太多类综合症的困扰,努力确定什么时候有正当理由在python中使用一个类。

我有一个函数,它的代码很快升级到大约350行代码,为了进行全面的测试和对代码本身的更多控制,重构突然出现在我的脑海中。

刚开始重构后,我将代码分成几个小函数,但它们依赖于一些变量和数据字典,现在必须作为参数传递。

原始代码如下所示:

def process_rooms_json(path, country, json_dict):

    # Create Dict from json_dict 
    rooms_dict = dict()
    # Create another 
    employee_dict = dict()

    list_meetings = []

    # Iterate over the folder
    for file_name in [f for f in os.listdir(path)]:

        with open(folder + '/' + file_name, 'r', encoding='utf-8') as f:

            # Extract contect
            set_apps = function_which_creates_list(f.read())

                for app in set_apps:
                    # Block of code which extracts certain info
                    # Block of code which build  a dictionary
                    list_meetings.append(result_of_big_code)

    return list_meetings

现在它就像

def process_rooms_json(path, country, json_dict):

    # Create Dict from json_dict 
    rooms_dict = dict()

    # Create another 
    employee_dict = dict()

    list_meetings = []

    # Iterate over the folder
    for file_name in [f for f in os.listdir(path)]:

        with open(folder + '/' + file_name, 'r', encoding='utf-8') as f:

            # Extract content
            set_apps = function_which_creates_list(f.read())

                for app in set_apps:


                    # Block of code which extracts certain info

                    new_dict = do_a_lot_of_stuff_1(employee_dict, country, filename)
                    new_dict2 = do_a_lot_of_stuff_2(new_dict['some_list'])
                    new_dict3 = do_a_lot_of_stuff_3(employee_dict, country)
                    new_dict4 = do_a_lot_of_stuff_4(rooms_dict, country, file_name)
                    new_dict5 = do_a_lot_of_stuff_5(rooms_dict, employee_dict)

                    # Create result
                    return_dict = dict()
                    return_dict['some_filed'] = new_dict['another field']
                    ...

                    list_meetings.append(return_didct)
    return list_meetings

我真的很想创建一个类,比如说RoomProcessor,并在自己的路径,json词典和国家代码中封装。我不知道这在哪种程度上是正确的,或者我是否完全忽略了这一点。

在可维护性,代码可读性和适当的python惯用方法方面,是否在“函数”中共享相同的data_dictionary以正确理由创建类?

0 个答案:

没有答案