Melhores Práticas de Programação e Revisão Eficaz de Código
Ver ApresentaçãoO padrão ouro. Dez categorias para avaliar cada pull request que você revisar.
x, tmp, data, calc, process; lógica profundamente aninhada; funções grandes e pouco claras> 0; nenhum caso de entrada inválida; nenhum teste para lógica alteradaNone sem explicação; exceções engolidas; modos de falha ocultosFrases profissionais para cenários comuns de revisão. Use como ponto de partida.
Um PR deliberadamente com falhas para prática. Você consegue encontrar os problemas?
def calc(items, user, d=False):
t = 0
for i in items:
if i["type"] == "book":
t += i["price"] * 0.9
else:
t += i["price"]
if d:
t = t - t * 0.1
if user is not None:
if "is_premium" in user:
if user["is_premium"] == True:
t = t - t * 0.05
return t
def process_cart(items, user):
total = calc(items, user, True)
print("cart processed")
return totalfrom src.cart import calc
def test_calc():
items = [{"type": "book", "price": 100}]
user = {"is_premium": True}
assert calc(items, user, True) > 0# Cart Project
cart logiccalc é muito genérico - deveria ser calculate_cart_totald é obscuro - deveria ser discount_enabledt e i não são descritivas0.9, 0.1, 0.05 deveriam ser constantes nomeadasif profundamente aninhados para verificação premium - use .get()process_cart tem efeito colateral (print) misturado com lógica de negóciod=False passado posicionalmente como True é confuso> 0 não verifica a correçãoprocess_cartBOOK_DISCOUNT_RATE = 0.10
GENERAL_DISCOUNT_RATE = 0.10
PREMIUM_DISCOUNT_RATE = 0.05
def calculate_item_price(item):
item_type = item["type"]
price = item["price"]
if item_type == "book":
return price * (1 - BOOK_DISCOUNT_RATE)
return price
def apply_general_discount(total_price, discount_enabled):
if not discount_enabled:
return total_price
return total_price * (1 - GENERAL_DISCOUNT_RATE)
def apply_premium_discount(total_price, user):
if not user or not user.get("is_premium", False):
return total_price
return total_price * (1 - PREMIUM_DISCOUNT_RATE)
def calculate_cart_total(items, user, discount_enabled=False):
total_price = 0
for item in items:
total_price += calculate_item_price(item)
total_price = apply_general_discount(total_price, discount_enabled)
total_price = apply_premium_discount(total_price, user)
return total_price
def process_cart(items, user):
total_price = calculate_cart_total(items, user, discount_enabled=True)
return total_priceTarefa de Revisão de PR: Revise Como um Engenheiro Profissional
Sua submissão deve incluir:
File: src/orders.py Line/Area: calc function Comment: The function name is too generic. Could we rename it to calculate_order_total for clarity? File: tests/test_orders.py Line/Area: test_calc Comment: This test only checks that the result is greater than zero. Could we assert the exact expected value instead?
Revise os seguintes arquivos:
def calc(items, vip=False):
total = 0
for i in items:
if i["type"] == "book":
total += i["price"] * 0.9
elif i["type"] == "electronics":
total += i["price"]
else:
total += i["price"]
if vip == True:
total = total - total * 0.05
return total
def checkout(items, user):
total = calc(items, user["vip"])
print("checking out order...")
print("total is", total)
return {"ok": True, "total": total}def f(x):
if x == None:
return False
return Truefrom src.orders import calc
def test_calc():
items = [{"type": "book", "price": 100}]
assert calc(items, False) > 0# Orders
Run it with python.Grandes engenheiros não apenas fazem o código funcionar. Eles tornam o código compreensível, testável, revisável e confiável.