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

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

Δημοσ.

Εχω μια κεντρικη φορμα (winform) που μεσα απο αυτη ανοιγουν αλλες φορμες. Σε μια απο αυτες χρειαζεται να χρησιμοποιησω μια συναρτηση WinApi και δυο σταθερες που τις χρησιμοποιω και στην κεντρικη φορμα. Το ερωτημα ειναι αν αξιζει να τα δηλωσω μονο στην κεντρικη ως public και να τα καλω απο την αλλη φορμα ή να τα δηλωσω και στις 2 φορμες ως private;

Ευχαριστω

 

Δημοσ.

Όσες φορές και να τα δηλώσεις μια φορά θα φορτωθεί το dll που έχει τη συνάρτηση που θέλεις.

Δημοσ.

Να τις δηλώσεις σε μία τρίτη static class και να τις χρησιμοποιήσεις από εκεί. Δε χρειάζεται απαραίτητα να είναι public, αν ασχοληθείς απλά ίσα να γίνει η δουλειά σου καν τες internal.

 

M2000 όπως πάντα καίριες και κατευθείαν στο ψαχνό οι απαντήσεις σου. Thumbs up.

  • Like 1
Δημοσ.

Να τις δηλώσεις σε μία τρίτη static class και να τις χρησιμοποιήσεις από εκεί. Δε χρειάζεται απαραίτητα να είναι public, αν ασχοληθείς απλά ίσα να γίνει η δουλειά σου καν τες internal.

 

Αυτη ειναι μια πολυ καλη πρακτικη. Το μειονεκτημα ειναι οταν θα καλω την συναρτηση θα πρεπει να γραφω καθε φορα το ονομα της κλασης π.χ. common.mciSendString αντι για mciSendString που θα εγραφα αν την ειχα δηλωμενη σε οποια φορμα χρειαζονταν. Παρολα αυτα θα προτιμησω να κανω αυτο που ειπες.

Δημοσ.

Αυτη ειναι μια πολυ καλη πρακτικη. Το μειονεκτημα ειναι οταν θα καλω την συναρτηση θα πρεπει να γραφω καθε φορα το ονομα της κλασης π.χ. common.mciSendString αντι για mciSendString που θα εγραφα αν την ειχα δηλωμενη σε οποια φορμα χρειαζονταν. Παρολα αυτα θα προτιμησω να κανω αυτο που ειπες.

Μπορείς να θέσεις using common;

Γιατί όμως το να αναφέρεις το όνομα της κλασης μπροστά από την μέθοδο είναι μειονέκτημα; Με τα bite πληρώνεις;

Δημοσ.

Αυτη ειναι μια πολυ καλη πρακτικη. Το μειονεκτημα ειναι οταν θα καλω την συναρτηση θα πρεπει να γραφω καθε φορα το ονομα της κλασης π.χ. common.mciSendString αντι για mciSendString που θα εγραφα αν την ειχα δηλωμενη σε οποια φορμα χρειαζονταν. Παρολα αυτα θα προτιμησω να κανω αυτο που ειπες.

 

Όντως γράφεις λίγο παραπάνω, αλλά είναι αυτό το κριτήριο που θέλουμε να μεγιστοποιήσουμε σε ένα πρόγραμμα; Το θέμα είναι καίριο οπότε να αναφέρω τα εξής:

  • Το source είναι write once, read many: το γράψιμο θα γίνει βασικά μία φορά, ενώ η ανάγνωση/κατανόηση κλπ πολλές. Οπότε είναι συμφέρον να μεγιστοποιήσουμε την ευκολία της τελευταίας.
  • Υπάρχουν διάφοροι τρόποι, από ενσωματωμένους στη γλώσσα (using static στην προκειμένη) μέχρι tooling (autocomplete, refactor κλπ) μέχρι preprocessors, καθένας εκ των οποίων ειδικεύεται σε συγκεκριμένου είδους αποστολές, για να καταφέρεις να έχεις το αποτέλεσμα που θέλεις στο source -- αν είναι όντως τόσο σημαντικό.
  • Worst case scenario αν δεν υπάρχει κανένα tool και feature να βοηθήσει και το λιγότερο γράψιμο είναι τόσο σημαντικό (ας πούμε επειδή θα το γράψουμε 180 φορές), και πάλι μπορεί κανείς να γράψει στην κάθε class ενδιαφέροντος ένα απλό forwarding method μέσα στο οποίο θα περιοριστεί η μοναδική περίπτωση που θα πρέπει να γραφτεί η κλήση "φλύαρα". Επιπλέον σ' αυτή την περίπτωση σου χρυσώνεται και το χάπι γιατί κάνοντάς το αυτό αποκτάς ένα "abstraction layer" που ίσως θα μπορούσε να φανεί χρήσιμο στο μέλλον, αλλά ακόμα και αν όχι πάλι είναι εύκολα πραγματοποιήσιμο και κατανοητό οπότε "σχεδόν τζάμπα" (με την έννοια ότι ο καλύτερος, τζάμπα κώδικας είναι αυτός που δεν υπάρχει καν).

 

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

Δημοσ.

Αυτη ειναι μια πολυ καλη πρακτικη. Το μειονεκτημα ειναι οταν θα καλω την συναρτηση θα πρεπει να γραφω καθε φορα το ονομα της κλασης π.χ. common.mciSendString αντι για mciSendString που θα εγραφα αν την ειχα δηλωμενη σε οποια φορμα χρειαζονταν. Παρολα αυτα θα προτιμησω να κανω αυτο που ειπες.

 

Μειονεκτημα ειναι αν γραφεις common.mciSendString, αν ομως γραψεις WinApi.mciSendString τοτε γινεται πλεονεκτημα.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...