Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 22.10.2008, 22:20
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

Сообщение от Kolyaj
а тот, который плохо читаем
Так я о том и говорю, что каждый второй берется судить всех по данному вопросу, употребляя выражение - "говнокод", не осознавая, что вытекает это очень часто просто лишь из локальных привычек; недавно на одном из форумов был топик про выражения в php, так там человеку загадили всю карму под предлогом "говнокод. так вообще неудобочитаемо." только лишь потому, что сами писать так не привыкли (и что еще хуже - не понимают в силу отсутствия опыта для чего нужны те или иные конструкции). В то время, как тема была не про стайл гайды, и не про чьи-то локальные привычки ставить скобку с новой строки или в той же, а про возможности языка (я поддерживал автора).

Речь шла примерно о следующих конструкциях:

var b = b || 'defaultValue';
!c && (c = 'defaultValue');


Кстати, я их почти каждый день использую вместо if'ов (если условия одиночные, максимум - двойные).
__________________
Тонкости ECMAScript
Ответить с цитированием
  #12 (permalink)  
Старый 22.10.2008, 22:30
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Zeroglif
В этом смысле parseInt(str) - тот же говнокод
Т.е. из названия функции parseInt вообще непонятно, что она делает?

Dmitry A. Soshnikov, согласен, в принципе.
Ответить с цитированием
  #13 (permalink)  
Старый 22.10.2008, 23:05
...
Отправить личное сообщение для Zeroglif Посмотреть профиль Найти все сообщения от Zeroglif
 
Регистрация: 09.03.2008
Сообщений: 216

Сообщение от Kolyaj
Т.е. из названия функции parseInt вообще непонятно, что она делает?
Название названием, а что за названием происходит надо же знать. У плюса нет никакого названия, но если банально знать суть этого оператора (чего он, пёс, делает), то и чего его читать-то, там 4 действия (вычислить, получить значение, превратить в число (если не число), вернуть). Вполне себе читаемый простой оператор, без наворотов. Даже сравнивать нельзя с parseInt, где и название так себе, а главное - суть-то навороченнее в разы, достаточно сравнить алгоритмы. Нужно задавать основание, нужно учитывать браузерные особенности, нужно знать, какие значения будут отсечены (та же пустая строка в текстбоксе), нужно помнить, что это обычный идентификатор (поиск по scope chain), нужно помнить, что не-строки будут конвертированы со всеми вытекающими... и всё это ради примитивного превращения в число, для чего уже есть оператор (раз) и функция с более понятным названием(два)...

p.s. я не отвергаю парсы, просто они мне кажутся совершенно одинаково читаемыми с унарным плюсом "по названию", менее читаемыми по сути происходящего, и менее оптимальными для простого преобразования типа...
Ответить с цитированием
  #14 (permalink)  
Старый 22.10.2008, 23:05
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Сообщение от Dmitry A. Soshnikov Посмотреть сообщение
Речь шла примерно о следующих конструкциях:

var b = b || 'defaultValue';
!c && (c = 'defaultValue');


Кстати, я их почти каждый день использую вместо if'ов (если условия одиночные, максимум - двойные).
Я тоже стараюсь использовать подобные конструкции вместо «if(…) {…} else if(…) {…} else(…) {…}» и считаю, что тот, кто как-то отрицательно отзывается о таком использовании логических выражений, просто не до конца знает особенности языка и ему что-то там «ни-и-и-поня-я-ятна», поэтому это плохо.
Ответить с цитированием
  #15 (permalink)  
Старый 22.10.2008, 23:45
...
Отправить личное сообщение для Zeroglif Посмотреть профиль Найти все сообщения от Zeroglif
 
Регистрация: 09.03.2008
Сообщений: 216

Сообщение от Dmitry A. Soshnikov
var b = b || 'defaultValue';
А var точно нужен?

Само собой, это удобные и понятные операторы, для профессионала они, в принципе, не должны снижать читабельность, проблема лежит в программировании только ради красоты/компактности/понтов, когда оператор вроде верный а место, куда его засунули чужое, как пример таких бешеных понтов - тынц.

Сообщение от Octane
отрицательно отзывается
Можно и отрицательно отозваться, когда чересчур закручено или не к месту, всё от контекста зависит, сами по себе шугарные операторы никого не должны пугать, даже... запятая.
Ответить с цитированием
  #16 (permalink)  
Старый 23.10.2008, 12:04
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

Zeroglif, спора нет, конструкции в коде только ради понтов я не рассматриваю.

Сообщение от Zeroglif
оператор вроде верный а место, куда его засунули чужое
а в этом случае место допустимое? - b = b || 'defaultValue'; ? те, кто не знаком с особенностью данного оператора в JS или Python (когда в случае false возвращается значение второго) тоже назвывали эту конструкцию понтами; те, кто знаком - вполне нормально относились (при одиночных условиях можно сразу в функцию передавать, например):

callSomeFunction(value || defaultValue);


С другой стороны - можно было вычислить это заранее:

var passValue;
if (value) {
  passValue = value;
} else {
  passValue = defaultValue;
}
callSomeFunction(passValue);


И это, вроде как, уже не понты (другое дело, что кода стало на "пару строк" больше, да и passValue осталась в скопе - но это "мелочи" =)).

Сообщение от Zeroglif
А var точно нужен?
формально, конечно, не нужен =) - я понимаю, что если уже b используется значит переменная объявлена (не важно - в глобальном скопе или в пришла в качестве формального параметра); а фактически - просто объявится дважды (при объявлении не повлияет на результат, а при присваении перезапишется).
__________________
Тонкости ECMAScript
Ответить с цитированием
  #17 (permalink)  
Старый 23.10.2008, 19:13
...
Отправить личное сообщение для Zeroglif Посмотреть профиль Найти все сообщения от Zeroglif
 
Регистрация: 09.03.2008
Сообщений: 216

Сообщение от Dmitry A. Soshnikov
а в этом случае место допустимое? - b = b || 'defaultValue'; ?
наверное если это в стиле е = е || event; когда заранее известно, что свойство 'е' точно в скопе существует и выбор понятен (никаких тебе falsy, только объекты, один из двух), удобный оператор, позволяет не разворачивать 'if-else' ради присваивания...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите или подскажите где искать. designovermatter Общие вопросы Javascript 2 09.10.2008 18:12
Что такое "javascript:document.login.submit()" i_live_in_Moscow Общие вопросы Javascript 21 30.09.2008 15:25
Хорошо ли так делать? Octane Общие вопросы Javascript 2 22.09.2008 21:44
Не подскажите, как убрать подчеркивание ссылки href? Forgott Общие вопросы Javascript 1 20.05.2008 11:47
Как узнать что находится в <label></label> duke_nu Events/DOM/Window 4 22.04.2008 21:53