Lesbarkeit zählt

Grundlagen der Softwareentwicklung in Python

Adam Spannbauer

Machine Learning Engineer

Das Zen von Python

import this
The Zen of Python, by Tim Peters (gekürzt)

Schön ist besser als hässlich.
Explizit ist besser als implizit.
Einfach ist besser als komplex.
Komplex ist besser als kompliziert.
Lesbarkeit zählt.
Wenn die Implementierung schwer zu erklären ist, ist es eine schlechte Idee.
Wenn die Implementierung leicht zu erklären ist, könnte es eine gute Idee sein.
Grundlagen der Softwareentwicklung in Python

Beschreibende Benennung

Schlechte Benennung

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

Beschreibende Benennung

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

Übertrieben

def check_if_temperature_is_above_boiling_point(
        temperature_to_check, 
        celsius_water_boiling_point=100):
    return temperature_to_check >= celsius_water_boiling_point
Grundlagen der Softwareentwicklung in Python

Einfach halten

Das Zen von Python, von Tim Peters (gekürzt)

Einfach ist besser als komplex.
Komplex ist besser als kompliziert.

  Pizzastück

Grundlagen der Softwareentwicklung in Python

Pizza machen - komplex

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

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

    # Sauce machen
    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)
    ...
Grundlagen der Softwareentwicklung in Python

Pizza machen - einfach

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

    return bake(assembled_pizza)
Grundlagen der Softwareentwicklung in Python

Wann refaktorisieren

Schlechte Benennung

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

Beschreibende Benennung

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

Übertrieben

def check_if_temperature_is_above_boiling_point(
        temperature_to_check, 
        celsius_water_boiling_point=100):
    return temperature_to_check >= celsius_water_boiling_point
Grundlagen der Softwareentwicklung in Python

Lass uns üben!

Grundlagen der Softwareentwicklung in Python

Preparing Video For Download...