Πρόσφατα έπεσα πάνω στο άρθρο
“Cognitive load is what matters“
και μου τράβηξε ιδιαίτερα το ενδιαφέρον. Ο συγγραφέας θίγει ένα θέμα που συχνά παραβλέπεται στην ανάπτυξη λογισμικού.
Το γνωστικό φορτίο είναι η πνευματική προσπάθεια που απαιτείται για την ολοκλήρωση ενός έργου λογισμικού και μπορεί να είναι εγγενής, που έχει να κάνει με τη φυσική δυσκολία της ίδιας της εργασίας ή εξωγενής, λόγω της πολυπλοκότητας από τον τρόπο παρουσίασης των πληροφοριών και οφείλεται σε παράγοντες που δεν σχετίζονται άμεσα με την εργασία.
Το κείμενο περιλαμβάνει πρακτικά παραδείγματα για το πώς συγκεκριμένες τεχνικές αυξάνουν το το γνωστικό φορτίο και ποιοί είναι οι τρόποι αντιμετώπισης. Περιληπτικά, κάποιες από τις τεχνικές που προτείνονται είναι:
- Αποφυγή εμφωλευμένων
ifκαι πολύπλοκων συνθηκών (complex conditionals) - Αποφυγή υπερβολικής κληρονομικότητας
- Αποφυγή πάρα πολλών μικρών μεθόδων, κλάσεων και ενοτήτων κώδικα
- Ορθή εφαρμογή της Αρχής Ενιαίας Ευθύνης (Single Responsibility Principle)
- Ορθή εφαρμογή της Αρχής DRY (Don’t Repeat Yourself)
- Ορθή εφαρμογή του Domain-Driven Design (DDD)
- Χρήση γλωσσών με λιγότερα χαρακτηριστικά
- Διαχείριση HTTP response status codes
- Αποφυγή ισχυρών εξαρτήσεων από συγκεκριμένα frameworks
Διαβάζοντας το άρθρο γίνεται αντιληπτό πόσο εύκολα μπορεί ο προγραμματιστής να επιβαρύνεται άσκοπα με γνωστικό φορτίο που μπορεί να αποφύγει, εισάγοντας χωρίς να το αντιλαμβάνεται περιττή πολυπλοκότητα στο έργο ανάπτυξης λογισμικού.
Η απλότητα δεν κάνει μόνο τον κώδικα πιο καθαρό και εύχρηστο αλλά και την ομάδα πιο αποδοτική, διευκολύνοντας τη συντήρηση και την ενσωμάτωση νέων μελών.
