Πιο απλό αν οι δηλώσεις σημαίνουν πάντα καθαρότερο κώδικα JavaScript.

Οι δηλώσεις υπό όρους αποτελούν ουσιαστικό μέρος της JavaScript. Σας επιτρέπουν να εκτελείτε κώδικα με βάση το αν μια δεδομένη συνθήκη είναι αληθής ή ψευδής και μπορείτε να τοποθετήσετε πολλά otherif δηλώσεις (και α αλλού) να αξιολογήσει περισσότερες από μία συνθήκες.

Αλλά εδώ είναι το πρόβλημα - όταν γράφετε περίπλοκα αν...αλλιώς αλυσίδες, τα πράγματα μπορεί να γίνουν γρήγορα ακατάστατα και μπορείτε εύκολα να καταλήξετε με κώδικα που είναι δύσκολο να διαβαστεί και να κατανοηθεί.

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

Πολύπλοκο αν...αλλιώς Αλυσίδες

Όταν γράφετε σύνθετες προτάσεις σε JavaScript, είναι σημαντικό να γράφετε καθαρός, συνοπτικός και κατανοητός κώδικας. Για παράδειγμα, ρίξτε μια ματιά στο αν...αλλιώς υπό όρους αλυσίδα μέσα στην παρακάτω συνάρτηση:

λειτουργίαcanPrink(πρόσωπο) {
αν(άτομο;.ηλικία != μηδενικό
instagram viewer
) {
αν(πρόσωπο.ηλικία < 18) {
κονσόλα.κούτσουρο(«Ακόμα πολύ νέος»)
} αλλούαν(άτομο.ηλικία < 21) {
κονσόλα.κούτσουρο(«Όχι στις ΗΠΑ»)
} αλλού {
κονσόλα.κούτσουρο("Επιτρέπεται να πίνουν")
}
} αλλού {
κονσόλα.κούτσουρο("Δεν είσαι άνθρωπος")
}
}

συνθ άτομο = {
ηλικία: 22
}

canDrink (άτομο)

Η λογική εδώ είναι απλή. Ο πρώτος αν δήλωση διασφαλίζει ότι η πρόσωπο αντικείμενο έχει ένα ηλικία περιουσία (αλλιώς δεν είναι άτομο). Μέσα σε αυτό αν μπλοκ, έχετε προσθέσει ένα αν...αλλιώς...αν αλυσίδα που λέει βασικά:

Εάν το άτομο είναι μικρότερο από 18, είναι πολύ νέο για να πιει ένα ποτό. Εάν είναι κάτω των 21 ετών, εξακολουθούν να είναι κάτω από τη νόμιμη ηλικία κατανάλωσης αλκοόλ στις Ηνωμένες Πολιτείες. Διαφορετικά, μπορούν νόμιμα να πάρουν ένα ποτό.

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

Ρήτρες φρουράς

Όποτε έχετε ένα αν δήλωση που αναδιπλώνει όλο τον κώδικά σας, μπορείτε να χρησιμοποιήσετε α ρήτρα φρουράς για να αφαιρέσετε όλα τα ένθετα:

λειτουργίαcanDrinkBetter() {
αν(άτομο;.ηλικία == μηδενικό) ΕΠΙΣΤΡΟΦΗκονσόλα.κούτσουρο("Δεν είσαι άνθρωπος")

αν(πρόσωπο.ηλικία < 18) {
κονσόλα.κούτσουρο(«Ακόμα πολύ νέος»)
} αλλούαν(άτομο.ηλικία < 21) {
κονσόλα.κούτσουρο(«Όχι στις ΗΠΑ»)
} αλλού {
κονσόλα.κούτσουρο("Επιτρέπεται να πίνουν")
}
}

Στην αρχή της συνάρτησης, καθορίσατε μια ρήτρα προστασίας που δηλώνει ότι εάν δεν πληρούται αυτή η συγκεκριμένη συνθήκη, θέλετε να βγείτε από το canDrinkBetter() λειτουργήστε αμέσως (και καταγράψτε το "You're not a person" στην κονσόλα).

