Lizibilitatea contează

Principii de inginerie software în Python

Adam Spannbauer

Machine Learning Engineer

Zenul 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.
Principii de inginerie software în Python

Denumiri descriptive

Denumiri slabe

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

Denumiri descriptive

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

Exagerare

def check_if_temperature_is_above_boiling_point(
        temperature_to_check, 
        celsius_water_boiling_point=100):
    return temperature_to_check >= celsius_water_boiling_point
Principii de inginerie software în Python

Păstrează simplitatea

The Zen of Python, by Tim Peters (abridged)

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

  Felie de pizza

Principii de inginerie software în Python

Prepararea unei pizza - complex

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)
    ...
Principii de inginerie software în Python

Prepararea unei pizza - simplu

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

    return bake(assembled_pizza)
Principii de inginerie software în Python

Când să refactorizezi

Denumiri slabe

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

Denumiri descriptive

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

Exagerare

def check_if_temperature_is_above_boiling_point(
        temperature_to_check, 
        celsius_water_boiling_point=100):
    return temperature_to_check >= celsius_water_boiling_point
Principii de inginerie software în Python

Să exersăm!

Principii de inginerie software în Python

Preparing Video For Download...