Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 16.05.2012, 11:38
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от bes Посмотреть сообщение
Я привёл пример выше.
Я хочу делать так как в этом примере, то есть переприсваивать значения переменным без проверки существуют они там уже или нет, и не ловить по этому поводу себя на мысли "а не пишу ли я говнокод", вот я и выясняю, говнокод это или нет.
говнокод - понятие субъективное. для меня оное - это изобретение велосипедов, когда существует нативный способ решить задачу. ( например проверять, соответствует ли регвыр строке с помощью String.match )

а так ... пиши как хочешь, и не задумывайся, никогда. потом, как всё будет функционировать, будешь сидеть и исправлять, повышать читаемость. обычно это так делается
Ответить с цитированием
  #12 (permalink)  
Старый 16.05.2012, 11:40
Аватар для DreamTheater
Профессор
Отправить личное сообщение для DreamTheater Посмотреть профиль Найти все сообщения от DreamTheater
 
Регистрация: 15.02.2011
Сообщений: 471

Сообщение от melky Посмотреть сообщение
я неправильно понял что плохого в "значениях по умолчанию" ?
А если значение по-умолчанию undefined или null?
Ответить с цитированием
  #13 (permalink)  
Старый 16.05.2012, 11:53
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от melky
а так ... пиши как хочешь
Всё-таки попытаемся выяснить для чего этот приём так часто используется в программировании.
Ответить с цитированием
  #14 (permalink)  
Старый 16.05.2012, 12:26
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от DreamTheater Посмотреть сообщение
А если значение по-умолчанию undefined или null?
я в таких случаях не пишу так вообще,я уже давно так не делаю. непереданные переменные просто меняют работу кода, они не получают значения.

Сообщение от bes Посмотреть сообщение
Всё-таки попытаемся выяснить для чего этот приём так часто используется в программировании.
необязательные аргументы - которые можно опустить при вызове функции, и которые меняют её поведение (или не меняют). флаги сюда тоже относятся.

пример:

var dump = function(variable, useAlert){ 
  if(useAlert){ 
    alert(variable);
  } else {
    console.log(variable);
  }
};

ещё пример - функция ожидает объект в качестве аргумента. если вызвать её без ничего, то будет ошибка при попытке обращения к info, как к объекту.
var ajax = function(info){
  info = info || {};

  makeReq(  info.url  );
};

сюда же относится обычная строчка в обработчике клика
var handler = function(e){
  e = e || window.event;
  // ....
}


ещё пример - используется в GCC при сжатии - выполнится выражение справа, если выражение слева вернёт false
var foo = function(){ alert("Foo called!"); };

var bar = function(dontCallFoo){
  dontCallFoo || foo();
};

bar("я уже не falsy");

falsy значение :
var foo = function(){ alert("Foo called!"); };

var bar = function(dontCallFoo){
  dontCallFoo || foo();
};

bar(/* undefined */);
Ответить с цитированием
  #15 (permalink)  
Старый 16.05.2012, 15:51
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

melky, в ваших примерах демонстрируется вынужденная необходимость проверок для обеспечения работоспособности и безошибочности кода (проверка на существование, выбор используемого объекта через ||), я же пытаюсь выяснить несколько другое.

Попытаюсь сформулировать на другом примере.
Например, есть функция, которая должна присваивать переменной n значение 2.
Обычно её реализуют так.

function f() {
  if (n != 2) n = 2;
}


То есть вставляют проверку и не присваивают переменной n значение 2, если оно там уже хранится, хотя можно было сделать так:

function f() {
  n = 2;
}

То есть присвоить переменной n значение 2 в любом случае (переприсвоить в случае, если там итак было уже значение 2).

А так как обычно используют первый способ, отсюда и вопрос: в чём смысл выполнения таких проверок (стиль, производительность или что-то другое).
Ответить с цитированием
  #16 (permalink)  
Старый 16.05.2012, 16:16
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от bes
А так как обычно используют первый способ, отсюда и вопрос: в чём смысл выполнения таких проверок (стиль, производительность или что-то другое).
по примеру - ни в чем. Думаю, данный вопрос следовало задавать в рамках контекста (определенного кода)
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #17 (permalink)  
Старый 16.05.2012, 17:10
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от nerv_
по примеру - ни в чем
У меня складывается подобное мнение, но данные проверки в программировании почему-то всегда используют, например, в set-методах.

Например,
<div id="myDiv"></div>

<script>
function setColor(value) {
 if (myDiv.style.color != value) 
    myDiv.style.color = value;
}
</script>


Сообщение от nerv_
Думаю, данный вопрос следовало задавать в рамках контекста (определенного кода)
Какой тут может быть контекст, факт - используют (привёл пример - в set-методах), зачем используют - пока не понятно.

Последний раз редактировалось bes, 16.05.2012 в 17:20.
Ответить с цитированием
  #18 (permalink)  
Старый 16.05.2012, 17:52
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от bes
У меня складывается подобное мнение, но данные проверки в программировании почему-то всегда используют, например, в set-методах.
тут вопрос иначе стоит: дрюкать дум лишний раз или нет? Лучше нет)
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #19 (permalink)  
Старый 16.05.2012, 18:38
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от nerv_
тут вопрос иначе стоит: дрюкать дум лишний раз или нет? Лучше нет)
Проверка-то его тоже дрюкнет, поэтому вопрос остаётся.
Ответить с цитированием
  #20 (permalink)  
Старый 17.05.2012, 09:23
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Может быть у кого-нибудь есть ещё какие-нибудь предположения по этой теме??
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подгрузка скрипта перед редиректом ссылки Cepin Javascript под браузер 4 10.12.2010 21:06
Функция проверки onDomReady. Не могу разобраться с кодом vandy3 Общие вопросы Javascript 6 08.11.2010 09:47
Ротатор ,как сделать проверку перед показом? tom Общие вопросы Javascript 6 09.03.2010 15:20
Результаты проверки сервером формы ekkl jQuery 3 30.01.2010 14:29
Удалить ряд символов перед или после курсора до определенного сивола brd Javascript под браузер 3 30.10.2009 08:20