При написания кода, очень много времени уходит на придумывания названия переменных( Посоветуйте, дайте советы, как научится быстро и правильно давать название переменным?
И еще, насчет сокращение переменных, как лучше:
pos or position
length or len
req or request
итд
Есть еще рекомендации по глаголам. Если функция задает значение, то это "set", если возвращает значение (но не boolean), то это "get". Для boolean лучше использовать "is" (проверка состояния, например, isValid или isEmptyString, это кстати и для переменных подходит) и "has" (наличие чего-либо, например, hasValue или hasClass).
если я пишу код на "одном дыхании", то переменные у меня такого типа:
qwe
asd
zxc
qwer
asdf
zxcv
wert
sdfg
xcvb
т.е. идёт тупо перебор соседних клавиш. Пока пишешь скрипт - точно не запутаешься. А тратить время на придумывание "логически логичной" переменной - дело неблагодарное. Потеряешь мысль и всё...
Никто после тебя этот скрипт не будет править. Обычно новый разработчик тупо переписывает мелкие скрипты по-своему, т.к. считает, что твой код ну прям вообще не правильный. Так всегда. Даже если на самом деле твой код очень хорош. Поэтому не парься насчёт читабельности кода. Главное - отступы соблюдай, пиши кратко, чтобы его можно было потом самому удобно править.
На одном дыхании не значит что не нужно понимать что пишешь. Через полгода год все равно забуешь и сам не сможешь понять что к чему. Переменные же не просто так плодишь, ты делаешь это осознанно с определенной целью. Кто сказал что никто не будет править? Наоборот как где-то писали, пиши код так как-будто после тебя его будет поддерживать склонный к убийству маньяк психопат.
Александр Аксентьев: для других разработчиков нужно оставлять /*комменты*/. А в названиях переменных смысла нет. Ну, тут уже можно долго обсуждать это дело. Я считаю, что придумывание названий для переменных занимает много времени, если пытаться называть их как-то "значимо". лучше прокомментить нужные строки, чтобы потом и самому было удобно, и другим.
Но ты можешь продолжать называть переменные как тебе угодно :) Стремиться называть их и логично, и не длиннее 8 символов (где-то читал, что это чем-то лучше), и упрямо доказывать, что использовать заглавные символы - это плохой тон... У каждого свой подход.
AlexanderTsymbal: красота кода в снижении издержек на суппорт, а это значит что код должен быть читабельным, а с такими переменными как у вас этого никак не выйдет. Даже если вы будете в комментариях помечать зачем она нужна (что не логично так как быстрее просто назвать ее адекватно или переименовать) всеравно человек который будет за вас поддерживать такой код будет желать вам смерти.
Я серьезно, если это конечно не шутка и не тролинг, просто никогда ради бога не делайте так.
to all: toster.ru/js/lib/adriver.core.2.js - ткнул в первый попавшийся скрипт из исходного кода на уважаемом нами всеми сайте. Подсветите с помощью Ctrl+F фразу "var " и посмотрите, какие варианты предложит вам код. Длиннее одной двух букв переменных нет.
AlexanderTsymbal: вы совершено верно описали пролему, хоть и с сарказмом. Дело в том, что даже если я в какой-то момент времени осознаю, что значит переменная "х", то через каждую строку все тежелее вспоминать, что это за переменная и приходится возвращаться к началу.
var оченьЗначимаяПеременная = число*число/объект.метод; /* эта переменная определяет то-то-то */
В какую часть этой строки вы смотрите в первую очередь? Не обманывайте себя. Разбирая чужой код вы смотрите на строку в такой очередности:
1. правая часть (после = )
2. комментарий
3. название переменной.
На 1 этапе мы узнали, что вычисляет и содержит переменная. Мы знаем зачем она. Нам не нужны этапы 2 и 3.
Чё дальше себе голову-то пудрить?
Вы плохой разработчик и зря расходуете деньги, выделенные на саппорт, если видите код по-другому.
AlexanderTsymbal: в этом скрипте переменных всего штук 5, остальные итераторы в циклах типа i нет смысла считать. Названия вполне осознанные все никаких asd,zzz,da,qwe
вам всем нужно попробовать взяться за задачу, когда от вас требуют разобраться в компрессированном коде. тогда вся ваша педантичность уйдёт и вы начнете тратить выделенные на вас деньги на работу, а не на придумывание значимых переменных.
function cb(a, c) {
a.dataFilter && (c = a.dataFilter(c, a.dataType));
var d = a.dataTypes,
e = {},
g, h, i = d.length,
j, k = d[0],
l, m, n, o, p;
for (g = 1; g < i; g++) {
if (g === 1)
for (h in a.converters) typeof h == "string" && (e[h.toLowerCase()] = a.converters[h]);
l = k, k = d[g];
if (k === "*") k = l;
else if (l !== "*" && l !== k) {
m = l + " " + k, n = e[m] || e["* " + k];
if (!n) {
p = b;
for (o in e) {
j = o.split(" ");
if (j[0] === l || j[0] === "*") {
p = e[j[1] + " " + k];
if (p) {
o = e[o], o === !0 ? n = p : p === !0 && (n = o);
break
}
}
}
}!n && !p && f.error("No conversion from " + m.replace(" ", " to ")), n !== !0 && (c = n ? n(c) : p(o(c)))
}
}
return c
}
Не вижу там h и w вообще. d - document вполне логично, используется довольно часто. my - слово, а не набор букв. В минифицированном коде и не нужно копаться, если его минифицировали значит где-то есть нормальня версия. Ну а если все-таки приходится что-то делать с минифицированным кодом, то любой анпакер поможет. Когда все табы расставлены и новые строки все намного понятнее.
Александр Цымбал: вы правы, код просматривается именно так. Но чу... var zjd = yud * ( aefa - aef);
И теперь как мне быть? Я конечно же выругаюсь и полезу к определению каждой переменной по пути меняя ей название. Так что не нужно. Что до переменнцх w, h, d, my - из контекста хотя бы можно догадаться что это какая-нибудь width, height, dimensions (не уверен лень скролить) и еще чего.
Я не раз занимался реверси инженерингом каких-то обфускированных скриптов, не рассказывайте. Если у вас один из проектов повредил рассудох или стал причиной глубокой психологической травмы - чтож... шит хэппенс.
Вы правы в одном, не стоит тратить слишком уж много времени на придумывание названия переменных. Обычно они вертятся так сказать на кончиках пальцев. Если еще не придумали - можно поставить что-то приблизительно подходящее. Важно соблюдать баланс.
Александр Цымбал: как это не печально, но такой код я прочту проще чем с переменными вида "абырвалк" ибо так как в них нет системы мне сложно удержать из в голове. Вот и все. Ну и да, по мере продвижения по коду я буду менять названия переменных.
Да да, всё дело в глубокой психологической травме...
Спасибо всем за дискуссию. Советую вам всем просто переспать с новой для вас идеей: "названия переменных действительно почти нихрена не значат". Некоторые из вас при разработке следующего проекта начнут пользоваться этой техникой (пусть и частично) и внезапно поймут, что к вечеру меньше устают, укладываются в сроки и стали не такими педантичными, как были до этого, и теперь могут уделять внимание действительно важным делам...
...А там и до прибавке к зарплате не далеко.
можно, например, внутри цикла или процедуры - короткие, а выше по структуре длинные типа. если функция или переменная используется дальше по коду, она называлась более- менее внятно, а внутри простых или закрытых процедур можно короче.
var someVariable = function() {...}
var anotherAction = function(set){
var len = set.length;
for(var i=0; i
В JS стоит соблюдать конвенции, заложенные именами встроенных сущностей. Так что -- camelCase для функций и переменных, PascalCase для конструкторов, подчеркивания только в константах.
Как правило даю краткое название на английском языке.
Придерживаюсь написания нескольких слов слитно, но каждую первую букву слова делаю заглавную.
Именна констант с большой буквы.