Thanks Erik,
On Thu, Feb 16, 2017 at 6:53 AM, Erik <pyt...@lucidity.plus.com> wrote: > (which is what I think you mean by "proper size") > As I explained at my first post, I'm teaching Python to novice programmers. Therefore refactoring example code should be in the size what they can understand. It is hard for them to read and understand over than thousand lines of code. Almost of all projects have code over than thousand lines of code, but it is possible to quote a part of them for refactoring example, I think. > > (Python code examples of what you think is "bad" vs "good" would be > useful). > You are right. Bad code Example: # https://codewords.recurse.com/issues/one/an-introduction-to-functional-programming from random import random def move_cars(car_positions): return map(lambda x: x + 1 if random() > 0.3 else x, car_positions) def output_car(car_position): return '-' * car_position def run_step_of_race(state): return {'time': state['time'] - 1, 'car_positions': move_cars(state['car_positions'])} def draw(state): print '' print '\n'.join(map(output_car, state['car_positions'])) def race(state): draw(state) if state['time']: race(run_step_of_race(state)) race({'time': 5, 'car_positions': [1, 1, 1]}) Refactoring example: from random import random class Car(object): def __init__(self): self.position = 1 def move(self): if random() > 0.3: self.position += 1 return self.position class Race(object): def __init__(self, n_cars=3): self._cars = [ Car() for _ in range(n_cars) ] def round(self): for car in self._cars: car.move() def report(self): print("") for car in self._cars: print('-' * car.position) def run(self, n_rounds=5): self.report() for _ in range(n_rounds): self.round() self.report() if __name__ == '__main__': Race(3).run(5) -- regards, makoto kuwata -- https://mail.python.org/mailman/listinfo/python-list