Είναι κακή πρακτική να χρησιμοποιούμε continue; και break; στα προγράμματά μας;

Είναι κακή πρακτική να χρησιμοποιούμε continue και break στα προγράμματά μας;

Αποτελέσματα της δημοσκόπησης (Ψήφισαν 8)
  • Καλή πρακτική

    Ψήφοι: 4 50,0%
  • Κακή πρακτική

    Ψήφοι: 3 37,5%
  • ΔΞ/ΔΑ

    Ψήφοι: 1 12,5%

  • Σύνολο ψηφοφόρων
    8

akikos

Επιφανές μέλος

Ο Ανδρέας δεν κοινοποιεί τη δραστηριότητά του. Επαγγέλλεται Η.Μ.Μ.Υ. και μας γράφει από Αθήνα (Αττική). Έχει γράψει 13.106 μηνύματα.
Ποια είναι η αποψή σας;

Σημείωση: Το μήνυμα αυτό γράφτηκε 7 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

 
Για μενα κανει τα πραγματα περιπλοκα εχω καιρο να χρησιμοποιησω σε κατι που δεν ειναι παρα πολυ απλο

Σημείωση: Το μήνυμα αυτό γράφτηκε 7 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

 
Πιστεύω ότι κάποιες φορές το break; κάνει το πρόγραμμα πιο ευανάγνωστο καθώς μας δίνει τη δίνει δυνατότητα να μην χρησιμοποήσουμε κάποιο flag που σε διαφορετικές συνθήκες θα χρησιμοποιπύσαμε και έχει την ίδια λογική με το return στα functions.

Aφού είναι αποδεκτό να χρησιμοποιούμε return μέσα στα loop στα functions (αν είναι) γιατί δεν είναι αποδεκτό και το break;

Σημείωση: Το μήνυμα αυτό γράφτηκε 7 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

 
ο καθηγητης στο σχολειο μας ελεγε να μη χρησιμοποιουμε break

Σημείωση: Το μήνυμα αυτό γράφτηκε 7 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

 
Εγω πιστευω ειναι καλο να υπαρχουν αλλα με περιορισμο.Μην γεμισει ολο το προγραμμα με αυτα.Βεβαια εξαρταται το προγραμμα και την περιπτωση.

Σημείωση: Το μήνυμα αυτό γράφτηκε 7 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

 
Εξαρτάται την περίπτωση. Εγώ συνηθίζω να χρησιμοποιώ την continue ώστε να αποφύγω deep indentations που προκύπτουν από ένα else branch.

Σημείωση: Το μήνυμα αυτό γράφτηκε 7 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

 
Εγώ (σε PHP) χρησιμοποιώ αρκετές φορές το continue; ενώ το break; δεν μου έχει χρειαστεί και ποτέ (ή τουλάχιστον εγώ δεν το βάζω στον κώδικά μου), πέραν από χρήση στη switch :P

Σημείωση: Το μήνυμα αυτό γράφτηκε 7 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

 
Switch...Case statement χωρίς break δεν μπορώ να χρησιμοποιήσω.Είναι απλά too convenient.

