Pytania otagowane jako encapsulation

17
Dlaczego prywatne pola nie są wystarczająco chronione?
Czy widoczność privatepól / właściwości / atrybutów klasy jest przydatna? W OOP prędzej czy później zamierzasz utworzyć podklasę klasy, w takim przypadku dobrze jest zrozumieć i móc całkowicie zmodyfikować implementację. Jedną z pierwszych rzeczy, które robię, gdy podklasuję klasę, jest zmiana zestawu privatemetod na protected. Jednak ukrywanie szczegółów przed światem …

15
Dlaczego potrzebujemy zmiennych prywatnych?
Dlaczego potrzebujemy zmiennych prywatnych w klasach? Każda książka o programowaniu, którą przeczytałem, mówi, że jest to zmienna prywatna, tak ją definiujesz, ale na tym się kończy. Sformułowanie tych wyjaśnień zawsze wydawało mi się, że naprawdę mamy kryzys zaufania do naszego zawodu. Wyjaśnienia zawsze brzmiały tak, jakby inni programiści zepsuli nasz …


10
Korzystanie z bibliotek firm trzecich - zawsze używasz opakowania?
Większość projektów, w które jestem zaangażowany, wykorzystuje kilka komponentów typu open source. Zgodnie z ogólną zasadą, czy dobrym pomysłem jest zawsze unikanie wiązania wszystkich składników kodu do bibliotek stron trzecich, a zamiast tego przechodzenie przez enkapsulujące opakowanie, aby uniknąć bólu związanego ze zmianami? Na przykład większość naszych projektów PHP bezpośrednio …


8
Co powinno być dozwolone w modułach pobierających i ustawiających?
Wciągnąłem interesujący internetowy spór o metody pobierające i ustawiające oraz enkapsulację. Ktoś powiedział, że wszystko, co powinni zrobić, to przypisanie (ustawiające) lub dostęp zmienny (pobierające), aby utrzymać je w czystości i zapewnić enkapsulację. Czy mam rację, że całkowicie zniweczyłoby to cel posiadania getterów i seterów, a walidacja i inna logika …


10
Czy generalnie wysyłasz obiekty lub ich zmienne składowe do funkcji?
Co jest ogólnie przyjętą praktyką między tymi dwoma przypadkami: function insertIntoDatabase(Account account, Otherthing thing) { database.insertMethod(account.getId(), thing.getId(), thing.getSomeValue()); } lub function insertIntoDatabase(long accountId, long thingId, double someValue) { database.insertMethod(accountId, thingId, someValue); } Innymi słowy, czy ogólnie lepiej jest przekazywać całe obiekty, czy tylko pola, których potrzebujesz?

6
Czy w tej funkcji należy umieścić funkcje, które są używane tylko w jednej innej funkcji?
W szczególności piszę w JavaScript. Powiedzmy, że moją podstawową funkcją jest funkcja A. Jeśli funkcja A wykonuje kilka wywołań do funkcji B, ale funkcja B nie jest używana nigdzie indziej, to czy powinienem po prostu umieścić funkcję B w funkcji A? Czy to dobra praktyka? Czy powinienem nadal ustawić Funkcję …

6
Dlaczego Java ustawiła domyślny dostęp do pakietu?
Zadaję to pytanie, ponieważ uważam, że zrobili to z bardzo dobrego powodu i że większość ludzi nie używa go właściwie, dobrze z mojego dotychczasowego doświadczenia w branży. Ale jeśli moja teoria jest prawdziwa, to nie jestem pewien, dlaczego zawarli modyfikator dostępu prywatnego ...? Uważam, że prawidłowe użycie domyślnego dostępu zapewnia …




7
Jeśli zmienna ma getter i setter, czy powinna być publiczna?
Mam klasę ze zmienną, która jest prywatna, a klasa ma getter i setter dla tej zmiennej. Dlaczego nie upublicznić tej zmiennej? Jedyny przypadek, który uważam, że musisz użyć programów pobierających i ustawiających, to konieczność wykonania operacji oprócz zestawu lub get. Przykład: void my_class::set_variable(int x){ /* Some operation like updating a …

5
Jakie jest zastosowanie Stowarzyszenia, Agregacji i Składu?
Przeszedłem przez wiele teorii na temat tego, czym jest enkapsulacja i trzy techniki jej wdrażania, którymi są Stowarzyszenie, Agregacja i Kompozycja. Znalazłem : Kapsułkowanie Hermetyzacja jest techniką nadawania polom klasy prywatności i zapewniania dostępu do pól metodami publicznymi. Jeśli pole zostanie uznane za prywatne, nie będzie dostępne dla osób spoza …

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.