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

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

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

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Цитата:
Сообщение от etc Посмотреть сообщение
Читается не проще совершенно.
Я знаю людей, которые всеми руками за все формальности при программировании. Ну, например, если бы на AS можно было бы писать в стиле перла-руби-груви-кофи:
Код AS3:
addChild displayObject unless contains displayObject //непоправимо плохо!
Как бы улучшить? Ну, разбить на две строчки – ведь условия-модификаторы нету ни в джаве, не в си.
Код AS3:
unless contains displayObject
    addChild(displayObject)
Но, черт возьми, какой ещё unless? Зачем нам новые key-words, ведь есть оператор not!
Код AS3:
if !contains displayObject
    addChild(displayObject)
А где скобки? Нужно вернуть скобки, немедленно!
Код AS3:
if (!contains(displayObject))
{
    addChild(displayObject)
}
И точку с запятой как бы не забыть.
Код AS3:
if (!contains(displayObject))
{
    addChild(displayObject);
}
Наверное, этот пример всё ещё можно сократить в одну строчку в сиджава языках, поэтому добавим что-нибудь ещё.
Код AS3:
if (!contains(displayObject))
{
    addChild(displayObject);
    return;
}
vs

Код AS3:
addChild displayObject and return unless contains displayObject
Я это к чему всё – это совершенно разные подходы к кодированию. Вариант в одну строчку с читаемым английским мне нравится куда больше – даже пьяный я смогу прочитать это как чистый английский, поняв смысл. "Добавь дисплейный объект и убейся, если конечно ты его содержишь". Как книжку прочитал, с едва уловимыми персонажами.
В случае разбивки на множество строк – это исчезает. Да, разбивать на несколько строк хорошая затея, если то что ты хочешь сделать стоит того. Но утежелять код ещё одной, а то и двумя лишними строчками кода ради такой глупости как "скрыть-показать" – не стоит этого. Чем более человечески (именно в литературном смысле) это написано – тем проще тебе самому будет с таким кодом работать. Чем меньше кода – тем меньше в нём ошибок.

Старый 05.12.2013, 14:45
Babylon вне форума Посмотреть профиль Отправить личное сообщение для Babylon Посетить домашнюю страницу Babylon Найти все сообщения от Babylon
  № 12  
Ответить с цитированием
Babylon
[+1 25.10.13]
[+4 18.03.14]
 
Аватар для Babylon

Регистрация: Jan 2006
Адрес: Москва, Зеленоград
Сообщений: 653
Отправить сообщение для Babylon с помощью ICQ
Глупо не понимать, в скобки можно вставить еще код. Главное чтобы нравилось компилятору.

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

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Цитата:
Сообщение от Babylon Посмотреть сообщение
Глупо не понимать, в скобки можно вставить еще код. Главное чтобы нравилось компилятору.
Главное чтобы нравилось программисту.
Добро пожаловать в 21 век, где средства разработки создаются для удобства человека!

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

Регистрация: Feb 2012
Сообщений: 1,540
Для меня понятнее нормальный C-подобный синтаксис и вот такое написание:
Код AS3:
if (!contains(displayObject))
{
    addChild(displayObject);
    return;
}
А не этот ужас:
Код AS3:
addChild displayObject and return unless contains displayObject
Это программирование, а не урок английского языка.

И сейчас память компьютеров далеко не 640 кб, можно и не стараться урезать все в одну строчку.

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

Регистрация: Sep 2002
Сообщений: 30,784
Цитата:
Сообщение от Psycho Tiger Посмотреть сообщение
В случае разбивки на множество строк – это исчезает. Да, разбивать на несколько строк хорошая затея, если то что ты хочешь сделать стоит того. Но утежелять код ещё одной, а то и двумя лишними строчками кода ради такой глупости как "скрыть-показать" – не стоит этого. Чем более человечески (именно в литературном смысле) это написано – тем проще тебе самому будет с таким кодом работать. Чем меньше кода – тем меньше в нём ошибок.
Это только твоё личное восприятие. Не каждый бухим прочитает чужой однострочный код. Чем проще и воздушнее конструкция на строке, тем быстрее она прочитывается.

Старый 05.12.2013, 23:02
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 16  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
И бряк не поставишь. Дениска прав.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

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

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Цитата:
Это программирование, а не урок английского языка.

