Προς το περιεχόμενο

C/C++ goto αντι για function


NewProject

Προτεινόμενες αναρτήσεις

Δημοσ.

Η πρώτη μου επαφή με την goto (σαν concept) ήταν στο βιβλίο αναπτυξης εφαρμογών οπου και παρουσιαζόταν σαν το "Μαύρο πρόββατο του προγραμματισμού", όπου αν θυμάμαι καλά η γενικότερη νοοτροπία του άρθρου ήταν να αποφεύγεται η χρήση της.

 

Η συγκεκριμένη νοοτροπία (αποφύγετε την ή `η υπαρξη goto επάγεται κακογραμμένο πρόγραμμα`) συνεχίστηκε και απο τους ακαδημαικούς καθηγητές καθόλη την διάρκεια της φοίτησης.

 

Σαν αποτέλεσμα η "δαιμονοποίηση" της και η μη χρηση της. Παρόλα αυτά αναθεώρησα την παραπάνω λογική με την καθημερινή τριβή σε production grade κώδικα.

 

Η αλήθεια ειναι οτι σε ορισμένες περιπτώσεις η goto είναι απίστευτα βολική. Οπως αρκετοί εως τώρα έχουν επισημάνει σχεδόν πάντα η χρήση της goto μπορεί να αντικατασταθεί είτε με έναν ποιο προσεκτικό δομημένο σχεδιασμό είτε με την χρήση ενος function / method κτλπ.

 

Καλό ειναι όμως να έχουμε υπόψην ότι σε συγκεκριμένες περιπτώσεις (πχ performance wise) η χρήση της goto είναι "φθηνότερη" απο την εισαγωγή ενός function / method (καθότι σε assembly μεταφράζεται σαν jmp).

 

Οσον αφορά το κώδικας spaghetti αυτο έχει να κάνει περισσότερο με τον προγραμματιστή παρά με την goto. Φυσικά ένας μακαρονάς προγραμματιστής άν έχει στην κουζίνα του την goto θα κάνει μακαρονάδα σπέσιαλ!

  • Απαντ. 31
  • Δημ.
  • Τελ. απάντηση
Δημοσ.
Σαν αποτέλεσμα η "δαιμονοποίηση" της και η μη χρηση της. Παρόλα αυτά αναθεώρησα την παραπάνω λογική με την καθημερινή τριβή σε production grade κώδικα.

 

Η αλήθεια ειναι οτι σε ορισμένες περιπτώσεις η goto είναι απίστευτα βολική. Οπως αρκετοί εως τώρα έχουν επισημάνει σχεδόν πάντα η χρήση της goto μπορεί να αντικατασταθεί είτε με έναν ποιο προσεκτικό δομημένο σχεδιασμό είτε με την χρήση ενος function / method κτλπ.

 

Καλό ειναι όμως να έχουμε υπόψην ότι σε συγκεκριμένες περιπτώσεις (πχ performance wise) η χρήση της goto είναι "φθηνότερη" απο την εισαγωγή ενός function / method (καθότι σε assembly μεταφράζεται σαν jmp).

Όπως τα λέει ο κύριος ακριβώς.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...