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 |