Αλλά εάν πληρούται η προϋπόθεση, αξιολογείτε το αν...αλλιώς αλυσίδα για να δείτε ποιο μπλοκ ισχύει. Η εκτέλεση του κώδικα σάς δίνει το ίδιο αποτέλεσμα με το πρώτο παράδειγμα, αλλά αυτός ο κώδικας είναι πιο ευανάγνωστος.

Μην χρησιμοποιείτε μία μόνο επιστροφή

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

Αλλά αυτός είναι ένας τρομερός τρόπος για να γράψετε κώδικα, επειδή σας αναγκάζει στις ίδιες τρελές καταστάσεις ένθεσης που είδαμε στο πρώτο δείγμα κώδικα.

Με αυτά τα λόγια, μπορείτε να χρησιμοποιήσετε πολλά ΕΠΙΣΤΡΟΦΗ δηλώσεις για να απλοποιήσετε περαιτέρω τον κώδικά σας (και να απαλλαγείτε από την ένθεση):

λειτουργίαcanDrinkBetter() {
αν(άτομο;.ηλικία == μηδενικό) ΕΠΙΣΤΡΟΦΗκονσόλα.κούτσουρο("Δεν είσαι άνθρωπος")

αν(πρόσωπο.ηλικία < 18) {
κονσόλα.κούτσουρο(«Ακόμα πολύ νέος»)
ΕΠΙΣΤΡΟΦΗ
}

αν(πρόσωπο.ηλικία < 21) {
κονσόλα.κούτσουρο(«Όχι στις ΗΠΑ»)
ΕΠΙΣΤΡΟΦΗ
}

κονσόλα.κούτσουρο("Επιτρέπεται να πίνουν")
}

Αυτός ο κώδικας λειτουργεί το ίδιο με τα δύο προηγούμενα παραδείγματα, και είναι επίσης λίγο πιο καθαρός.

Extract Functions for Cleaner Code

Το τελευταίο μας μπλοκ κωδικών ήταν πιο καθαρό από τα δύο πρώτα, αλλά εξακολουθεί να μην είναι τόσο καλό όσο θα μπορούσε να είναι.

Αντί να έχει μακρύ αν...αλλιώς αλυσίδα μέσα σε μία λειτουργία, μπορείτε να δημιουργήσετε μια ξεχωριστή λειτουργία canDrinkResult() που κάνει τον έλεγχο για εσάς και επιστρέφει το αποτέλεσμα:

λειτουργίαcanDrinkResult(ηλικία) {
αν(ηλικία < 18) ΕΠΙΣΤΡΟΦΗ«Ακόμα πολύ νέος»
αν(ηλικία < 21) ΕΠΙΣΤΡΟΦΗ«Όχι στις ΗΠΑ»
ΕΠΙΣΤΡΟΦΗ"Επιτρέπεται να πίνουν"
}

Στη συνέχεια, μέσα στην κύρια λειτουργία, το μόνο που χρειάζεται να κάνετε είναι πρώτα να εφαρμόσετε τη ρήτρα προστασίας πριν καλέσετε το canDrinkResult() συνάρτηση (με την ηλικία ως παράμετρό της) για να πάρετε το αποτέλεσμα:

λειτουργίαcanDrinkBetter() { 
αν(άτομο;.ηλικία == μηδενικό) ΕΠΙΣΤΡΟΦΗκονσόλα.κούτσουρο("Δεν είσαι άνθρωπος")

αφήνω αποτέλεσμα = canDrinkResult (person.age)
κονσόλα.log (αποτέλεσμα)
}

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

Κρατήστε τα άλλα μακριά από δηλώσεις υπό όρους

Έχετε μάθει πώς να αναπαράγετε σύνθετες, ένθετες αλυσίδες υπό όρους σε μικρότερες, πιο ευανάγνωστες, χρησιμοποιώντας ρήτρες προστασίας και την τεχνική εξαγωγής συναρτήσεων.

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

Εάν είστε ακόμα νέος στη χρήση της JavaScript αν...αλλιώς δήλωση, ξεκινήστε με τα βασικά.