emrevarol.com

Nyenzo za Mhadhara

Mazoea Bora ya Uandishi wa Msimbo na Ukaguzi Madhubuti wa Msimbo

A2SV - University of Rwanda

Tazama Uwasilishaji

Orodha ya Ukaguzi wa Msimbo ya A2SV

Kiwango cha dhahabu. Makundi kumi ya kutathmini kila pull request unayokagua.

1 Uwazi na Usomekaji
Uliza
  • Je, majina ya kazi na vigezo ni wazi?
  • Je, ninaweza kuelewa msimbo bila kukisia?
  • Je, madhumuni ni dhahiri?
  • Je, mantiki ni rahisi kufuata?
Alama za Hatari
Majina kama x, tmp, data, calc, process; mantiki iliyowekwa ndani sana; kazi kubwa zisizoeleweka
2 Ubora wa Kazi na Muundo
Uliza
  • Je, kila kazi inafanya kitu kimoja wazi?
  • Je, mantiki ya biashara imetenganishwa na athari za pembeni?
  • Je, muundo ni rahisi kujaribu?
  • Je, kuna kazi yoyote inayofanya mengi sana?
Alama za Hatari
Uthibitishaji + kuhifadhi + barua pepe + kurekodi katika kazi moja; kuchapisha ndani ya kazi za mantiki; tabia zilizowekwa kwa nguvu zilizoenea katika faili
3 Usahihi
Uliza
  • Je, msimbo unatatua tatizo kwa usahihi?
  • Je, mawazo ni dhahiri?
  • Je, hali zote zimeshughulikiwa?
Alama za Hatari
Uthibitishaji wa ingizo unaokosekana; mawazo ya ufunguo wa dictionary; thamani za ajabu; kushindwa kimya
4 Hali za Pembeni
Uliza
  • Nini kitatokea na ingizo tupu?
  • Nini kitatokea na ingizo batili?
  • Nini kitatokea na funguo zinazokosekana?
  • Nini kitatokea na thamani za sifuri au hasi?
Alama za Hatari
Njia ya furaha tu iliyozingatiwa; hakuna ukaguzi wa kujilinda unapohitajika
5 Majaribio
Uliza
  • Je, majaribio yamejumuishwa?
  • Je, majaribio yanakagua matokeo halisi?
  • Je, hali za pembeni zimeshughulikiwa?
  • Je, majaribio haya yangeweza kunasa kurudi nyuma?
Alama za Hatari
Jaribio moja tu; madai dhaifu kama > 0; hakuna hali za ingizo batili; hakuna majaribio ya mantiki iliyobadilishwa
6 Kurudia
Uliza
  • Je, mantiki imerudiwa?
  • Je, mantiki ya pamoja inaweza kutolewa?
  • Je, sheria za biashara zimerudiwa katika maeneo mengi?
Alama za Hatari
Fomula zilizorudiwa; vitalu vya masharti vilivyorudiwa; thamani zilizowekwa kwa nguvu zilizorudiwa
7 Ushughulikiaji wa Makosa
Uliza
  • Je, makosa yanashughulikiwa kwa uwazi?
  • Je, msimbo unashindwa kwa njia inayoeleweka?
  • Je, hali batili zinaonekana?
Alama za Hatari
Kurudisha None bila maelezo; exceptions zilizomezwa; njia za kushindwa zilizofichwa
8 Udumishaji
Uliza
  • Je, hii itakuwa rahisi kupanua baadaye?
  • Je, mhandisi mwingine ataweza kubadilisha hii kwa usalama?
  • Je, hii inafanya codebase kuwa safi zaidi au chafu zaidi?
Alama za Hatari
Sheria zilizowekwa kwa nguvu; PR kubwa kupita kiasi; mantiki iliyounganishwa sana
9 Ubora wa Hifadhi
Uliza
  • Je, muundo wa repo ni wazi?
  • Je, README ni yenye manufaa?
  • Je, mhandisi mpya anaweza kuendesha mradi kwa urahisi?
  • Je, utegemezi unaonekana?
Alama za Hatari
Hakuna maelekezo ya usanidi; README dhaifu; mpangilio wa kuchanganya; saraka ya majaribio inayokosekana
10 Ubora wa PR
Uliza
  • Je, PR imelenga?
  • Je, kichwa kinaelezea?
  • Je, maelezo yanasaidia?
  • Je, ukubwa wa mabadiliko ni wa busara?
Alama za Hatari
Vichwa visivyo wazi; hakuna maelezo; mabadiliko yasiyohusiana yaliyochanganywa; PR kubwa sana

Violezo vya Maoni ya Ukaguzi

Maneno ya kitaalamu kwa hali za kawaida za ukaguzi. Tumia hizi kama mwanzo.

