Middle
Процедуралык стильдеги кодду ба баалоо критерийлери кайсысы жакшы, кайсысы жаман деп эсептей аласыз?
sobes.tech AI
AIден жооп
Жакшы критерийлер:
- Окууучулук: Кодду жогору-төмөн окуп туруп, эмне кылып жатканын канчалык оңой түшүнүү.
- Өзгөрмө жана функциялардын түшүнүктүү аттары: Алардын максатын жана логикасын чагылдырган сүрөттөмөлүү аттарды колдонуу.
- Декомпозиция: Кыйынчылык жаратуучу тапшырмаларды кичинекей, башкарылуучу функцияларга бөлүү. Ар бир функция конкреттүү бир тапшырманы аткарышы керек.
- Глобалдык өзгөрмөлөрдүн жоктугу: Тармактык көзкарандылыктарды жана жанама таасирлерди азайтуу үчүн глобалдык өзгөрмөлөрдү колдонбоо.
- Ката жана катачылыктарды иштетүү: Ачык жана так ката жана исключенияларды иштетүү.
- Комментарийлер: Код түшүнүксүз же логиканы түшүндүрүү үчүн керек болгон жерлерде.
- Стильдин туруктуулугу: Бардык долбоор боюнча бирдей форматтоо жана аталыш стили.
- Кодду кайталоодон сактануу: Бирдей же окшош блокторду кайталабоо.
# Жакшы мисал — декомпозиция жана түшүнүктүү аттар
def calculate_average(numbers):
"""Сандар тизмесинин орточо маанисин эсептөө."""
if not numbers:
return 0
total = sum(numbers)
return total / len(numbers)
def process_data(data):
# 'data' — сандар тизмелеринин тизмеси деп болжойбуз
averages = []
for row in data:
avg = calculate_average(row)
averages.append(avg)
return averages
Жаман критерийлер:
- Түшүнүксүз: Код түшүнүү кыйын, ал тургай логика аралаш жана аттар туура эмес, структура жок.
- "Шпагетти-код": Бир нече өтүүлөр жана көзкарандылыктар, аткаруу тартибин көзөмөлдөө кыйын.
- "Лаззати"-код: Узун, монолиттик функциялар, ар кандай тапшырмаларды аткарат.
- "Сиқырдуу" сандар колдонуу: Түсүндүрмөсүз сандык константтар.
- Ката жана катачылыктарды иштетүүнүн жоктугу: Программа күтүүсүз кырдаалдарда үзүлүп калат.
- Кодду кайталоо: Бирдей же окшош блоктор ар башка жерлерде кайталанат.
- Стильдин бузулушу: Форматтоо жана аталыштар ар түрдүү, окууну кыйындатат.
# Жаман мисал — "лозун" жана "сиқырдуу" сандар
def process(d):
t = 0
for r in d:
s = 0
c = 0
for n in r:
s += n
c += 1
if c > 0:
t += s / c
return t / len(d) if len(d) > 0 else 0
Салыштыруу:
| Жакшы | Жаман |
|---|---|
| Окууучулук | Түшүнүксүз ("шпагетти", "лозун") |
| Түшүнүктүү аттар | Түшүнүксүз аттар |
| Декомпозиция | Монолиттик функциялар |
| Глобалдык өзгөрмөлөрдүн жоктугу | Атаандаш глобалдык өзгөрмөлөрдү көп колдонуу |
| Ачык ката иштетүү | Жабык ката иштетүү |
| Комментарийлер керек жерлерде | Комментарийлер жок |
| Стильдин туруктуулугу | Стильдин бузулушу |
| Кайталанган кодду азайтуу | Кайталанган код |