Запитання з тегом «encapsulation»

17
Чому приватні поля є недостатньо захищеними?
Чи privateкорисна видимість полів / властивостей / атрибутів класу? В OOP рано чи пізно ви збираєтеся скласти підклас класу, і в цьому випадку добре зрозуміти і мати можливість повністю змінити реалізацію. Одне з перших речей, які я роблю, коли підклас класу, - це змінити купу privateметодів protected. Однак приховування деталей …

15
Навіщо нам потрібні приватні змінні?
Навіщо нам потрібні приватні змінні в класах? Кожна прочитана книга з програмування говорить, що це приватна змінна, саме так ви її визначаєте, але зупиняється на цьому. Формулювання цих пояснень мені завжди здавалося так, ніби ми справді маємо кризу довіри до своєї професії. Пояснення завжди звучали так, ніби інші програмісти зіпсують …

15
TDD Red-Green-Refactor і якщо / як перевірити методи, які стають приватними
наскільки я розумію, більшість людей, мабуть, згодні з тим, що приватні методи не повинні бути перевірені безпосередньо, а скоріше через те, що їх називають публічні методи. Я бачу їхню суть, але у мене є деякі проблеми з цим, коли я намагаюся дотримуватися "трьох законів TDD" і використовувати цикл "Червоний - …

10
Використання сторонніх бібліотек - завжди використовувати обгортку?
Більшість проектів, якими я займаюсь, використовують декілька компонентів з відкритим кодом. Як загальний принцип, чи корисно завжди уникати прив'язки всіх компонентів коду до сторонніх бібліотек і замість цього переходити через інкапсуляційну обгортку, щоб уникнути болю змін? Наприклад, більшість наших PHP-проектів безпосередньо використовують log4php як систему реєстрації, тобто вони створюють екземпляр …

13
Чому для нижчих шарів додатків добре не знати про «вищі»?
У типовому (добре розробленому) веб-додатку MVC база даних не знає код моделі, код моделі не знає код контролера, а код контролера не знає про код перегляду. (Я думаю, ви навіть можете почати так далеко, як апаратне забезпечення, а може бути, і далі. Йдучи в іншому напрямку, ви можете піти лише …

8
Що слід дозволити всередині геттерів та сетерів?
Я потрапив у цікавий інтернет-аргумент про геттер та сетер методи та інкапсуляцію. Хтось сказав, що все, що вони повинні зробити, - це завдання (setters) або змінний доступ (getters), щоб зберегти їх "чистими" та забезпечити інкапсуляцію. Я маю рацію, що це повністю переможе мету, щоб передусім отримати геттерів та сеттерів, а …

5
Навіщо нам потрібні переписки на динамічно набраних мовах?
Я читав тут якийсь код і побачив, що enum використовується для зберігання назв html-тегів. Чому нам взагалі потрібно це робити? Яку користь я отримую, використовуючи цю стратегію? Я знаю, що корисні перерахунки в мовах, що складаються або статично набрані, але коли я бачу переліки на динамічно набраних мовах, мені стає …

10
Як правило, ви надсилаєте об'єкти або їх змінні в функції?
Що є загальноприйнятою практикою між цими двома випадками: function insertIntoDatabase(Account account, Otherthing thing) { database.insertMethod(account.getId(), thing.getId(), thing.getSomeValue()); } або function insertIntoDatabase(long accountId, long thingId, double someValue) { database.insertMethod(accountId, thingId, someValue); } Іншими словами, як правило, краще передавати цілі об’єкти навколо або просто потрібні поля?

6
Чи слід розміщувати функції, які використовуються лише в одній іншій функції, в межах цієї функції?
Зокрема, я пишу на JavaScript. Скажімо, моя основна функція - це функція A. Якщо функція A робить кілька викликів до функції B, але функція B не використовується більше ніде, то я повинен просто розмістити функцію B у функції A? Це хороша практика? Або я все-таки повинен розміщувати функцію B в …

6
Чому Java зробила доступ до пакету за замовчуванням?
Я задаю це запитання, тому що я вважаю, що вони зробили це з дуже вагомих причин і що більшість людей не використовують його належним чином, добре з мого досвіду в галузі в будь-якому разі. Але якщо моя теорія справжня, то я не впевнений, чому вони включили модифікатор приватного доступу ...? …

4
Що це означає, коли можна сказати "Інкапсулювати те, що змінюється"?
Один із принципів ООП, на які я натрапив, це: -Екапсулювати те, що змінюється. Я розумію, що означає буквальне значення фрази, тобто приховати те, що змінюється. Однак я не знаю, як саме це сприяло б кращому дизайну. Чи може хтось пояснити це, використовуючи хороший приклад?

4
Чому Java не використовує інкапсуляцію з деякими класами?
Моє запитання пов'язане з класами System.inта System.outкласами (можуть бути такі, як у бібліотеці Standard). Чому так? Це не погана практика в ООП? Чи не слід його використовувати так: System.getIn()і System.getOut()? У мене завжди було це запитання, і я сподіваюся, що тут знайду хорошу відповідь.


7
Якщо змінна має getter та setter, чи повинна вона бути загальнодоступною?
У мене є клас зі змінною, яка є приватною, а в класі є геттер і сетер для цієї змінної. Чому б не оприлюднити цю змінну? Єдиний випадок, на який я думаю, що вам доведеться використовувати getters і setters, якщо вам потрібно виконати якусь операцію, крім набору або get. Приклад: void …

5
У чому полягає асоціація, агрегація та склад?
Я пережив багато теорій про те, що таке інкапсуляція та три методики її здійснення, які є асоціація, агрегація та склад. Я знайшов : Інкапсуляція Інкапсуляція - це техніка зробити поля в класі приватними та забезпечити доступ до полів відкритими методами. Якщо поле оголошено приватним, до нього не може отримати доступ …

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.