Σημείωση: Το μήνυμα αυτό γράφτηκε 7 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

 
Κι εμένα δεν μου αρέσει η χρήση continue / break. Θεωρώ ότι καταλαβαίνω καλύτερα τι γράφω αν γράψω ο ίδιος τον escape mechanism, φτιάχνοντας καλύτερα το loop η βάζοντας ένα if παραπάνω. Ακόμα και τα return στη μέση της συνάρτησης μου ξινίζουν λίγο. Είναι καθαρά preference γιατί έχω δει να τα χρησιμοποιούν, αλλά εγώ έχω στο μυαλό μου αυτό το μοντέλο με το exit condition του loop που περιμένω να ισχύει όταν φύγω από εκεί, και ειδικά το break μου το σπάει.
(Επίσης μόνο σ' εμένα ενοχλεί το OCD μου το "έτρεξε τεσσερσίμισι φορές το Loop"?)

Εξαίρεση αποτελούν πράγματι τα case / switch που σε πολλές περιπτώσεις τα απαιτούν, αλλά τότε ο εγκέφαλός μου τα θεωρεί απλά μέρος της σύνταξης του case.

Σημείωση: Το μήνυμα αυτό γράφτηκε 7 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

 
Για μενα κανει τα πραγματα περιπλοκα εχω καιρο να χρησιμοποιησω σε κατι που δεν ειναι παρα πολυ απλο


Έτσι μας μάθαιναν στις σχολές αλλά βλέπω αρκετοί χρησιμοποιύν τα beaκ και continue για να δουν αν ικανοποιούνται οι συνθήκες για να προχωρήσουμε στη συνέχεια.

Παράδειγμα
Code:
for (int i = 0; i < count(eStekiUsers) ; i++){
  if (eStekiUsers[i]->age < 25) continue; 
  if (strcmp(eStekiUsers[i]->name,"Fockos")) continue;
  if (strcmp(eStekiUsers[i]->sxoli,"ΠΛΗΡΟΦΟΡΙΚΗ") || strcmp(eStekiUsers[i]->sxoli,"HMMY")) continue;
  if (eStekiUsers[i]->postCount <= 500 continue;
  if (time_exec = 600) break;

  eStekiUsers[i]->poiotikosXristis = true;
}

Μπορεί να κάνει κάποιος αυτό χωρίς continue; και break; και να ναι εξίσου ευανάγνωστο;

Σημείωση: Το μήνυμα αυτό γράφτηκε 7 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

 
Τελευταία επεξεργασία:
Έτσι μας μάθαιναν στις σχολές αλλά βλέπω αρκετοί χρησιμοποιύν τα beaκ και continue για να δουν αν ικανοποιούνται οι συνθήκες για να προχωρήσουμε στη συνέχεια.

Παράδειγμα
Code:
for (int i = 0; i < count(eStekiUsers) ; i++){
  if (eStekiUsers[i]->age < 25) continue; 
  if (strcmp(eStekiUsers[i]->name,"Fockos")) continue;
  if (strcmp(eStekiUsers[i]->sxoli,"ΠΛΗΡΟΦΟΡΙΚΗ") || strcmp(eStekiUsers[i]->sxoli,"HMMY")) continue;
  if (eStekiUsers[i]->postCount <= 500 continue;
  if (time_exec = 600) break;

  eStekiUsers[i]->poiotikosXristis = true;
}

Μπορεί να κάνει κάποιος αυτό χωρίς continue; και break; και να ναι εξίσου ευανάγνωστο;


Ενδεχομένως να έκανα κάτι τετοιο αν ήθελα να αποφύγω continue/break;
Code:
int i = 0;
while (time_exec != 600 && i <  count(eStekiUsers)) {
  bool isPoiotikosXristis = !(
                               (eStekiUsers[i]->age < 25) &&
                               (strcmp(eStekiUsers[i]->name,"Fockos")) &&
                               (strcmp(eStekiUsers[i]->sxoli,"ΠΛΗΡΟΦΟΡΙΚΗ") || strcmp(eStekiUsers[i]->sxoli,"HMMY")) &&
                               (eStekiUsers[i]->postCount <= 500)
                             );
  eStekiUsers[i]->poiotikosXristis = isPoiotikosXristis;
  i++;
}

Σημείωση: Το μήνυμα αυτό γράφτηκε 7 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

 
Μικρή διαφορά η συνάρτηση μου δεν αναφέρει ότι όποιος δεν ικανοποιεί τις παραπάνω συνθήκες αυτομάτως δεν είναι και μη ποιοτικός. Συνεπώς λείπει ένα if. Στο παράδειγμά μας το body του if (που δεν έβαλες) θα ναι μικρό αλλά σε πραγματικά project μπορεί να είναι μεγάλο κάτι που κάνει τον κώδικα δυσανάγνωστο.

Ας σουλουπώσω και το δικό μου.
Code:
for (int i = 0; i < count(eStekiUsers) ; i++){
  if (eStekiUsers[i]->age < 25  || strcmp(eStekiUsers[i]->name,"Fockos")  || strcmp(eStekiUsers[i]->sxoli,"ΠΛΗΡΟΦΟΡΙΚΗ") || strcmp(eStekiUsers[i]->sxoli,"HMMY") || (eStekiUsers[i]->postCount <= 500 )) continue; 
  if (time_exec = 600) break;
  eStekiUsers[i]->poiotikosXristis = true;
}

Υπάρχει κανένας που θεωρεί το κώδικα του post πάνω πιο ευανάγνωστο από αυτό που έγραψα εγώ εδώ.

Σημείωση: Το μήνυμα αυτό γράφτηκε 7 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

 

Χρήστες Βρείτε παρόμοια

  • Τα παρακάτω 0 μέλη και 0 επισκέπτες διαβάζουν μαζί με εσάς αυτό το θέμα:
    Tα παρακάτω 2 μέλη διάβασαν αυτό το θέμα:
  • Φορτώνει...
Back
Top