La lisibilité compte

Principes de génie logiciel en Python

Adam Spannbauer

Machine Learning Engineer

Zen de 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.
Principes de génie logiciel en Python

Nommage descriptif

Mauvais nommage

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

Nommage descriptif

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

Aller trop loin

def check_if_temperature_is_above_boiling_point(
        temperature_to_check, 
        celsius_water_boiling_point=100):
    return temperature_to_check >= celsius_water_boiling_point
Principes de génie logiciel en Python

Ne compliquez pas

The Zen of Python, by Tim Peters (abridged)

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

Part de pizza

Principes de génie logiciel en Python

Préparer une pizza – complexe

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)
    ...
Principes de génie logiciel en Python

Préparer une pizza – simple

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

    return bake(assembled_pizza)
Principes de génie logiciel en Python

Quand refactoriser

Mauvais nommage

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

Nommage descriptif

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

Aller trop loin

def check_if_temperature_is_above_boiling_point(
        temperature_to_check, 
        celsius_water_boiling_point=100):
    return temperature_to_check >= celsius_water_boiling_point
Principes de génie logiciel en Python

Passons à la pratique !

Principes de génie logiciel en Python

Preparing Video For Download...