16.05.2012, 09:35
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
Проверки перед присваиванием
Одним из распространённых приёмов программирования является проверка на отсутствие в переменной некоторого значения перед присваиванием ей этого значения.
Иногда возникают ситуации, когда можно просто переприсвоить ей это значение, не проверяя есть ли оно там или нет (заведомо знаем, что есть).
Конечно, возникает мысль, что повторно выполняется присваивание переменной того же значения, которое в ней уже хранится, но эта мысль компенсируется тем, что если этого не делать, то придётся выполнять операцию проверки.
Разница в производительность этих двух операций не велика, так зачем тогда делать то, чего можно не делать.
Хотелось бы узнать, что это: просто стиль программирования или за этим стоят какие-нибудь другие объективные причины??
|
|
16.05.2012, 09:41
|
|
junior
|
|
Регистрация: 29.11.2011
Сообщений: 3,924
|
|
пример кода. На мой взгляд javascript в этом отношении вообще супер, в нем можно использовать логические операторы для присваивания значений.
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
|
|
16.05.2012, 09:59
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
Сообщение от bes
|
Одним из распространённых приёмов программирования является проверка на отсутствие в переменной некоторого значения перед присваиванием ей этого значения.
|
а зачем это делать? ну есть в ней значение, и хай с ним.
Сообщение от bes
|
Хотелось бы узнать, что это: просто стиль программирования или за этим стоят какие-нибудь другие объективные причины??
|
примеров кода бы. если я тебя правильно понял, то этот приём - полная дурость.(IMHO)
Сообщение от nerv_
|
пример кода. На мой взгляд javascript в этом отношении вообще супер, в нем можно использовать логические операторы для присваивания значений.
|
ты хотел сказать, в выражение засунуть присваивание)
|
|
16.05.2012, 10:24
|
|
Профессор
|
|
Регистрация: 15.02.2011
Сообщений: 471
|
|
function test (options) {
options = options || {};
return options.test;
}
|
|
16.05.2012, 10:27
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
Сообщение от DreamTheater
|
options = options || {};
|
я неправильно понял что плохого в "значениях по умолчанию" ?
|
|
16.05.2012, 10:45
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
Сообщение от nerv_
|
пример кода. На мой взгляд javascript в этом отношении вообще супер, в нем можно использовать логические операторы для присваивания значений.
|
Это понятно, что можно использовать, вопрос зачем их использовать в ситуациях, когда их можно не использовать.
Например, я мог бы сделать так, каждый раз устанавливая заново значения style.background, вместо того, чтобы работать с запоминанием того элемента, который был нажат.
<div style="cursor: pointer"
onclick="
var span = this.getElementsByTagName('span');
var dl = span.length;
var target = event.srcElement || event.target;
for (var i = 0; i < dl; i++) {
if (target == span[i])
span[i].style.background = 'green';
else
span[i].style.background = 'yellow';
}
">
<span>1</span>
<span>2</span>
<span>3</span>
</div>
|
|
16.05.2012, 10:49
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
Сообщение от melky
|
если я тебя правильно понял, то этот приём - полная дурость.(IMHO)
|
Так или не так это я и хотел бы выяснить на этой теме.
|
|
16.05.2012, 10:52
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
Сообщение от bes
|
Так или не так это я и хотел бы выяснить на этой теме.
|
я все равно не понял, что ты пытаешься обьяснить разжуй.
оно?
do {
var i;
if(i){
i += 1;
} else {
i = 0;
}
} while(1);
|
|
16.05.2012, 11:22
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
Сообщение от melky
|
я все равно не понял, что ты пытаешься обьяснить разжуй.
|
Я привёл пример выше.
Я хочу делать так как в этом примере, то есть переприсваивать значения переменным без проверки существуют они там уже или нет, и не ловить по этому поводу себя на мысли "а не пишу ли я говнокод", вот я и выясняю, говнокод это или нет.
|
|
16.05.2012, 11:26
|
|
''
|
|
Регистрация: 11.12.2011
Сообщений: 636
|
|
У меня тоже возникал такой вопрос. Что лучше?
Это
a = a||7
или это
a||(a=7)
|
|
|
|