Περισσότερα
Γιατί η "χρήση του χώρου ονομάτων std;" θεωρείται κακή πρακτική;
Μου έχουν πει άλλοι ότι το να γράφω χρησιμοποιώντας το namespace std;
στον κώδικα είναι λάθος και ότι θα πρέπει να χρησιμοποιώ απευθείας τα std::cout
και std::cin
.
Γιατί η χρήση του namespace std;
θεωρείται κακή πρακτική; Είναι αναποτελεσματική ή υπάρχει κίνδυνος να δηλωθούν διφορούμενες μεταβλητές (μεταβλητές που έχουν το ίδιο όνομα με μια συνάρτηση στο χώρο ονομάτων std
); Επηρεάζει την απόδοση;
2466
3
Αυτό δεν σχετίζεται καθόλου με την απόδοση. Αλλά σκεφτείτε το εξής: χρησιμοποιείτε δύο βιβλιοθήκες που ονομάζονται Foo και Bar:
Όλα λειτουργούν μια χαρά, και μπορείτε να καλέσετε την
Blah()
από την Foo και τηνQuux()
από την Bar χωρίς προβλήματα. Αλλά μια μέρα αναβαθμίζετε σε μια νέα έκδοση της Foo 2.0, η οποία τώρα προσφέρει μια συνάρτηση που ονομάζεταιQuux()
. Τώρα έχετε μια σύγκρουση: Τόσο η Foo 2.0 όσο και η Bar εισάγουν τηνQuux()
στο παγκόσμιο χώρο ονομάτων σας. Αυτό θα χρειαστεί κάποια προσπάθεια για να διορθωθεί, ειδικά αν οι παράμετροι της συνάρτησης τυχαίνει να ταιριάζουν.Αν είχατε χρησιμοποιήσει
foo::Blah()
καιbar::Quux()
, τότε η εισαγωγή τηςfoo::Quux()
θα ήταν ένα μη-γεγονός.Ένας άλλος λόγος είναι η έκπληξη.
Αν δω `cout
Όλα έχουν να κάνουν με τη διαχείριση της πολυπλοκότητας. Η χρήση του χώρου ονομάτων θα τραβήξει πράγματα που δεν θέλετε, και έτσι πιθανόν να δυσχεράνει την αποσφαλμάτωση (λέω πιθανόν). Η χρήση του std:: παντού είναι πιο δύσκολη στην ανάγνωση (περισσότερο κείμενο και όλα αυτά).
Άλογα για τα μαθήματα - διαχειριστείτε την πολυπλοκότητά σας όπως μπορείτε και αισθάνεστε καλύτερα.