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

Σύγκριση:

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