emrevarol.com

Ibikoresho by'Amasomo

Imyitwarire Myiza yo Gukora Kode n'Isuzuma ry'Ikode Ryiza

A2SV - University of Rwanda

Reba Igitabo

Urutonde rwo Gusuzuma Ikode rwa A2SV

Urugero rw'inzira nziza. Ibyiciro icumi byo gusuzuma buri pull request usuzuma.

1 Kugaragara no Gusomeka
Baza
  • Amazina y'imikorere n'ibihinduka arumvikana?
  • Nshobora gusobanukirwa ikode ntacyo nitiranya?
  • Intego iragaragara?
  • Uburyo bwo gutekereza buroroshye gukurikira?
Ibimenyetso Bibi
Amazina nka x, tmp, data, calc, process; uburyo bwimbitse cyane; imikorere minini idakosoye
2 Imikorere n'Ubwubatsi Bwiza
Baza
  • Buri mikorere ikora ikintu kimwe kigaragara?
  • Uburyo bw'ubucuruzi bwatandukanyijwe n'ingaruka?
  • Ubwubatsi buroroshye kugerageza?
  • Hari imikorere ikora ibintu byinshi cyane?
Ibimenyetso Bibi
Kwemeza + kubika + ubutumwa bw'imeri + kwandika amateka muri imikorere imwe; gutangaza imbere mu mikorere y'uburyo; imyitwarire yanditswe mu ndanga zitandukanye
3 Ukuri
Baza
  • Ikode ikemura ikibazo mu buryo bwiza?
  • Ibitekerezo biragaragara?
  • Ibihe byose birakurikiranywe?
Ibimenyetso Bibi
Nta kwemeza inyandiko; ibitekerezo ku mfunguzo z'inkoranyamagambo; indangagaciro zitazwi; gutsindwa mu ibanga
4 Ibihe Bidasanzwe
Baza
  • Bibaho iki iyo inyandiko irimo ubusa?
  • Bibaho iki iyo inyandiko itari nziza?
  • Bibaho iki iyo imfunguzo zibura?
  • Bibaho iki iyo indangagaciro ari zeru cyangwa mbi?
Ibimenyetso Bibi
Inzira nziza gusa yatekereje; nta kwemeza aho bikenewe
5 Igerageza
Baza
  • Igerageza rirarimo?
  • Igerageza rigenzura ibisubizo nyakuri?
  • Ibihe bidasanzwe birakurikiranywe?
  • Ibi bigerageza bishobora gufata amakosa?
Ibimenyetso Bibi
Igerageza rimwe gusa; kwemeza gukomeye nka > 0; nta bihe by'inyandiko zitari nziza; nta gerageza ku buryo bwahinduwe
6 Gusubiramo
Baza
  • Uburyo burasubirwamo?
  • Uburyo busanganwe bushobora gukurwa?
  • Amategeko y'ubucuruzi arasubiranamo ahantu henshi?
Ibimenyetso Bibi
Formile zisubirwamo; bloke z'ibisabwa zisubirwamo; indangagaciro zanditswe zisubirwamo
7 Gucunga Amakosa
Baza
  • Amakosa yacunzwe neza?
  • Ikode itsindwa mu buryo busobanuka?
  • Imimerere itari nziza iragaragara?
Ibimenyetso Bibi
Gusubiza None nta gisobanuro; gufata amakosa atagaragara; uburyo bwo gutsindwa buhishwe
8 Kubungabunga
Baza
  • Ibi bizaba byoroshye kwagura nyuma?
  • Umujyanama wundi ashobora guhindura ibi nta nkozi?
  • Ibi bituma ikode iba isukuye cyangwa isesaguye?
Ibimenyetso Bibi
Amategeko yanditswe mu ndanga; PR nini cyane; uburyo bufatanije cyane
9 Ubwiza bwa Repository
Baza
  • Imiterere ya repo iragaragara?
  • README ifite akamaro?
  • Umujyanama mushya ashobora gukoresha porogaramu byoroshye?
  • Ibisabwa biragaragara?
Ibimenyetso Bibi
Nta nzira zo gutangira; README idakomeye; imiterere ivurungana; nta dosiye y'igerageza
10 Ubwiza bwa PR
Baza
  • PR irashyizweho?
  • Umutwe urasobanura?
  • Ibisobanuro bifasha?
  • Ingano y'ihinduka irakwiye?
Ibimenyetso Bibi
Imitwe idakosoye; nta gisobanuro; ihinduka ritandukanye rivanze; PR nini cyane

Ingero z'Ibitekerezo byo Gusuzuma

Imvugo y'umwuga ku bihe bisanzwe byo gusuzuma. Koresha ibi nk'intangiriro.

