Principes d’ingénierie logicielle en Python
Adam Spannbauer
Machine Learning Engineer
import this
Le Zen de Python, par Tim Peters (abrégé)
Le beau est mieux que le laid.
L'explicite est mieux que l'implicite.
Le simple est mieux que le complexe.
Le complexe est mieux que le compliqué.
La lisibilité compte.
Si l'implémentation est difficile à expliquer, c'est une mauvaise idée.
Si l'implémentation est facile à expliquer, cela peut être une bonne idée.
Mauvaise dénomination
def check(x, y=100):
return x >= y
Dénomination descriptive
def is_boiling(temp, boiling_point=100):
return temp >= boiling_point
Exagération
def check_if_temperature_is_above_boiling_point(
temperature_to_check,
celsius_water_boiling_point=100):
return temperature_to_check >= celsius_water_boiling_point
Le Zen de Python, par Tim Peters (abrégé)
Le simple est mieux que le complexe.
Le complexe est mieux que le compliqué.

def make_pizza(ingredients):
# Préparer la pâte
dough = mix(ingredients['yeast'],
ingredients['flour'],
ingredients['water'],
ingredients['salt'],
ingredients['shortening'])
kneaded_dough = knead(dough)
risen_dough = prove(kneaded_dough)
# Préparer la 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)
...
def make_pizza(ingredients):
dough = make_dough(ingredients)
sauce = make_sauce(ingredients)
assembled_pizza = assemble_pizza(dough, sauce, ingredients)
return bake(assembled_pizza)
Mauvaise dénomination
def check(x, y=100):
return x >= y
Dénomination descriptive
def is_boiling(temp, boiling_point=100):
return temp >= boiling_point
Exagération
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 d’ingénierie logicielle en Python