Invis1ble
3.06.2016 - 16:36
Слишком много мусора сахара они добавляют, превращают язык в какое-то дерьмо. Конечно же области видимости для констант это хорошо, как и перехват нескольких исключений.
Но вот это
Цитата |
Поддержка строковых параметров в функции list() и новый синтаксис c [] |
мне не нравится, это свистелки и перделки для умственоларавелнутых
_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
killer8080
3.06.2016 - 23:58
Цитата (chee @ 3.06.2016 - 23:55) |
Конечно же области видимости для констант это хорошо |
Чем хорошо? Какой профит от этого?
Invis1ble
4.06.2016 - 00:02
Цитата (chee @ 3.06.2016 - 23:55) |
превращают язык в какое-то дерьмо |
Цитата (chee @ 3.06.2016 - 23:55) |
мне не нравится, это свистелки и перделки для умственоларавелнутых |
ну этими свистоперделками же не заставляет тебя никто пользоваться
_____________
Профессиональная разработка на заказЯ на GitHub |
второй профиль
Invis1ble
4.06.2016 - 00:07
Цитата (killer8080 @ 3.06.2016 - 23:58) |
Какой профит от этого? |
например есть класс, в котором есть некая константа, которая не нужна для внешнего кода
делаем её приватной и юзаем внутри
раньше всё это было на уровне соглашений, теперь на уровне языка
ничего мега-крутого, конечно, но как приятная плюшка - пойдёт, к тому же, думаю, автодополнение во вских IDE подпилят под эту фичу
_____________
Профессиональная разработка на заказЯ на GitHub |
второй профиль
Invis1ble
4.06.2016 - 00:14
class TheBestRandomGeneratorEver implements RandomGeneratorInterface
{
private const RANDOM_NUMBER = 42;
public function getRandomNumber() : int {
return self::RANDOM_NUMBER;
}
}
:)
_____________
Профессиональная разработка на заказЯ на GitHub |
второй профиль
Invis1ble
4.06.2016 - 00:21
Кстати, заметили, как всё движется в сторону развития ООП?
Представляете, какой бугурт у twin'а?
_____________
Профессиональная разработка на заказЯ на GitHub |
второй профиль
Zzepish
4.06.2016 - 00:41
Invis1ble
Я думаю, что twin'у пофигу.
Invis1ble
4.06.2016 - 00:43
Цитата (Zzepish @ 4.06.2016 - 00:41) |
Invis1ble Я думаю, что twin'у пофигу. |
А я думаю, что нет. 1:1
Ждём твина для получения
ОБЪЕКТивных и
независимых данных
_____________
Профессиональная разработка на заказЯ на GitHub |
второй профиль
killer8080
4.06.2016 - 00:58
Цитата (Invis1ble @ 4.06.2016 - 00:07) |
например есть класс, в котором есть некая константа, которая не нужна для внешнего кода делаем её приватной и юзаем внутри раньше всё это было на уровне соглашений, теперь на уровне языка |
Да это понятно, непонятна польза от этого. Сокрытие внутренних потрохов объекта имеет вполне практический смысл, это страховка от некорректного использования объекта внешним кодом, потенциально способным поломать внутреннюю логику работы самого объекта. В случае с константами это сокрытие, ради сокрытия, доступ к ней из вне не может никак навредить внутренней логике. Может смысл все таки какой то есть, просто для меня он не очевиден?
А вот сахар к list() прикольная фича
Цитата (Invis1ble @ 4.06.2016 - 00:02) |
ну этими свистоперделками же не заставляет тебя никто пользоваться |
но это не спасет меня от поддержки подобного кода. Но благо, что 7 версия еще не скоро войдет в массы, по объектным причинам.
_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Invis1ble
4.06.2016 - 01:00
Цитата (killer8080 @ 4.06.2016 - 00:58) |
Может смысл все таки какой то есть, просто для меня он не очевиден? |
Ну я пока что тоже ничего, кроме автодополнения исходя из контекста, не вижу.
_____________
Профессиональная разработка на заказЯ на GitHub |
второй профиль
Цитата (killer8080 @ 4.06.2016 - 00:58) |
В случае с константами это сокрытие, ради сокрытия |
Именно, и это очень важно, если у чего-то область видимости protected или private, то при чтении кода, можно сделать вывод что переменная напрямую используется только внутри класса и его потомков (в случае protected). Если же область видимости будет public, то невозможно сделать такое допущение при чтении, невозможно точно определить, для внешнего пользование это или нет.
_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Invis1ble
4.06.2016 - 01:08
Вот что нашёл:
Цитата (https://wiki.php.net/rfc/class_const_visibility) |
Classes in PHP allow modifiers on properties and methods, but not constants. It is an easily fixed inconsistency, and a feature that many want and most surprised that it doesn't already exist. Stack Overflow Thread
In a thread on php-internals a couple real world examples were offered.
- Defining bitmasks/magic numbers, but not exposing them globally. Before constants would be exposed allowing callers to depend on them.
- Help make it more clear what is important, exposing harmless constants clutters documentation needlessly.
|
killer8080
4.06.2016 - 01:13
Цитата (chee @ 4.06.2016 - 01:03) |
Именно, и это очень важно, если у чего-то область видимости protected или private, то при чтении кода, можно сделать вывод что переменная напрямую используется только внутри класса и его потомков (в случае protected). Если же область видимости будет public, то невозможно сделать такое допущение при чтении, невозможно точно определить, для внешнего пользование это или нет.
|
Согласен, это удобно для анализа кода.
Хм кажется я понял, приватные константы это страховка логики внешнего кода, а не внутреннего. Чтобы пользователи класса не юзали её как интерфейс.
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.