Kiedy należy używać konstruktora nad właściwościami lub odwrotnie podczas przypisywania wartości.Konstruktor lub właściwości: który z nich jest lepszym wyborem podczas przypisywania wartości
Odpowiedz
Konstruktor to bardzo wygodny i skuteczny rodzaj umowy - sposób na wymóg, aby konsumenci dostarczali pewnych informacji , zanim będą mogli nawet użyć obiektu. Aby uzyskać informacje niezbędne do prawidłowego działania instancji, należy użyć parametrów konstruktora. Jest to podstawowa koncepcja zastrzyku uzależnienia - wszystko, czego jesteś zależny od wykonywania swojej pracy, musi zostać wstrzyknięte (dostarczone) przed rozpoczęciem.
Właściwości mogą stanowić interesujący problem. Ogólnie rzecz biorąc, doświadczenie nauczyło mnie, że w miarę możliwości, właściwości powinny być tylko do odczytu, a obiekty powinny być na ogół tak niezmienne jak to tylko możliwe. Dodanie setera publicznego do właściwości jest mnożnikiem złożoności dla twojej klasy. Są oczywiście zawsze typy obiektów - przykłady są dobrym przykładem - gdzie setery mają sens. Jednak w przypadku większości obiektów wzorzec "write-to via constructor"/"read-from via properties" dla stanu znacznie zmniejszył złożoność i ryzyko błędów w aplikacjach, za które byłem odpowiedzialny.
dzięki za pomoc – user498432
Używasz konstruktora, gdy potrzebujesz arbitralnych początkowych wartości i właściwości, jeśli chcesz później zmienić wartości.
Zawsze wolę Właściwości, czy to jest w porządku – user498432
Jeśli twój obiekt nie potrzebuje arbitralnych wartości początkowych, to znaczy, że ma prawidłowe wartości w samej metodzie konstruktora, to na pewno. –
Użyj konstruktora, jeśli wartości parametrów są rzeczywiście wymagane do skonstruowania obiektu (bez nich obiekt nie może zacząć żyć). Użyj właściwości dla parametrów, które mają akceptowalną wartość domyślną, więc nie należy ich w ogóle przypisywać. Możesz dostarczyć dodatkowych konstruktorów, którzy przypiszą niektóre właściwości jako skrót, dzięki uprzejmości twoich użytkowników.
Istnieje kilka przypadków, w których właściwości Zmienne mogą być preferowane:
uzyskać „czysty” modyfikowalnych obiektów danych, gdzie tylko ustawienie właściwości może mieć żadnych skutków ubocznych. Na przykład może istnieć obiekt, który reprezentuje pewną jednostkę w bazie danych, ale modyfikowanie jej właściwości nie będzie miało żadnego wpływu, dopóki nie zostanie jawnie wykonana operacja zatwierdzania. Obiekt jest pakietem do przechowywania danych, ale nic nie reaguje bezpośrednio na zmiany danych.
Jeśli masz dużo konfigurowalnego stanu, który wpłynie na niektóre operacje, a wiele konfigurowalnych właściwości ma znaczące wartości domyślne. Jeśli są to właściwości klasy, która wykonuje operację, typowe jest posiadanie pewnego pojęcia "zamrożenia" stanu, aby zmienne właściwości generowały wyjątki podczas działania operacji.
Jeśli tworzysz klasę, która zostanie wykorzystana przez projektanta wizualnego lub inny system, który polega na odbiciu nad właściwościami. Na przykład system łączenia danych w WPF szeroko wykorzystuje zmienne właściwości jako sposób komunikacji interakcji UI. Dzięki odpowiedniemu projektowi do zarządzania tymi mutacjami, możesz stworzyć bardzo potężne i responsywne interfejsy.
- 1. Który z nich jest bardziej skuteczny podczas budowania budowniczych?
- 2. Który z nich jest szybki, Klasa abstrakcyjna lub interfejs?
- 3. Apache2: mod_wsgi lub mod_python, który z nich jest lepszy?
- 4. Który z nich jest lżejszy, JSON lub BSON?
- 5. Który z nich jest szybszy: skorelowane podzapytania lub dołącz?
- 6. Który z nich jest łatwiejszy w użyciu? GCD lub NSOperation?
- 7. Który z nich jest odpowiednikiem metody isnan()?
- 8. Jaki jest sens używania "f" podczas przypisywania wartości do CGFloat?
- 9. Warunkowo przypisywania PHP wartości
- 10. Który konstruktor jest tutaj wywoływany?
- 11. Jak określić, który z nich należy użyć - next(); lub dequeue() ;?
- 12. Team City kontra CruiseControl.net - który z nich jest lepszy?
- 13. Czy RestEasy jest właściwym wyborem?
- 14. Szyny automatycznego przypisywania identyfikator, który już istnieje
- 15. ASP.NET vs SharePoint - który z nich jest lepszy dla programistów?
- 16. Który z nich jest szybszy, odczytywanie z dysku lub przydzielanie pamięci systemowej
- 17. plsql - otrzymasz pierwszy wiersz - który z nich jest lepszy?
- 18. Który z nich jest lepszy pod względem wydajności?
- 19. Implementacje JPA - Który z nich jest najlepszy w użyciu?
- 20. Który z nich jest szybszy i lżejszy - mysqli i PDO
- 21. Mapa/ArrayList: który z nich jest szybszy w wyszukiwaniu elementu
- 22. co jest lepszym sposobem na zdefiniowanie funkcji?
- 23. Prawidłowy sposób przypisywania do właściwości __proto__
- 24. MongoDB jest lepszym zamiennikiem Memcached?
- 25. "Cocos2d-Javascript" lub "Cocos2d-x html5", który z nich jest lepszy w rozwoju HTML5?
- 26. Który z nich jest częściej wykorzystywany przez firmy IT, NetBeans lub Eclipse?
- 27. Ormlite lub sqlite Który z nich jest dobry dla perspektywy Androida?
- 28. Który z nich jest lepszy, gcc lub armcc dla optymalizacji NEON?
- 29. JOIN lub podzapytanie skorelowane ze istnieje zapis, który z nich jest lepszy
- 30. Wartość lub konstruktor nie jest zdefiniowany
http://stackoverflow.com/questions/863045/what-is-the-preferred-way-of-constructing-objects-in-c-constructor-parameters-o – jcolebrand
Przypuszczam masz na myśli przypisywania * początkowe wartości * –
@drachenstern - dzięki za link – user498432