Čitelnost je důležitá

Principy softwarového inženýrství v Pythonu

Adam Spannbauer

Machine Learning Engineer

Zen of Python

import this
The Zen of Python, by Tim Peters (abridged)

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
The complex is better than complicated.
Readability counts.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Principy softwarového inženýrství v Pythonu

Popisné pojmenování

Špatné pojmenování

def check(x, y=100):
    return x >= y

Popisné pojmenování

def is_boiling(temp, boiling_point=100):
    return temp >= boiling_point

Přehnaně dlouhé

def check_if_temperature_is_above_boiling_point(
        temperature_to_check, 
        celsius_water_boiling_point=100):
    return temperature_to_check >= celsius_water_boiling_point
Principy softwarového inženýrství v Pythonu

Zachovejte jednoduchost

The Zen of Python, by Tim Peters (abridged)

Simple is better than complex.
Complex is better than complicated.

  Kousek pizzy

Principy softwarového inženýrství v Pythonu

Příprava pizzy – složitě

def make_pizza(ingredients):
    # Make dough
    dough = mix(ingredients['yeast'],
                ingredients['flour'],
                ingredients['water'],
                ingredients['salt'],
                ingredients['shortening'])

    kneaded_dough = knead(dough)
    risen_dough = prove(kneaded_dough)

    # Make sauce
    sauce_base = sautee(ingredients['onion'],
                                ingredients['garlic'],
                                ingredients['olive oil'])

    sauce_mixture = combine(sauce_base,
                            ingredients['tomato_paste'],
                            ingredients['water'],
                            ingredients['spices'])

    sauce = simmer(sauce_mixture)
    ...
Principy softwarového inženýrství v Pythonu

Příprava pizzy – jednoduše

def make_pizza(ingredients):
    dough = make_dough(ingredients)
    sauce = make_sauce(ingredients)
    assembled_pizza = assemble_pizza(dough, sauce, ingredients)

    return bake(assembled_pizza)
Principy softwarového inženýrství v Pythonu

Kdy refaktorovat

Špatné pojmenování

def check(x, y=100):
    return x >= y

Popisné pojmenování

def is_boiling(temp, boiling_point=100):
    return temp >= boiling_point

Přehnaně dlouhé

def check_if_temperature_is_above_boiling_point(
        temperature_to_check, 
        celsius_water_boiling_point=100):
    return temperature_to_check >= celsius_water_boiling_point
Principy softwarového inženýrství v Pythonu

Lass uns üben!

Principy softwarového inženýrství v Pythonu

Preparing Video For Download...