Leesbaarheid telt

Software-engineeringprincipes in Python

Adam Spannbauer

Machine Learning Engineer

De Zen van Python

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

Mooi is beter dan lelijk.
Expliciet is beter dan impliciet.
Eenvoudig is beter dan complex.
Complex is beter dan gecompliceerd.
Leesbaarheid telt.
Als de implementatie moeilijk uit te leggen is, is het een slecht idee.
Als de implementatie makkelijk uit te leggen is, kan het een goed idee zijn.
Software-engineeringprincipes in Python

Beschrijvende naamgeving

Slechte naamgeving

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

Beschrijvende naamgeving

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

Te ver gaan

def check_if_temperature_is_above_boiling_point(
        temperature_to_check, 
        celsius_water_boiling_point=100):
    return temperature_to_check >= celsius_water_boiling_point
Software-engineeringprincipes in Python

Hou het simpel

De Zen van Python, door Tim Peters (verkort)

Eenvoudig is beter dan complex.
Complex is beter dan gecompliceerd.

  Pizzapunt

Software-engineeringprincipes in Python

Pizza maken - complex

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

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

    # Maak saus
    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)
    ...
Software-engineeringprincipes in Python

Pizza maken - simpel

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

    return bake(assembled_pizza)
Software-engineeringprincipes in Python

Wanneer refactoren

Slechte naamgeving

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

Beschrijvende naamgeving

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

Te ver gaan

def check_if_temperature_is_above_boiling_point(
        temperature_to_check, 
        celsius_water_boiling_point=100):
    return temperature_to_check >= celsius_water_boiling_point
Software-engineeringprincipes in Python

Laten we oefenen

Software-engineeringprincipes in Python

Preparing Video For Download...