[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Геттеры и сеттеры
Страницы: 1, 2, 3, 4, 5
Oyeme
Цитата
Но 99% веб-проектов юзают куда более прозаичные и не столь сильно связанные скрипты. И поменять свойство на геттер при сильной надобности - дело нескольких минут. Нет там никаких 300-400 мест. И быть не может.


Откуда такая статистика про 99%? Если у Вас так то это не говорит что У всех так.

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


Практика показыает наборот что "комментарии которые пишутся,сделать то-то и то-то потом в 99% процетов никогда не делаются ,а так и остаются в проекте"

Так что "потом" поменять это ошибка в проектировании

Цитата
И все эти 800 метров классов юзают одно и то же свойство.


Не одно и тоже,но свазанность проекта очень большая.

Цитата
Это всего лишь личные предпочтения и привычки. Ничего общего с реалиями не имеют.

Не навязываю свое мнение. Вообще все равно.

Dezigo работает в медицинской компани.
Цитата

Какой там трафик, тысяч 100 в сутки наскребтся? На таком трафике можно позволить себе загадывать на 15 лет вперед, как бы лишнюю букву не написать.


Истории болезней клиентов,снимки внутренних органов итд.

Сложность не измеряется, в количествах посещаемости.
twin
Цитата (Oyeme @ 26.10.2015 - 15:05)
Откуда такая статистика про 99%? Если у Вас так то это не говорит что У всех так.
Это метафора конечно, однако не далека от истины. Логика простая. Большинство действующих проектов так или иначе используют фреймворки. Ну что поделать, таковы реалии. А в фреймворках нет такой запутанной и связанной структуры, чтобы какое-то свойство использовалось в 400 классах одновременно. А значит и нет частых случаев менять одно на другое. Если даже есть такие варианты, с той же базой данных, то во первых это вряд ли когда понадобится. А если предвидится такая ситуация, то тут сеттеру как раз и место. А во вторых, это бывает на столько редко, что такую ситуацию уж точно нельзя приводить аргументом. Это как совет ходить всегда в каске, потому что 15 лет назад в другом городе другой страны кому то на голову упала сосулька.
Цитата (Oyeme @ 26.10.2015 - 15:05)
Практика показыает наборот что "комментарии которые пишутся,сделать то-то и то-то потом в 99% процетов никогда не делаются ,а так и остаются в проекте"

Какие комментарии... Я разве что то про комментарии говорил? Просто нужно использовать все рационально, а не бояться бабайки под кроватью, что он когда-нибудь придет и заберет. Никаких комментариев. Удобно к свойству обратиться, нужно это делать. И всё, без комментариев.
Цитата (Oyeme @ 26.10.2015 - 15:05)
Сложность не измеряется, в количествах посещаемости.
Я не про сложность говорю как раз. А про ресурсоемкость. Когда нагрузка небольшая, можно расслабиться и не думать о таких мелочах, как сеттеры. Я вот сейчас дебаггер пишу. Какой кайф. На все наплевать. Делаю, как мне удобно, ни о чем не задумываясь. Ибо там по определению ресурс пофигу. На работе я себе этого позволить не могу. И высказывания
Цитата
Как я уже говорил,хочешь скорости пиши все в 1 файл и не используй ООП.

делают мне больно smile.gif

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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
chee
Oyeme, я не принимаю эти пункты как аргументы, так как мне нужен код, пока что я не увидел явного обоснования для применения сеттеров/геттеров. Мне не надо перечислять что дают сеттеры и почему они хороши, мне нужен реальные примеры кода(на худой конец сценарии, который бы я смог воспроизвести) в которых сеттерры/геттеры просто были бы важны.

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
AllesKlar
Цитата (chee @ 26.10.2015 - 19:01)
Мне не надо перечислять что дают сеттеры и почему они хороши, мне нужен реальные примеры кода(на худой конец сценарии, который бы я смог воспроизвести) в которых сеттерры/геттеры просто были бы важны.

У меня в проекте.

Многопользовательское приложение, работает с одной базой, но на разных платформах.
При изменении любого конфигурационного параметра, необходимо в базе выкинуть флаг, чтобы приложения других пользователей перечитали конфиги.

_____________
[продано копирайтерам]
chee
AllesKlar, кто мешает на сохранении конфигурации, навешать событие?


_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
sergeiss
Цитата (AllesKlar @ 26.10.2015 - 21:14)
При изменении любого конфигурационного параметра, необходимо в базе выкинуть флаг, чтобы приложения других пользователей перечитали конфиги.

Не понял... Так "в базе" или "в коде ПХП"? При чем тут геттеры-сеттеры из ООП?
В базе для таких целей существуют триггеры.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
chee
Цитата (Santehnick @ 28.10.2015 - 13:00)
$component = new MyComponent;
$component->hours = 25; // private $_hours = null;
$component->hours = 12; // private $_hours = 12;

Вот этот пример очень трешовый, устанавливаешь 25, а он молча ничего не выставляет и ничего не говорит.

По самому примеру, то магия это не выход, так как концепция таже самая, что и геттеров и сеттеров, но только они скрыты и вызываются не явно.

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Dezigo
Есть пару объектов

Dezigo
- private $salary = 1600000;
+ public getSalary();

Oyeme
- private $salary = 900000;
+ public getSalary();


Twin
+ public $salary = 100000;


sergeiss
- private $salary = 300000;
+ public getSalary();

Я могу считать зарплату Twin, и изменить её.

1. Безопасность и инкапсуляция
2. Можно расширить - с Validation
AllesKlar
Казалось бы уже все сказано...
Вещаю с поля боя, так сказать...
Проект мультиязычный.
Переводы хранятся в базе.
Переводы кешируются в сессии.

В шаблоне встретил ... {$TRANSLATE.CURRENCY.BEFORE} и {$TRANSLATE.CURRENCY.AFTER}
Перерыл всю базу, все языки, не нашел значений для CURRENCY.BEFORE и CURRENCY.AFTER
Оказалось, что в аналах скриптов, на основании других значений из таблицы перевода генерировалось и записывалось в сессию эти два красавца.

И тут я очередной раз подумал "пилять, как же я ненавижу этот язык!!!!"
Потому что, когда я три года назад, при планировании проетка (тогда еще ярый ява-программист) предложил использовать геттеры и сеттеры, был дружно послан в жопу.
Зато теперь наши джуниоры пишут, суки, вот такую хрень.

А был бы только геттер и заблокированный сеттер, я бы завтра никому пистонов в задницу не вставлял ph34r.gif

_____________
[продано копирайтерам]
twin
Офигеть какой сногсшибательный аргумент. ohmy.gif
Цитата (AllesKlar @ 20.11.2015 - 01:27)
Потому что, когда я три года назад, при планировании проетка (тогда еще ярый ява-программист) предложил использовать геттеры и сеттеры, был дружно послан в жопу.

Правильно был послан. smile.gif
Целых три года понадобилось для того, чтобы где-то возникла небольшая проблемка. Три года!
Ну и что, очень много сил понадобилось, чтобы разобраться?

Зато целых три года сервак работал налегке, не мучаясь этими запорами. И дальше будет.

Свернутый текст
Тем, кто скажет про ассемблер и один файл отвечу сразу. Нужно на HTML писать. Там точно никаких непредвиденных ситуаций не возникнет.  smile.gif 


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Ron
Dezigo, какие интересные у тебя получились зарплаты... Это случайно, или с намеком? biggrin.gif
AllesKlar
Цитата (twin @ 20.11.2015 - 06:33)
Правильно был послан. smile.gif
Целых три года понадобилось для того, чтобы где-то возникла небольшая проблемка. Три года!
Ну и что, очень много сил понадобилось, чтобы разобраться?

Зато целых три года сервак работал налегке, не мучаясь этими запорами. И дальше будет.

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

Сервак работал и до меня долго.
Вот пришел я, кинули в суппорт.
Однажды моя душа не выдержала и я на ломанном матерном немецком сказал: А вы вообще, господа, имеете понятие об MVC (Отрицаемая twin-ом как ересь №1)???
Потому что генерация html выглядела вот так:
if (($this->zusrates["r".$i]->rate == PAY_RATE)) {
$payrate .= $this->out->getLine($this->out->getLine(
$this->out->getLine($this->zusrates["r".$i]->description, $class, "pay-online", "onclick=\"CheckBox.onClickPay();\"", "$oblig $calc $ratecode"). $popup_info, "rate-line-left").
$this->out->getLine(
$this->out->getLine('<img src="template/images/info.png">', 'info', "id") .
$this->out->getLine($price, $class_price." hiddenFields", "pay-online-discount", "", "price=\"".$this->zusrates["r".$i]->rental_total_price."\""), "rate-line-right")
,
"rate-line");
} else {
if (($this->zusrates["r".$i]->rate == "MAIL") || ($this->zusrates["r".$i]->rate == WIN_RATE )) {
$ratefirst .= $this->out->getLine($this->out->getLine(
$this->out->getLine($this->zusrates["r".$i]->description, $class, "r".$i, "onclick=\"CheckBox.onClick(this,false);\"", "rate=\"r".$i."\" $oblig $calc $ratecode"). $popup_info, "rate-line-left").
$this->out->getLine(
$this->out->getLine($price, $class_price, "price-r".$i, "", "price=\"".$this->zusrates["r".$i]->rental_total_price."\""), "rate-line-right")
,
"rate-line");
} else if (substr($this->zusrates["r".$i]->rate,-7) == SERVICE) {
$ratefirst .= $this->out->getLine($this->out->getLine(
$this->out->getLine($this->zusrates["r".$i]->description, $class, "r".$i, "onclick=\"CheckBox.onClick(this,false);\"", "rate=\"r".$i."\" $oblig $calc $ratecode"). $popup_info, "rate-line-left").
$this->out->getLine(
$this->out->getLine($price, $class_price, "price-r".$i, "", "price=\"".$this->zusrates["r".$i]->rental_total_price."\""), "rate-line-right")
,
"rate-line");
} else {
//print_r($this->zusrates["r".$i]); die();
if ($this->zusrates["r".$i]->sb == NULL && substr($this->zusrates["r".$i]->rate,-3) != CDW ){
$rates .= $this->out->getLine($this->out->getLine(
$this->out->getLine($this->zusrates["r".$i]->description, $class, "r".$i, "onclick=\"CheckBox.onClick(this,false);\"", "rate=\"r".$i."\" $oblig $calc $ratecode") . $popup_info
, "rate-line-left").
$this->out->getLine(
$this->out->getLine($price, $class_price, "price-r".$i, "", "price=\"".$this->zusrates["r".$i]->rental_total_price."\""), "rate-line-right")
,
"rate-line");
} else {
$rates .= $this->out->getLine($this->out->getLine(
$this->out->getLine($this->zusrates["r".$i]->description, $class_cdw, "r".$i, "onclick=\"CheckBox.onClick(this,false);\"", "rate=\"r".$i."\" $oblig $calc $ratecode"). $popup_info, "rate-line-left").
$this->out->getLine(
$this->out->getLine($price, $class_price, "price-r".$i, "", "price=\"".$this->zusrates["r".$i]->rental_total_price."\""), "rate-line-right")
,
"rate-line");
}
}
}


Этот "маленький" кусочек всего лишь генерирует div, в который вложено еще 2 div-а, в одном сторка - название тарифа, во втором стоимость. А теперь клиент просит, что если у тарифа есть доп. опции, то выводить шрифтом по-мельче там же.

Вот примерно в этом месте я сказал, что либо мы переписываем данный проект с нуля, либо я пошел...

Переписали.
Еще через полгода, когда очередной умник переписал физически файл и закоммител его в SVN, чем убил ВСЮ историю по данному файлу, мне удалось нытьем / угрозами / шантажем перевести предприятие на git (Отрицаемая twin-ом как ересь №2)

А еще один у нас монстр MSSQL и считает, что 99% должна делать база. И данные выплевывает из процедуры базы в формате xml, чтобы не делать 100500 запросов к базе. У него за весь проект ОДИН запрос, а потом сразу все в браузер щмяк... там же xml уже готовый.
А багу фиксить - это застрелиться... да по всем датабанкам клиентским потом пройтись.

А вот вчера аукнулись геттеры....

Это я к чему... можно писать нативно. Можно пренебрегать "модными" патернами. Их же придумали просто потому, что модно, а не потому, что процесс оптимизируется и приложение становится более устойчивым.
Можно. Если ты один на фрилансе, вывалил какашечку заказчику и внес его в скайпе в блеклист.

А в команде должны быть стандарты.


_____________
[продано копирайтерам]
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.