Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Регистрация Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flasher.ru > Флейм

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 09.10.2015, 11:34
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 41  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,643
Записей в блоге: 4
Тут и аргументировать нечего) Из этой темы 99% кода должно быть на том же сайте) Какое-то совершенно нелепое действие с двумя функциями, ради решения простейшей задачи. Вместо этого можно было просто написать
Код AS3:
if (!someArg) someArg = new SomeClass();

Старый 09.10.2015, 11:54
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 42  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
И все же я не понял, что делает код, представленный callme.
__________________
Поймай яблоко 2!

Старый 09.10.2015, 11:56
callme вне форума Посмотреть профиль Отправить личное сообщение для callme Найти все сообщения от callme
  № 43  
Ответить с цитированием
callme
 
Аватар для callme

Регистрация: Dec 2014
Сообщений: 312
Цитата:
Сообщение от Zebestov Посмотреть сообщение
callme, лучше расскажи, что твой код делает.
Если нужно создать новый объект, вызываем функцию someAction. Если уже есть готовый объект, то вызываем функцию someAction_optimized.

То есть отдельная функция на каждый случай.

Старый 09.10.2015, 12:11
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 44  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
И в чем прикол, если одна функция решает это в одну строку и даже вызов ее от этого не меняется (для совместимости или скорее для поддержания привычки плодить мусор).
__________________
Поймай яблоко 2!

Старый 09.10.2015, 12:32
callme вне форума Посмотреть профиль Отправить личное сообщение для callme Найти все сообщения от callme
  № 45  
Ответить с цитированием
callme
 
Аватар для callme

Регистрация: Dec 2014
Сообщений: 312
Zebestov, я сам так тоже не пишу, но почему — не знаю — строго по полочкам причины не расставлены.

Старый 09.10.2015, 12:49
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 46  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Не, я не про привычки. Передавать в метод/функцию в качестве необязательного аргумента объект, в который пишется результат работы класса в некоторых задачах дает существенный прирост производительности. А как побочный эффект — еще и мусора меньше, что тоже позволяет реже видеть "подрывы" не вовремя отработавшего GC.
__________________
Поймай яблоко 2!

Старый 09.10.2015, 16:57
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 47  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Новосибирск :D
Сообщений: 6,597
Записей в блоге: 17
Цитата:
Сообщение от caseyryan Посмотреть сообщение
я даже знаю где этот код должен быть
Гм, раньше там было смешно. Ну, проверка на Boolean через конвертацию в строку и сверку с длинной. Порой делая ревью кода у индусов смеюсь, когда у них что-то вроде этого:
Код AS3:
for (var i = 0; i < 3; i++){
switch(i){
case 0:
....
break;
case 1:
...
break;
case 2:
...
break;
}
}
Но сейчас на сайте с кодоляпами какая-то желчь, вроде "ха-ха-ха, посмотрите, какой он неуклюжий рукожоп! Ну же, тыкнем пальцем в него и посмеёмся!".
Давайте не забывать, что люди пишут плохой (хотя, моё зрение о "плохом" во многом изменилось) код не потому что они не могут писать хороший, а потому что они ещё просто не научились.

Старый 10.10.2015, 14:28
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 48  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,782
Цитата:
Сообщение от Psycho Tiger Посмотреть сообщение
С || и ||= чуть сложнее на первый взгляд и нужно знать что логический оператор "или" возвращает не логический тип Boolean по многим заблуждениям (вот тут то все и валятся!), но это настолько устоявшееся выражение в других языках (особенно с теми, у которых есть statement modifiers), что мне удивительно его игнорирование здесь.
Слушай, чем ближе к основам, тем проще. ||= разраб встречает далеко не сразу и значительно реже, чем if (!foo).

Старый 10.10.2015, 14:58
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 49  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Новосибирск :D
Сообщений: 6,597
Записей в блоге: 17
Цитата:
Сообщение от etc Посмотреть сообщение
Слушай, чем ближе к основам, тем проще. ||= разраб встречает далеко не сразу и значительно реже, чем if (!foo).
Да, твоя позиция понятная и вполне правильная, но у меня другая (тоже правильная). Сейчас объясню.

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

Оператор ||= же делает только одну из всех возможных функций: инициирует переменную значением, если она ещё не инициирована. Больше она ничего делать не может. Здесь нельзя опечататься в условии или как-то напортачить, здесь короткая запись, здесь нет повторения имени переменной – а это DRY, это хорошо.

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

Старый 11.10.2015, 14:18
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 50  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,643
Записей в блоге: 4
Цитата:
Сообщение от Psycho Tiger Посмотреть сообщение
Гм, раньше там было смешно. Ну, проверка на Boolean через конвертацию в строку и сверку с длинной.
Давайте не забывать, что люди пишут плохой (хотя, моё зрение о "плохом" во многом изменилось) код не потому что они не могут писать хороший, а потому что они ещё просто не научились.
Да, но такие ляпы как раньше все равно еще встречаются

Создать новую тему Ответ Часовой пояс GMT +4, время: 19:54.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 19:54.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2022, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.