1

Только начинаю изучать C# и ООП, до этого дружил в основном с python. Объясните непонимающему человеку, что такое инкапсуляция и зачем она конкретно?

Да, я знаю, что это объединение данных и методов в классе, сокрытие способа их работы и т. д.

Но в каких конкретно примерах она нужна, и чем опасно делать все классы и методы типа public если открытый код, к примеру, упрощает работу с большим проектом и в случае изменения чего-то, не нужно переписывать половину кода.

К тому же, зачастую, сама инкапсуляция увеличивает количество кода с методами get set returnи тд., если различных переменных свыше 20-30, каждую нужно расписывать (инкапсулировать)?

Kromster
  • 13,809
  • 2
    Вот в том-то и дело, что если в public-штуках изменится какая-то логика, то придётся переписывать половину кода, потому что весь этот код нужно будет адаптировать под сделанные изменения. Если же оставить минимально возможное количество public методов и свойств, то можно попытаться сохранять их внешнее поведение максимально стабильным без значимых изменений, при этом переписывая private внутренности сколько угодно до посинения, что сильно упрощает сопровождение проекта – andreymal Nov 21 '20 at 01:17
  • И кстати к python это всё тоже относится. Да в общем-то это к любому языку относится – andreymal Nov 21 '20 at 01:20
  • @andreymal в python сам принцип инкапсуляции присутствует, но вот сокрытие данных, как-то не предусмотрено – Александр Nov 21 '20 at 01:22
  • 4
    https://youtube.com/watch?v=yNUJ3vAeyJQ – aepot Nov 21 '20 at 01:27
  • 1
  • Займитесь изучением разработки через тестирование TDD. И вам быстро станет понятно для чего служит инкапсуляция. – Bulson Nov 21 '20 at 08:41

0 Answers0