Princípios de Engenharia de Software em Python
Adam Spannbauer
Machine Learning Engineer
import this
O Zen do Python, por Tim Peters (resumido)
Bonito é melhor que feio.
Explícito é melhor que implícito.
Simples é melhor que complexo.
Complexo é melhor que complicado.
Legibilidade importa.
Se a implementação é difícil de explicar, é uma má ideia.
Se a implementação é fácil de explicar, pode ser uma boa ideia.
Nomeação ruim
def check(x, y=100):
return x >= y
Nomeação descritiva
def is_boiling(temp, boiling_point=100):
return temp >= boiling_point
Exagerando
def check_if_temperature_is_above_boiling_point(
temperature_to_check,
celsius_water_boiling_point=100):
return temperature_to_check >= celsius_water_boiling_point
O Zen do Python, por Tim Peters (resumido)
Simples é melhor que complexo.
Complexo é melhor que complicado.

def make_pizza(ingredients):
# Fazer a massa
dough = mix(ingredients['yeast'],
ingredients['flour'],
ingredients['water'],
ingredients['salt'],
ingredients['shortening'])
kneaded_dough = knead(dough)
risen_dough = prove(kneaded_dough)
# Fazer o molho
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)
Nomeação ruim
def check(x, y=100):
return x >= y
Nomeação descritiva
def is_boiling(temp, boiling_point=100):
return temp >= boiling_point
Exagerando
def check_if_temperature_is_above_boiling_point(
temperature_to_check,
celsius_water_boiling_point=100):
return temperature_to_check >= celsius_water_boiling_point
Princípios de Engenharia de Software em Python