Skip to main content

Τι είναι ένας απρόσιτος κωδικός;

Ο κώδικας που δεν μπορεί να χρησιμοποιηθεί είναι ο κώδικας προγραμματισμού που δεν μπορεί να εκτελεστεί σε οποιοδήποτε πλαίσιο.Υπάρχουν διάφοροι λόγοι για τους οποίους αυτό μπορεί να συμβεί αυτό και πολλές γλώσσες υπολογιστών δεν επιτρέπουν την εκτέλεση ενός προγράμματος εάν ένα τμήμα του κώδικα είναι απρόσιτη.Τα προβλήματα που παράγονται από τον απρόσιτο κώδικα μπορούν να καθοριστούν είτε με την αφαίρεση του προβληματικού τμήματος του κώδικα είτε για την επανεγγραφή του κώδικα για να γίνει ξανά το τμήμα.Οποιαδήποτε σημαντική διαταραχή στη ροή του προγράμματος έχει τη δυνατότητα να προκαλέσει μια ενότητα κώδικα που δεν μπορεί να είναι απρόσιτη.Για παράδειγμα, η τυχαία δημιουργία ενός άπειρου βρόχου μπορεί να καταστήσει όλο τον κώδικα που έρχεται μετά από αυτό απρόσιτο, επειδή δεν θα υπήρχε κανένας τρόπος να ξεσπάσουμε ποτέ από το βρόχο και να συνεχίσουμε το πρόγραμμα.Ένας άλλος τρόπος που μπορεί να συμβεί αυτό είναι εάν μια λειτουργία κωδικοποιείται για να επιστρέψει πριν εκτελεστεί όλο τον κώδικα.Σε αυτή την περίπτωση, ο κώδικας μετά την δήλωση επιστροφής θα ήταν απρόσιτη.Πρώτον, η ακατάλληλη διαχείριση των δομών ελέγχου κατά τη σύνταξη ακατέργαστου κώδικα μπορεί να οδηγήσει σε τμήματα κώδικα που είναι απρόσιτα.Δεύτερον, τα σφάλματα στις δομές ελέγχου που δεν είναι προφανείς κατά τη διάρκεια της διαδικασίας κωδικοποίησης, αλλά εμφανίζονται όταν εκτελείται ένα πρόγραμμα, μπορεί επίσης να προκαλέσει κώδικα που δεν μπορεί να είναι απρόσιτος.Ο πρώτος τύπος σφάλματος πηγαίνει από μια ποικιλία ονομάτων, συμπεριλαμβανομένου του σφάλματος κωδικοποίησης ή του σφάλματος σύνταξης, και ο δεύτερος τύπος σφάλματος είναι ένα σφάλμα χρόνου εκτέλεσης.Τα σφάλματα κωδικοποίησης συνήθως αλιεύονται από τους parsers ή τους μεταγλωττιστές, αλλά τα σφάλματα χρόνου εκτέλεσης μπορούν να ανιχνευθούν μόνο με δοκιμή και εκτέλεση του προγράμματος μετά την ολοκλήρωση.

Ο κώδικας που δεν μπορεί να συγχέεται με τον νεκρό κώδικα, αλλά τα δύο είναι σημαντικά διαφορετικά πράγματα.Ο νεκρός κώδικας είναι κώδικας που εκτελεί έναν συγκεκριμένο υπολογισμό, αλλά στη συνέχεια δεν κάνει τίποτα με το αποτέλεσμα του υπολογισμού.Αυτό δεν είναι το ίδιο με τον κώδικα που είναι απρόσιτο, ο οποίος δεν εκτελείται ποτέ καθόλου.Τόσο η απρόσιτη όσο και ο νεκρός κώδικας μπορούν συχνά να απομακρυνθούν από ένα πρόγραμμα χωρίς ζημία ή μπορούν να ενσωματωθούν στο πρόγραμμα, δίνοντας ιδιαίτερη προσοχή στη ροή ελέγχου των προγραμμάτων.Επιπλέον, τόσο απρόσιτο όσο και νεκροί κώδικας μπορούν συνήθως να ανιχνευθούν κατά τη διάρκεια της κωδικοποίησης και πριν από την εκτέλεση ενός προγράμματος

Παρά τον φαινομενικά τρομερό ορισμό του, ο απρόσιτος κώδικας είναι συχνά σχετικά εύκολος.Η παρουσία του απρόσιτου κώδικα υποδεικνύει πάντα ένα πρόβλημα ροής ελέγχου, οπότε η προσεκτική ανάλυση μιας ροής ελέγχου προγραμμάτων θα προσδιορίζει συνήθως τον κωδικό που παραβιάζει τη σύντομη σειρά.Εάν μια ροή ελέγχου προγραμμάτων παρακολουθείται προσεκτικά καθ 'όλη τη διάρκεια της διαδικασίας κωδικοποίησης, η πιθανότητα δημιουργίας απρόσιτου κώδικα είναι πολύ χαμηλή.