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

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 06.07.2009, 13:20
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 21  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Писать надо так, чтобы условие трактовалось однозначно. Написание if (переменная) не будет трактоваться однозначно.
Если пример будет разбирать другой программист, то у него возник вопрос, что подразумевалось под этой записью. Что переменная имеет значение? Или что оно не должна быть равным нулю? Или и то и другое?
__________________
(и)Нильс.ru | Плагины для FlashDevelop


Последний раз редактировалось iNils; 06.07.2009 в 13:24.
Старый 06.07.2009, 13:34
kackbip вне форума Посмотреть профиль Отправить личное сообщение для kackbip Найти все сообщения от kackbip
  № 22  
Ответить с цитированием
kackbip
 
Аватар для kackbip

Регистрация: Sep 2007
Адрес: Tomsk
Сообщений: 943
Отправить сообщение для kackbip с помощью ICQ Отправить сообщение для kackbip с помощью Skype™
Вообще-то многое делается в угоду понятности и ошибкоустойчивости.
Возможно и имеет смысл иногда написать while(numChildren>0) вместо while(numChildren).

Все таки данные условия часто проверяют не только значение числа, но и определен/не определен ли объект. Т.е. явное сравнение иногда может быть более понятным.

апд: Если бы инилс написал свое сообщение чуть раньше...


Последний раз редактировалось kackbip; 06.07.2009 в 13:37.
Старый 06.07.2009, 13:41
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 23  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Цитата:
Сообщение от Obi Посмотреть сообщение
будет неразбериха. Гораздо понятнее будет написать
Код AS1/AS2:
if(a != undefined) {
   while(b > 0) {
Так можно и к 'hello world' прибавить 17, и все знают, что 17 сконвертируется в строку. Просто логично это явно указать, поскольку число к строке прибавить нельзя.

И да, простые типы тут совсем не в тему.
Код AS3:
var tf:TextField = new TextField();
trace(Boolean(tf)) // true
Вот вам и текстфилд стал правдой.

К тому-же, что бы вы не говорили, но пятерка правдой быть не может. Воть хоть убейте меня, но — не может.
Если у вас в коде есть сравнения с undefined - у вас просто плохо написаный код. Переменная может быть undefined только если ее тип задан как var foo:*. Что, как уже говорилось, само по себе плохо. Я не говорю, что всегда писал / пишу хорошо, но за последние 2 года мне ни разу не пришлось сравнивать переменную с undefined в моем коде.

Простые типы как раз таки в тему, потому что вы конвертируете в Boolean, а он - простой тип. И пятерка и TextField могут быть правдой, вы сами только что это написали... мало того, что вы спорите с очевидным, так еще и с самим собой...

Цитата:
Сообщение от iNils Посмотреть сообщение
Писать надо так, чтобы условие трактовалось однозначно. Написание if (переменная) не будет трактоваться однозначно.
Если пример будет разбирать другой программист, то у него возник вопрос, что подразумевалось под этой записью. Что переменная имеет значение? Или что оно не должна быть равным нулю? Или и то и другое?
Причина не в однозначности, а в том, что это не элемент оформления кода, код будет выполнятся по-разному в обоих случаях.
Т.е. пример разного форматирования:
Код AS3:
if (            a           ) a++;
и
Код AS3:
if(a)
{
     a++;
}
оба примера идентичны, разница только в форматировании.

Код AS3:
if (a < 0) a++;
и
Код AS3:
if (a) a++;
примеры не идентичны и скомпилируются в разный байткод.
И, это уже мое скромное мнение: объяснения писать в комментах, незачем портить код для того, чтобы кому-то было удобнее читать.

ЗЫ. Особенно касательно переменных типа Number, int, uint - они не могут быть undefined ни при каких раскладах, максимум NaN для Number - поэтому ремарка не особо в кассу...
__________________
Hell is the possibility of sanity


Последний раз редактировалось wvxvw; 06.07.2009 в 13:45.
Старый 07.07.2009, 00:22
AL.exe вне форума Посмотреть профиль Отправить личное сообщение для AL.exe Посетить домашнюю страницу AL.exe Найти все сообщения от AL.exe
  № 24  
Ответить с цитированием
AL.exe
 
Аватар для AL.exe

Регистрация: Jan 2004
Адрес: Net
Сообщений: 1,049
Отправить сообщение для AL.exe с помощью ICQ
Цитата:
Сообщение от Obi Посмотреть сообщение
Ага, а то, что вы пятерку пытаетесь привести к булеву значению — это конечно нормально, продолжайте.
Еще раз внимательно посмотрите на приведенный мной код. Я не пытаюсь, а успешно привожу. Чего и Вам желаю.

Пустой стринг тоже вполне удачно приводится к false, к слову.
__________________
Дело не в тебе

Старый 07.07.2009, 01:00
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 25  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Цитата:
Причина не в однозначности, а в том, что это не элемент оформления кода, код будет выполнятся по-разному в обоих случаях.
Я ни слова об оформлении не сказал.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 07.07.2009, 01:59
grizzly вне форума Посмотреть профиль Найти все сообщения от grizzly
  № 26  
Ответить с цитированием
grizzly
Banned
[+1 15.07.09]

Регистрация: Jul 2005
Сообщений: 21
http://opensource.adobe.com/wiki/dis...-LanguageUsage

Код:
Do this:
if (flag)

Not this:
if (flag == true)
Код:
Explicitly coerce an int, uint, Number or String to a Boolean:

Do this:
if (n != 0)

Not this:
if (n)
сам адоб думаю веский аргумент

Старый 07.07.2009, 02:27
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 27  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
grizzly, адоб в данном случаи не аргумент. увы. то что с ними иногда мнение совпадает, это ничего не значит.

Старый 07.07.2009, 02:42
AL.exe вне форума Посмотреть профиль Отправить личное сообщение для AL.exe Посетить домашнюю страницу AL.exe Найти все сообщения от AL.exe
  № 28  
Ответить с цитированием
AL.exe
 
Аватар для AL.exe

Регистрация: Jan 2004
Адрес: Net
Сообщений: 1,049
Отправить сообщение для AL.exe с помощью ICQ
Я, если честно, вообще не вижу предмета спора.
__________________
Дело не в тебе

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

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

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


 


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


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