![]() |
Быдлокод?
Полный пример:
Код AS3:
Код AS3:
|
- нет.
|
Цитата:
С одной стороны выборка и занесение в вектор происходит за один проход без дальнейшей пробежки по XMLList-у с целью закладки результатов фильтрации в вектор, что благоприятно влияет на производительность, но с другой стороны код тяжелочитаем и на первый взгляд не очевиден, да и вообще как-то через костыли получилось))) |
e4x фильтр это называется, а не костыли)
|
Я вообще считаю e4x очень быдлокодным в принципе, но он сокращает запись и в чём-то удобен - остаётся только привыкнуть).
Минус его в абсолютной неООПности, т.к. выражения очень зависят от структуры конкретного XML. А RegExp вообще брэйнфак, но бывает очень нужен. |
Цитата:
К этому выражению добавляется вызов ф-ии, которая никоим боком не относится к фильтрации и возвращаемый ею результат тоже не имеет отношения к фильтрации. Более того, добавляется этот вызов с помощью "логического И", что должно под собой подразумевать фильтрационную осмысленность происходящего, а вот нет... Т.е. с точки зрения здравого смысла и логики - это полнейший маразм и совершеннейший быдлокод, но зато в один проход и одну строчку))) Добавлено через 6 минут Цитата:
Добавлено через 10 минут Хотя вы наверно имеете в виду его привязку к именам, а не к структурному скелету, про которую я подумал))) |
Если с проверками, то так
Код AS3:
|
А если нужно будет брать из LOCATION ещё какую-то информацию?
Этот код не читаем (антисоциальный, бескультурный) и крайне не гибкий (грубый, неотёсанный). Его вполне можно назвать быдлокодом. |
Цитата:
|
Цитата:
Кроме того такая запись Код:
<LOCATION ID = "5" STATUS = "OPEN" />Код AS3:
Может быть я конечно переборщил с телепатией, но в целом это кажется признаком не очень хорошего стиля. |
>>но в целом это кажется признаком не очень хорошего стиля.
Можно подробней, чем не угодил стиль в случае, когда в каком-то месте программы надо получить список локаций с одним конкретным статусом (даже если статусов более двух)? Можно, конечно, предположить, что вам не понравилось, что используется магическая строчка "OPEN", а не статическая константа какого-нибудь класса вроде LocationStatus.OPEN, но при чем же здесь как таковая фильтрация xml с занесением результатов в вектор? |
А может и не существует. Может разбор вообще ведется после определенного действия пользователя, которого может и не быть.
Это как с if, в зависимости от числа условий, сложность и вложенность if может быть различной. Не давно была тема про "?:". Там тоже звучали слова про "читабельность". Вот сейчас у меня в проекте есть список действий в switch, больше десятка. Но в зависимости от дополнительного условия, эти действия могут запускаться с разными числами. Типа Код AS3:
Здесь так же. Решается конкретная задача и для этой задачи такой вид кода допустим. Будет другая задача, можно будет пересмотреть код. Будет третья, тоже может придется. А еще... можно писать комментарий над строкой. Кстати, написание regexp тоже смахивает на быдлокодерство, предлагаю разбирать строки вручную с помощью if и indexOf :D |
?: и regexp прекрасно справляются со своими задачами не уменьшая читабельности, а иногда и улучшая, если ими не злоупотребляют, как здесь с фильтром.
Хороший стиль это субъективное понятие, каждый сам выбирает для себя правила (обычно они включают в себя большинство более менее общепринятых). В целом - это умение писать читабельный предсказуемый код, который не раздражает написавшего и тех, кто его читает. |
f.g.programmer, вот и фильтр прекрасно справился со своей задачей )
Хотите увидеть настоящий быдлокод? Код AS3:
|
В чем здесь быдлостность кода?)))
|
Видимо стоит писать так:
Код AS3:
|
Цитата:
|
быдлокод - это когда выпоняются лишние телодвижения по отношению к коду. С e4x такого нет. Там четко указано, что он должен сделать, пусть и не очень читаемо.
Посетите *****код.ру - поймете, что такое быдлокодерство. Вот это, например, быдлокод. Как думаете, что здесь вычисляется? Код AS3:
|
Цитата:
|
Код AS1/AS2:
|
Цитата:
Если учитывать, что if работает с логическим результатом в условии, то проверять true на равенство true, это быдлокодерство. |
Цитата:
|
Не нужно делать проверки, XML динамический класс, нужно только удостовериться, что обращаемся именно к XML а не куда-то в другое место:
Код AS3:
|
Цитата:
|
Исключения он не выкинет, но тогда создается потенциальная опасность получить нулевое значение там, где его нет - и все равно придется делать проверки:
Код AS3:
Цитата:
|
Берем мой код выше, и удаляем проверку на ID
Код AS3:
Код AS3:
|
Цитата:
Код AS1/AS2:
|
Цитата:
|
ну если найдутся желающие, то почему бы и нет?))
|
Цитата:
|
Boolean не может быть null или undefined, а кто может, тот преобразуется в false.
|
Цитата:
|
Цитата:
|
Цитата:
Цитата:
|
Цитата:
|
ну так вы используйте valueOf() - то, о чем говорил wvxvw и потом я ему отвечал про нулевое значение, бог-весть от куда взявшееся)))
|
Потому что XML динамический, ошибки при обращении к несуществующему свойству быть не может, но просмотр цепочки областей видимости внутри фильтра работает несколько иначе чем вне его: сначала будут просмотрены свойсва XMLя, если вернется undefined, то дальше он будет смотреть аргументы функции, потом локальные переменные, потом поля класса и глобальные переменные. Т.как valueOf() вернет ссылку на самого себя, то мы избежим просмотра всей цепочки (операция уже как бы будет вне фильтра), и если свойства нет, то будет просто undefined.
|
Цитата:
|
Ыыыы...))))))
Код AS3:
|
Цитата:
Вотъ: Код AS3:
|
| Часовой пояс GMT +4, время: 18:07. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.