Задать вопрос
EvgeniyKvasyuk
@EvgeniyKvasyuk

А нужна ли переменная?

Имею привычку вначале любой функции объявлять переменные для любых данных, к которыми будет работать функция.
var func = function (str) {
var workStr = str,
    workStrLength  = str.length;
}

Делаю так даже если в переменную вносится свойство какой-то другой переменной (как описано выше) или выполняется какое-то одноразовое приметивное действие. Встает вопрос а стоит ли так делать? Или не стоит лишний раз плодить переменные?
  • Вопрос задан
  • 261 просмотр
Подписаться 1 Оценить Комментировать
Решения вопроса 1
viktorvsk
@viktorvsk
Макконнел говорит, что нужно различать input переменные и output переменные.
Т.е. если с одной стороны вы str используете на входе и иначе используете - на выходе - то разделение гуд. Если нет - то смысл непонятент.

Тогда ответ такой - если вам удобно (или вашей команде так удобно) - то ок. Иначе - неясно.
Все равно, что написать:
var trueValue = true но если это каким-то образом повышает читаемость, то это проблема дизайна
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 5
In4in
@In4in
°•× JavaScript Developer ^_^ ו°
workStrLength (12 символов) VS str.length (10 символов) выносить не стоит
А вот когда так, грубо говоря:
dDE VS document.documentElement.clientHeight, то, конечно, лучше записать отдельно.

А вообще, такие мелочи делают код приятнее и удобнее для просмотра. Писать так, как вы - правильно, в каком-то смысле, так что не волнуйтесь :)
Ответ написан
hahenty
@hahenty
('•')
Ничего страшного, ящитаю.
Ведь постепенно код растет, а вместе с ним и потребность в переменных. А так хоть какие-то будут описаны заранее.

И вообще, интерпретатор все стерпит.
Ответ написан
Комментировать
@dmitryKovalskiy
программист средней руки
Ну если у вас нет ограничений на размер файлов скриптов, да и минимизатор используете - то не страшно. Хотя привычка странная.
Ответ написан
Комментировать
IonDen
@IonDen
JavaScript developer. IonDen.com
Каждый раз так делать не нужно, ибо str уже автоматически объявлена внутри функции.
Но вот иногда, когда нужно облегчить восприятие кода для себя лично, тогда можно. Например:
function foo (superVeryLongStingName, config) {
    var str = superVeryLongStingName; // шорткат 1
    var option = config.group.value; // шорткат 2
}
Ответ написан
Комментировать
@vacslav-dev
web-developer
В данном случае лучше дать осознанное имя параметру функции, и использовать его в теле без создания новой переменной.
Отдельная переменная для длины строки тоже не имеет особого смысла.
Во временные переменные стоит выносить результат, возвращаемый каким-либо методом, если он вызывается в коде несколько раз, и возвращаемое значение гарантированно не изменится.
Например:
var $node = $(element);
var cntNode = $node.length;
if(cntNode < 5){
    $node.remove();
}


Также, для удобочитаемости при обходе массивов циклом for, или в подобных случаях можно записывать во внешнюю переменную элемент на данной операции
Например:
for(var i = 0; i < obj.valArray.length; ++i){
    var currentItem = obj.valArray[i];
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы