Принципи Software Engineering у Python
Adam Spannbauer
Machine Learning Engineer
import this
The Zen of Python, by Tim Peters (abridged)
Гарне краще за потворне.
Явне краще за неявне.
Просте краще за складне.
Складне краще за заплутане.
Читабельність має значення.
Якщо реалізацію важко пояснити — це погана ідея.
Якщо реалізацію легко пояснити — це може бути хороша ідея.
Погані назви
def check(x, y=100):
return x >= y
Описові назви
def is_boiling(temp, boiling_point=100):
return temp >= boiling_point
Надмірність
def check_if_temperature_is_above_boiling_point(
temperature_to_check,
celsius_water_boiling_point=100):
return temperature_to_check >= celsius_water_boiling_point
The Zen of Python, by Tim Peters (abridged)
Simple is better than complex.
Complex is better than complicated.

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)
...
def make_pizza(ingredients):
dough = make_dough(ingredients)
sauce = make_sauce(ingredients)
assembled_pizza = assemble_pizza(dough, sauce, ingredients)
return bake(assembled_pizza)
Погані назви
def check(x, y=100):
return x >= y
Описові назви
def is_boiling(temp, boiling_point=100):
return temp >= boiling_point
Надмірність
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 Engineering у Python