Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   О стиле написания кода (http://www.flasher.ru/forum/showthread.php?t=203759)

Fogflasher 07.10.2013 12:28

О стиле написания кода
 
Встречалось, в общем, два типа написания кода в AS3.0.

Вариант 1, с отступами, например:

Код AS3:

private function removeText(e:Event)
                {
                        if (infoPanel.contains(infoPanel.message_dtx))
                        {
 
                                trace("Removing text...");
                                infoPanel.removeChild(infoPanel.message_dtx);
                        }
                        else
                        {
                                trace("Nothing to remove!");
                        }
                }


Вариант 2, сжатый, например:
Код AS3:

private function removeText(e:Event){
                        if (infoPanel.contains(infoPanel.message_dtx)){
 
                                trace("Removing text...");
                                infoPanel.removeChild(infoPanel.message_dtx);}
                        else{
                                trace("Nothing to remove!");}
                }

Мне, как новичку, первый кажется более понятным и эргономичным.
А второй - ненужной шифрованной непоняткой.

Однако, не редко, книги по AS3.0 написаны как раз во втором стиле.
А также многие продвинутые юзеры этого форума, тоже пишут во втором стиле.

Интересно, с чем это связано? Почему второй стиль существует, и зачем его использовать?
Или может с опытом приходит другое виденье кода, и стиль уже не важен (а значит второй чуть проще, форматировать не надо).
В книгах, в прочем, могу предположить, что так страницы экономить лучше, меньше строк выходит.

caseyryan 07.10.2013 12:36

Первый называется стиль Олмана.
Вообще, я лично всегда использую второй, потому, что он менее громоздкий и удобочитаемый. Хотя тут какой-то корявый вариант. Закрывающая скобка в любом случае должна переноситься на следующую строку. Иначе все выглядит как каша.

Zebestov 07.10.2013 12:39

Первый вариант тоже кривой — зачем два лишних tab-а в теле метода?

Добавлено через 2 минуты
Код AS3:

private function removeText(e:Event):void // void забыл указать
{
        if (infoPanel.contains(infoPanel.message_dtx)) // это не гарантия того,
        {
                trace("Removing text...");
                infoPanel.removeChild(infoPanel.message_dtx); // что тут не вылетит ошибка в рантайме
        }
        else
        {
                trace("Nothing to remove!");
        }
}


Wolsh 07.10.2013 12:59

Вложений: 1
Цитата:

Или может с опытом приходит другое виденье кода, и стиль уже не важен
скорее, новички не думают о стиле; "с опытом" же начинаешь даже читать книги, посвященные исключительно стилю написания кода.
Цитата:

(а значит второй чуть проще, форматировать не надо).
В нормальных редакторах кода все настраивается и форматируется автоматически, да и сниппеты создаются сразу в нужном форматировании.
Вложение 30084

mikhailk 07.10.2013 13:09

Цитата:

Интересно, с чем это связано? Почему второй стиль существует, и зачем его использовать?
На самом деле, понятие "стиль" несколько шире понятия "язык программирования" и в определенном смысле выбор того или иного стиля определяется языком, его логикой и его конструкциями.

Я лично работаю в трех языка програмирования (AS3, серверный JS, PHP). На AS3 мне комфортно в первом варианте стиля, но если начинаешь писать также на JS, то очень быстро сталкиваешься с проблемой читаемости кода, там целесообразно придерживаться второго варианта, поскольку он существенно более компактен. Что же касается PHP, там оба стиля в чистом виде дискомфортны, поэтому там появляется некий симбиоз.

Но это сугубо имхо.

Akopalipsis 07.10.2013 13:18

А мне кажется все ещё более просто - первый вариант, это настройки по умолчанию FD,FB.
А второй, это настройки по умолчанию CC.
Цитата:

но если начинаешь писать также на JS
Если не ошибаюсь, а я не ошибаюсь, просто не могу вспомнить, в JS если не писать как во втором примере,
то есть случай, когда будет ошибка.

Fogflasher 07.10.2013 14:48

All, в целом понятно, спасибо. Ну я писал варианты навскидку, поэтому оба кривоватые.

Zebestov, а если void поставить, то гарантия не-вылета в рантайме появляется?
Или надо еще что-то добавить?

Zebestov 07.10.2013 14:56

Цитата:

Сообщение от Fogflasher (Сообщение 1147887)
Или надо еще что-то добавить?

Скорее изменить.

Вместо такой проверки
Код AS3:

if (infoPanel.contains(infoPanel.message_dtx)) {}

в самом общем случае следует проверять так
Код AS3:

if (message_dtx.parent && message_dtx.parent == infoPanel) {}

потому что
Цитата:

Нижестоящие элементы второго, третьего и последующих уровней возвращают значение true.
Следовательно, нахождение message_dtx где-то в контейнере infoPanel — когда contains() вернет true — не гарантирует, что infoPanel является непосредственным родителем message_dtx.

Fogflasher 07.10.2013 15:32

Спасибо, идею понял.

Хотя у меня в таком виде ошибку выдает.
Цитата:

1120: Access of undefined property message_dtx.
Изменил вот так:
Код AS3:

if (infoPanel.message_dtx.parent && infoPanel.message_dtx.parent == infoPanel)

Так работает.

expl 07.10.2013 18:39

Цитата:

Мне, как новичку, первый кажется более понятным и эргономичным.
А второй - ненужной шифрованной непоняткой.
Второй("египетский", "единственно верный") позволяет уместить больше строчек на экране.
Тут то как раз всё понятно, если бы большинство as3-проектов не было написано бы в стиле Олмана - я бы в египетском и писал.

Сложнее понять существование других стилей. Например авторы ShurikenMagic написали свою либо вообще без отступов, только с отбивкой пробелами по непонятным законам. И ничё - нормально работает, люди покупают, хотя зачем они так сделали - за граню понимания.

Египетский стиль обычно используют Java-программисты,
стиль со скобочкой на новой строке - С/C++/C# - программисты

Flex написан в стиле Олмана, большинство либ для as3 написано в этом же стиле. Так что для AS3 кодера выбора практически нет - пишем скобку на новой строке.

Update:
Невнимательно просмотрел, то что вы привели - это не египетский стиль, это действительно что-то страшное, я только один раз такое видел и то в левых исходниках, с которыми не надо было работать O_o,
А вот египетский стиль, который используют яверы, выглядит так:
Код AS3:

private function removeText(e:Event) {
    if (infoPanel.contains(infoPanel.message_dtx)) {
        trace("Removing text...");
        infoPanel.removeChild(infoPanel.message_dtx);
    } else {
        trace("Nothing to remove!");
    }
}



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

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