Почему устанавливает вещи в частном порядке?Я не собираюсь сходить с ума и возиться со случайными переменными - PullRequest
1 голос
/ 07 июля 2011

Я не думаю, что понимаю, почему нужно установить что-то личное, кроме "Вы должны просто сделать это". Если у меня был класс торгового автомата, и у него есть переменная, которая говорит, сколько монет у него в автомате, что бесполезно для всего остального, почему я должен установить его в приват? Это не так, как я собираюсь получить высокий и в другом классе напишите vendingMachine.coins = 99999.

Ответы [ 2 ]

2 голосов
/ 07 июля 2011

Использование private имеет несколько хороших моментов - я буду активно его использовать, если мне действительно не понадобится свойство или метод для записи и чтения из нескольких мест.

  1. Tidyness - Чрезвычайно легко увидеть, какие свойства меняются только в текущем классе, а какие методы вызываются только из текущего класса.
  2. Только для чтения - Свойства можно сделать доступными только для чтения с помощью частных свойств с открытым геттером.
  3. Вы можете специально использовать свойства, которые являются частными с геттерами и сеттерами.

Действительно, использование private для меня дает мне отличный обзор моего приложения. Я легко могу понять, с какими переменными можно смешиваться извне класса, а какие только внутри класса.

Лично, когда я пытаюсь визуализировать свое приложение, я вижу каждый класс в виде круга. У каждого круга есть ветвь, которая представляет свойство или метод, соединяющий все остальные круги, которые имеют к нему доступ. Теперь, когда вы думаете об этом визуале, это будет огромный запутанный беспорядок, если все будет public.

Я подхожу к своему ООП вот так; вместо создания свойства или метода private, когда действительно должно быть private, я создаю свойство или метод public, только если к реально необходимо получить доступ на протяжении всего приложения. Я даю самый строгий уровень доступа ко всему. т. е. internal для вещей, которые находятся в том же пакете, protected для вещей, которые будут изменены только от расширенных классов, private для вещей, которые затрагиваются только в пределах определенного им класса. Я также активно использую свойство private с определенным getter, так что я могу сразу сказать, что свойство будет изменено только в пределах класса, в котором оно содержится, но доступно в других областях.

0 голосов
/ 07 июля 2011

Это, вероятно, правда, но смысл в ООП состоит в том, чтобы разделить обязанности и хранить данные вместе с соответствующими методами. Для очень маленьких проектов и проектов с одним человеком это может не потребоваться, но в больших проектах, где вы повторно используете объекты от других людей, вы иногда не будете знать, какие поля вы должны изменить, а какие не следует портить. Вот почему в ООП вы определяете только интерфейс public и все внутренние вещи private. Это также позволяет позже изменить внутреннюю реализацию, не нарушая вашу программу.

Посмотрите: http://simple.wikipedia.org/wiki/OOP

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...