Sobes.tech
Middle

Millised on protseduurstiilis koodi hindamise kriteeriumid, mida võib pidada heaks ja mida halvaks?

sobes.tech AI

Vastus AI-lt

Labi kritēriji:

  • Lasāmība: Cik viegli ir saprast, ko dara kods, lasot to no augšas uz leju.
  • Mainīgo un funkciju saprotamība: Izmanto aprakstošus mainīgo un funkciju nosaukumus, kas atspoguļo to mērķi un loģiku.
  • Dekompresija: Sarežģītu uzdevumu sadalīšana mazākās, pārvaldāmās funkcijās. Katra funkcija jāveic viena konkrēta uzdevuma izpilde.
  • Globālo mainīgo neesamība: Minimāla globālo mainīgo izmantošana, lai samazinātu atkarības un blakusparādības.
  • Kļūdu apstrāde: Skaidra iespējamās kļūdas un izņēmumu apstrāde.
  • Komentāri: Tie ir tur, kur kods nav acīmredzams vai lai paskaidrotu loģiku.
  • Stila saskaņotība: Vienots formatēšanas un nosaukumu stils visā projektā.
  • Koda dublēšanas minimizēšana: Izvairīšanās no vienādu koda bloku atkārtošanas.
# Labs piemērs dekompozīcijai un skaidriem nosaukumiem
def calculate_average(numbers):
    """Aprēķina skaitļu saraksta vidējo vērtību."""
    if not numbers:
        return 0
    total = sum(numbers)
    return total / len(numbers)

def process_data(data):
    # Pieņemam, ka 'data' ir saraksts ar skaitļu sarakstiem
    averages = []
    for row in data:
        avg = calculate_average(row)
        averages.append(avg)
    return averages

Slikti kritēriji:

  • Nepārredzamība: Kods ir grūti saprotams, jo ir sarežģīta loģika, nepiemēroti nosaukumi vai trūkst struktūras.
  • "Spageti-kods": Daudzas pārejas un atkarības, kas padara izpildes secību grūti izsekojamu.
  • "Lapas"-kods: Garas, monolītiskas funkcijas, kas veic daudz nesasaistītu uzdevumu.
  • Magiskie skaitļi: Neizskaidrotas skaitliskas konstantes kodā.
  • Kļūdu apstrādes trūkums: Programma "pazūd" pie neparedzētām situācijām.
  • Koda dublēšana: Vienādas vai ļoti līdzīgas koda daļas atkārtošana dažādās vietās.
  • Stila neatbilstība: Dažādi formatēšanas un nosaukumu stili apgrūtina lasāmību.
# Slikts piemērs "lapas" un magiskajiem skaitļiem
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

Salīdzinājums:

Labi kritēriji Slikti kritēriji
Lasāmība Nepārredzamība ("spageti", "lapas")
Saprotami mainīgie un funkcijas Nesanākoši nosaukumi
Dekompresija Monolītiskas funkcijas
Nav globālo mainīgo Pārmērīga globālo mainīgo izmantošana
Skaidra kļūdu apstrāde Kļūdu apstrādes trūkums
Komentāri tur, kur nepieciešams Komentāru trūkums
Saskaņots stils Nesaskaņots stils
Dublēšanas minimizēšana Koda dublēšana