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
Σύγκριση:
| Καλές | Κακές |
|---|---|
| Αναγνωσιμότητα | Ανεξήγητος ("σπαγγέτι", "λωρίδα") |
| Κατανοητά ονόματα μεταβλητών και συναρτήσεων | Μη κατανοητά ονόματα |
| Αποσύνθεση | Μονολιθικές συναρτήσεις |
| Έλλειψη παγκόσμιων μεταβλητών | Υπερβολική χρήση παγκόσμιων μεταβλητών |
| Ραφινά διαχείριση σφαλμάτων | Έλλειψη διαχείρισης σφαλμάτων |
| Σχόλια εκεί που χρειάζεται | Έλλειψη σχολίων |
| Συνοχή στυλ | Μη συνεπές στυλ |
| Ελαχιστοποίηση διπλότυπου κώδικα | Διπλότυπος κώδικας |