Sobes.tech
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

Салыштыруу:

Жакшы Жаман
Окууучулук Түшүнүксүз ("шпагетти", "лозун")
Түшүнүктүү аттар Түшүнүксүз аттар
Декомпозиция Монолиттик функциялар
Глобалдык өзгөрмөлөрдүн жоктугу Атаандаш глобалдык өзгөрмөлөрдү көп колдонуу
Ачык ката иштетүү Жабык ката иштетүү
Комментарийлер керек жерлерде Комментарийлер жок
Стильдин туруктуулугу Стильдин бузулушу
Кайталанган кодду азайтуу Кайталанган код