Цитата:
Сообщение от etc
Слушай, чем ближе к основам, тем проще. ||= разраб встречает далеко не сразу и значительно реже, чем if (!foo).
|
Да, твоя позиция понятная и вполне правильная, но у меня другая (тоже правильная). Сейчас объясню.
Я за использование всех возможностей языка, если они не вредят. В чем польза ||= против if? Её банально проще читать, в ней нельзя ошибиться и даже код получается короче.
Код AS3:
if (!foo) foo = new Foo();
Что видит программист? Условие. Он смотрит на условие, он смотрит на отрицание, смотрит на правую часть выражения и сравнивает переменные. Он
обязан это сделать читая код. Когда пишешь код – здесь
можно ошибиться опечаткой, особенно если язык не требует явного введения переменных.
Код AS3:
if (!polo5) polos = new Polos();
Пример, бесспорно, дурацкий. Суть в том, что внутри if может быть что-то другое и это другое требует проверки программистом при чтении/дебаге.
Оператор ||= же делает только одну из всех возможных функций: инициирует переменную значением, если она ещё не инициирована. Больше она ничего делать не может. Здесь нельзя опечататься в условии или как-то напортачить, здесь короткая запись, здесь нет повторения имени переменной – а это DRY, это хорошо.
Операторы и есть основа языка. Использование их в угоду явному ветвлению кода и есть простота. То, что разрабы встречают это реже не повод не использовать инструмент, который лучше. Из за таких маленьких улучшений код становится легче и проще.