2014-01-05 2 views
-2

Я прочел кое-что об этом, я даже нашел похожий вопрос, но на самом деле он не ответил на это. Для меня кажется, что приватизация чего-то только делает мою жизнь намного сложнее, когда мне нужно найти личную переменную в классе, чтобы использовать ее в другом месте. Так в чем проблема, если бы все было публично? Будет ли это как-то замедлить программу?Причина инкапсуляции

+0

Возможный дубликат [Что является целью модификаторов доступа?] (Http://stackoverflow.com/questions/20895101/what-is-the-purpose-of-access-modifiers) –

+1

Это не по теме этот сайт, но он ответил на [programers.SE] (http://programmers.stackexchange.com/questions/143736/why-do-we-need-private-variables). – poke

+0

Создание всех предметов в классе по существу означает, что вы позволяете всем видеть и манипулировать чем угодно и что угодно. Если что-то может быть частным, сделать его частным, это облегчает использование объекта. –

ответ

0

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

0

Это связано с тем, что класс не должен раскрывать свои члены напрямую, а должен предоставлять прокси-сервер, через который должны быть доступны члены. (Как геттеры/сеттеров или Свойства)

Смотрите этот вопрос для получения дополнительной информации: Why it is recommended to declare instance variables as private?

0

FYI Я не верю, что вы должны спросить такие вопросы на основе обсуждения, как это на SO ... Но упрощенный ответ таков: не ограничивайте свое мышление логикой кода. Мы все знаем, что есть десять тысяч способов сделать то же самое. Вероятно, вы можете переписать кучу кода, чтобы избежать инкапсуляции. Тем не менее, инкапсуляция данных дает несколько преимуществ, когда вы начинаете работать над крупными проектами или с более крупными командами, выходящими за рамки простого написания функционального кода:

(1) организация по понятию: если вы кодируете велосипед, вы будете кодировать класс для колеса, класс для рамки, класс для рулей и т. д., и вы знаете, куда идти, чтобы решить проблему, возможно, даже после нескольких месяцев времени от кода;

(2) разделение реализации и интерфейса: вы можете рассказать миру о своем публичном интерфейсе и обработать фактическую реализацию в частном порядке, чтобы люди не знали, как все работает в вашем коде, они просто знают, что это работает , как черный ящик; и если позже вам придется изменить свою частную реализацию, вы можете сделать это свободно, пока публичный интерфейс все еще работает;

(3) упрощение для людей: помните, люди читают ваш код, так что бы вы хотели взломать их каждый бит данных и логики в вашем проекте? это просто заставило бы вас рассердить программистов.

Итак, это нежное введение в инкапсуляцию.

+0

Я не собирался начинать дискуссию, я просто не знал причины инкапсуляции. – Orodshsen

+0

Я понимаю, но SO предназначен для ответа на сфокусированные вопросы, а не на широкие вопросы, поэтому причина, по которой кучка людей прокомментировала, что это не по теме, поставил ваш вопрос на удержание и понизил его. – bgfriend0

Смежные вопросы