И сейчас память компьютеров далеко не 640 кб, можно и не стараться урезать все в одну строчку.
Очевидно, ты не понимаешь смысла развития языков программирования. Чем больше можно сделать за одну строчку кода – тем круче язык программирования и тем проще программирование. Напротив, если бы любую игру можно было бы сделать через одну строчку "create_cool_game!" – все бы так играли и клепали.
Про соотношение старых лет и количества строчек это ты вообще бедово сказал: подумай, сколько строчек тебе нужно написать на ассемблере и сколько на языках более высоких чтобы получить один и тот же результат. Ты удивишься, когда узнаешь, что меньше?

Цитата:
Это только твоё личное восприятие. Не каждый бухим прочитает чужой однострочный код.
Забавно. Выходит твоё восприятие которое убеждает тебя что за "contains ? remove : add" нужно аж руки по пояс вырывать является самым правильным и определенно единственным, в то время как моё восприятие – исключительно моё личное?

Цитата:
Чем проще и воздушнее конструкция на строке, тем быстрее она прочитывается.
Согласен полностью. Только вот, видимо, у нас очень отличается понятие воздушности и простоты.
На меня сильно повлиял Ruby. Я хочу записывать в одну строчку решение своей подзадачи (изменить видимость объекта или сделать сложный маппинг данных), чтобы читая эту строчку я сразу прочитывал свою мысль, а не набор директив, домысливая какую цель я ставил за этим набором. Для этого, конечно, нужна хорошая функциональная составляющая языка. У AS3 она... ну как-бы есть, но нету
Тут нет правильного и неправильных вариантов. Язык императивный, с почти отсутствующим (или отсутствующим?) синтаксическом сахаром – он создан для команды-в-строчку. Но мне совершенно не стыдно пытаться в простейших конструкциях сократить код, как бы это сделали в более развитых языках, используя штатные средства.

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

Регистрация: Jul 2013
Адрес: Каскелен
Сообщений: 86
всем большое спасибо за ответы! разобрался я просто только начинаю учиться программированию, поэтому много нюансов возникает... насчёт записи в одну строку - действительно лучше такой синтаксис ведь? он действителен только в случае, если после условия выполняется одна функция вроде же? или есть всё же какой-то способ, чтобы несколько условий сразу выполнять? я имею в виду, что если записывать в одну строку
Код AS3:
contains(sendWindowCont) ? removeChild(sendWindowCont) : addChild(sendWindowCont);
, то как-нибудь после addChild(sendWindowCont) можно ещё другие действия выполнить?

Добавлено через 56 секунд
etc, почему руки поотрывать за такую запись? :\

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

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Цитата:
он действителен только в случае, если после условия выполняется одна функция вроде же?
Не совсем. Синтаксис такой:

Код AS3:
условие ? если_true : если_false
То есть:
Код AS3:
5 > 2 ? trace('true') : trace('false'); // true
5 < 2 ? trace('true') : trace('false') // false
trace( 5 > 2 ? 'yup' : 'nope'); //или так. Возвращается yup/nope непосредственно как аргумент в trace
Цитата:
то как-нибудь после addChild(sendWindowCont) можно ещё другие действия выполнить?
Ну, вообще в рядовом случае нежелательно, но можно воспользоваться оператором and (&&).
В своё время для меня было открытием, что a && b возвращает не true/false, а сначала исполняется a, если оно false – возвращается a, а если оно true (всё это с приведением типа, конечно) – то возвращается b.
Таким образом, т.к. addChild возвращает DisplayObject (а это объект, который при приведении к Boolean всегда true) можно добавить ещё чего-нибудь.
Код AS3:
contains(sendWindowCont) ? removeChild(sendWindowCont) : addChild(sendWindowCont) && trace("Yuppi!");
Но всё-таки, таким лучше не пользоваться. Например, removeChild ничего не возвращает и такой трюк не пройдёт. Ну и конкретно вот этот пример уже действительно дурно пахнет.

Старый 06.12.2013, 11:30
Fogflasher вне форума Посмотреть профиль Отправить личное сообщение для Fogflasher Найти все сообщения от Fogflasher
  № 20  
Ответить с цитированием
Fogflasher

Регистрация: Mar 2013
Сообщений: 290
Цитата:
Очевидно, ты не понимаешь смысла развития языков программирования. Чем больше можно сделать за одну строчку кода – тем круче язык программирования и тем проще программирование.
Тогда, например, китайский язык круче русского. И вообще буквенных языков.

У глупых европейцев какие-то мерзкие слова, фразы, достоевщина на пять страниц.
А во французском вообще 10 букв, но 4 звука. Сплошной символьный мусор во все поля.

Другое дело китайский - вставил иероглиф, который шифрует в себя повесть "Война и Мир", и всем хорошо.

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

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

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


 


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


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