Kwita Amazina
"Twashobora guhindura izina ry'iyi mikorere kugira ngo igaragaze intego yayo neza?"
"Iri zina ry'igihinduka risa nk'iry'isanzwe cyane. Twashobora kurikosoranya?"
Uburyo
"Twashobora gukorohereza ibi bisabwa kugira ngo bisomeke neza?"
"Byaba byiza dukuye ubu buryo mu mikorere y'umufasha?"
Igerageza
"Twashobora kongeraho igerageza ku nyandiko irimo ubusa?"
"Twashobora kwemeza indangagaciro nyakuri itegerejwe aho gukoresha igenzura rusange?"
Imiterere
"Iyi mikorere isa nk'aho ikora ibintu byinshi. Twashobora gutandukanya inshingano?"
"Gutandukanya mu mikorere mito byakorohereza kugerageza no gusuzuma?"
Ibihe Bidasanzwe
"Bibaho iki iyo iyi mfunguzo ibura?"
"Tugomba kwemeza inyandiko mbere yo kuyikoresha?"
Ubwiza bwa PR
"Washobora kongeraho ibisobanuro bigufi bya PR bisobanura ihinduka n'uburyo bwo kurigerageza?"

Igaragaza Rikora: Suzuma Iyi Pull Request

PR ifite amakosa ku bushake kugira ngo wiyitoze. Ushobora kubona ibibazo?

Ishami: feature/cart-total-update
Umutwe: "Update cart calculation logic"
Ibisobanuro: "Updated the cart calculation logic and added support for discount."
src/cart.py
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 total
tests/test_cart.py
from src.cart import calc def test_calc(): items = [{"type": "book", "price": 100}] user = {"is_premium": True} assert calc(items, user, True) > 0
README.md
# Cart Project cart logic
Igitabo cy'Isuzuma - Ibibazo Ugomba Kubona
Ibibazo bya PR
  • Umutwe wa PR udakosoye: "Update cart calculation logic" ntibisobanura icyahindutse
  • Ibisobanuro ni rusange kandi ntibifasha
  • Nta gahunda yo kugerageza cyangwa amabwiriza ku basuzuma
Ibibazo by'Ikode
  • Izina ry'imikorere calc ni rusange cyane - rigomba kuba calculate_cart_total
  • Ibihinduka d ntibigaragara - bigomba kuba discount_enabled
  • Ibihinduka t na i ntibisobanura
  • Imibare idafite amazina: 0.9, 0.1, 0.05 igomba kuba ari indangagaciro zifite amazina
  • Bloke za if zimbitse cyane ku kugenzura premium - koresha .get()
  • process_cart ifite ingaruka z'inyuma (print) ivanze n'uburyo bw'ubucuruzi
  • Nta kwemeza inyandiko ku bintu cyangwa umukoresha
  • Ibihinduka bya boolean d=False byoherejwe nka True biteranya
Ibibazo by'Igerageza
  • Igerageza rimwe gusa ku gice cyose
  • Kwemeza gukomeye: > 0 ntikugenzura ukuri
  • Nta gerageza ry'ibihe bidasanzwe (urutonde rurimo ubusa, imfunguzo zibura, umukoresha utari premium)
  • Ntibigerageza process_cart
Ibibazo bya Repo
  • README irimo ubusa - nta nzira zo gutangira, nta bisobanuro
  • Nta makuru ku buryo bwo gukoresha igerageza
Verisiyo Yavuguruwe - cart_improved.py
src/cart_improved.py
BOOK_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_price

Umukoro wo mu Rugo

Umukoro wo Gusuzuma PR: Suzuma Nk'Umujyanama w'Umwuga

Ibyo wohereza bigomba kuba birimo:

  • 10 yose Ibitekerezo byo gusuzuma nibura
  • 3 nibura Ibitekerezo bijyanye n'amazina
  • 2 nibura Ibitekerezo bijyanye n'igerageza
  • 2 nibura Ibitekerezo ku bwubatsi cyangwa inshingano z'imikorere
  • 1 nibura Igitekerezo ku bwiza bwa repository
  • 1 nibura Igitekerezo cyo kongera kubaka

Uburyo bwo Kohereza

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?

Suzuma dosiye zikurikira:

src/orders.py
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}
src/utils.py
def f(x): if x == None: return False return True
tests/test_orders.py
from src.orders import calc def test_calc(): items = [{"type": "book", "price": 100}] assert calc(items, False) > 0
README.md
# Orders Run it with python.
Abajyanama beza ntibakora gusa ikode ikora. Bakora ikode isobanuka, igeragezeka, isuzumika, kandi yizewe.
Ijambo ry'Umunsi
"Ikode udashobora gusukura uyu munsi ni yo izaba ikibazo kiyobora itsinda ryawe ejo."