Uteuzi wa Majina
"Je, tunaweza kubadilisha jina la kazi hii ili lionyeshe madhumuni yake vizuri zaidi?"
"Jina la kigezo hiki linaonekana la jumla sana. Je, tunaweza kulifanya lieleze zaidi?"
Mantiki
"Je, tunaweza kurahisisha sharti hili ili kuboresha usomekaji?"
"Je, itakuwa na maana kutoa mantiki hii kwenye kazi msaidizi?"
Majaribio
"Je, tunaweza kuongeza jaribio la hali ya ingizo tupu?"
"Je, tunaweza kudai thamani halisi inayotarajiwa hapa badala ya kutumia ukaguzi mpana?"
Muundo
"Kazi hii inaonekana kufanya mambo mengi. Je, tunaweza kutenganisha majukumu?"
"Je, kugawanya hii kuwa kazi ndogo zaidi kungefanya iwe rahisi kujaribu na kukagua?"
Hali za Pembeni
"Nini kitatokea ikiwa ufunguo huu unakosekana?"
"Je, tunapaswa kuthibitisha ingizo kabla ya kulisindika?"
Ubora wa PR
"Je, unaweza kuongeza maelezo mafupi ya PR yanayoelezea mabadiliko na jinsi yanavyopaswa kujaribiwa?"

Onyesho la Moja kwa Moja: Kagua Pull Request Hii

PR yenye makosa kwa makusudi kwa mazoezi. Je, unaweza kupata matatizo?

Branch: feature/cart-total-update
Kichwa: "Update cart calculation logic"
Maelezo: "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
Mwongozo wa Ukaguzi - Matatizo ya Kupata
Matatizo ya Kiwango cha PR
  • Kichwa cha PR kisichowazi: "Update cart calculation logic" haielezi kilichobadilika
  • Maelezo ni ya jumla na hayasaidii
  • Hakuna mpango wa majaribio au maelekezo kwa wakaguzi
Matatizo ya Kiwango cha Msimbo
  • Jina la kazi calc ni la jumla sana - linapaswa kuwa calculate_cart_total
  • Kigezo d hakiko wazi - kinapaswa kuwa discount_enabled
  • Vigezo t na i havielezi
  • Nambari za ajabu: 0.9, 0.1, 0.05 zinapaswa kuwa thamani zilizopewa jina
  • Vitalu vya if vilivyowekwa ndani sana kwa ukaguzi wa premium - tumia .get()
  • process_cart ina athari ya pembeni (print) iliyochanganywa na mantiki ya biashara
  • Hakuna uthibitishaji wa ingizo kwa items au user
  • Kigezo cha Boolean d=False kinachopitishwa kwa nafasi kama True kinachanganya
Matatizo ya Kiwango cha Majaribio
  • Jaribio moja tu kwa moduli nzima
  • Dai dhaifu: > 0 halithibitishi usahihi
  • Hakuna majaribio ya hali za pembeni (orodha tupu, funguo zinazokosekana, mtumiaji asiye premium)
  • Haijaribu process_cart
Matatizo ya Kiwango cha Repo
  • README kimsingi ni tupu - hakuna maelekezo ya usanidi, hakuna maelezo
  • Hakuna taarifa ya jinsi ya kuendesha majaribio
Toleo Lililoboreshwa - 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

Kazi ya Nyumbani

Kazi ya Ukaguzi wa PR: Kagua Kama Mhandisi Mtaalamu

Uwasilishaji wako lazima ujumuishe:

  • 10 jumla Maoni ya ukaguzi kiwango cha chini
  • 3 chini Maoni yanayohusiana na uteuzi wa majina
  • 2 chini Maoni yanayohusiana na majaribio
  • 2 chini Maoni ya muundo au jukumu la kazi
  • 1 chini Maoni ya ubora wa hifadhi
  • 1 chini Pendekezo la uboreshaji

Muundo wa Uwasilishaji

File: src/orders.py
Line/Area: calc function
Comment: Jina la kazi ni la jumla sana. Je, tunaweza
kulibadilisha kuwa calculate_order_total kwa uwazi?

File: tests/test_orders.py
Line/Area: test_calc
Comment: Jaribio hili linakagua tu kuwa matokeo ni makubwa
kuliko sifuri. Je, tunaweza kudai thamani halisi inayotarajiwa badala yake?

Kagua faili zifuatazo:

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.
Wahandisi wazuri hawafanyi msimbo ufanye kazi tu. Wanafanya msimbo uwe unaoeleweka, unaojaribiwa, unaokaguliwa, na unaoweza kuaminiwa.
Nukuu ya Siku
"Msimbo ambao huna muda wa kusafisha leo unakuwa tatizo linalomiliki timu yako kesho."