-
Notifications
You must be signed in to change notification settings - Fork 111
Refactoring - Part 1 #166
Description
For this exercise, we will look at how to rewrite (refactor) existing code in different ways, and what benefits each new structure offers.
We will work with some code that describes a group of acquaintances, as we saw in a previous exercise (#8).
Stage 1: Remove global variables
Look at the initial version of the file, which defines a specific group using a dictionary and offers some functions for modifying and processing it.
You may notice that the dictionary is a global variable: all the functions refer to it but do not take it as a parameter.
This situation can lead to difficulties (why?), so we will restructure the code to avoid it.
Rewrite the functions so that they take in the dictionary that they work on as an argument.
For example, the function that computes the average age should now look like:
def average_age(group):
all_ages = [person["age"] for person in group.values()]
return sum(all_ages) / len(group)Your task:
- Checkout the
week09branch and go to theweek09/refactoringdirectory. - Change
average_groupas above, and the other functions ofgroup.pyin a similar way. - Update the section at the end of the file (after
if __name__ == "__main__") to create the sample dictionary
there, and running of the functions that alter it. - Run your file to make sure the asserts still pass.
- Commit your changes!
- Think of the benefits and drawbacks of this approach compared to the original version.
- If you have time, think of other changes you consider useful and try them.