- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Что делать, если ваша email-рассылка попала в спам
10 распространенных причин и решений
Екатерина Ткаченко
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
как, по вашему, лучше написать класс библиотечного типа?
{
private $id;
protected function setId($id)
{
$this->id = $id;
}
}
или так?
class Class1111odinodin
{
protected $id;
}
я за второй вариант
что лучше?
class Class1111odinodin
{
private func() { .. };
protected function exec_func()
{
$this->func();
}
}
или так?
class Class1111odinodin
{
protected func() { .. };
}
что лучше?
class Class1111odinodin
{
private func() { .. };
protected function exec_func()
{
$this->func();
}
}
или так?
class Class1111odinodin
{
protected func() { .. };
}
мммм...
не понял ответа
Второй вариант логичней и красивей, переменная это такой же член класса как и функция. Зачем все усложнять?
Обьясняю, если функция у тебя protected значит предпологается что этот класс можно унаследовать и расширить. А значит никакого private там не должно быть!
private должен использоватся ТОЛЬКО в классах с приставкой final.
private должен использоватся ТОЛЬКО в классах с приставкой final.
Вообще, изначально private задумывался, чтобы скрыть от потомков детали реализации, оставив им только интерфейс (через public/protected мемберы).
Более подробно: вы делаете какой-нибудь алгоритм, например, какое-нибудь хитрое кэширование, и не хотите, чтобы в него кто-то лез своими грязными лапами. Для реализации кэширования вам нужно пара переменных-членов и тройка функций-членов. Для пользователей кэша - они вообще не знают, что там что-то кэшируется. Ну, в смысле, знают, но повлиять на это никак не могут и ничего лишнего не видят. Для них класс выглядит так же, как если бы никакого кэширования вообще не было.
Вот вы и закрываете всё, что относится к реализации кэширования, в private. И все сосут лапу. Зато потом, когда вы захотите поменять алгоритм на более другой, вы это сможете сделать без каких-либо ограничений. А в случае protected оказалось бы, что какой-нибудь неумный Вася решил "оптимизировать" ваше решение самостоятельно и использовал функции кэширования напрямую. Теперь он не может просто взять вашу новую версию, потому что ему нужно переписывать пол-программы. Ладно еще если Вася с улицы нарисовался, тогда это его проблемы, а вот если он ваш коллега по организации или ваш основной заказчик, то его головная боль становится вашей.
Ну в общем да.
Если под библиотечным типом именно это подразумевается, то лучше первый вариант. Если либа для себя то нафиг такой изврат
Тоже поддерживаю первый вариант. Котеров и Макконел выбирают его же.