19.02.2015, 20:16
|
Новичок на форуме
|
|
Регистрация: 19.02.2015
Сообщений: 8
|
|
оптимизация, как правильнее?
Здравствуйте.
Я новичок в javascript (да и вообще в программировании). Писал скрипт к своему проекту и обратил внимание, что листинг получается монструозным за счёт того, что я практически не использую переменных, а оперирую напрямую с элементами DOM.
Например:
if (document.getElementById(tested_fields[7]+string_number).value.substring((document.getElementById(tested_fields[7]+string_number).value.indexOf('\'',res_find)),(document.getElementById(tested_fields[7]+string_number).value.indexOf('\'',res_find)+2))=="''"){
res_find=(document.getElementById(tested_fields[7]+string_number).value.indexOf('\'',res_find))+2;
} else {
enum_flag=1;
res_find=(document.getElementById(tested_fields[7]+string_number).value.indexOf('\'',res_find))+1;
}
Когда-то я слышал, что имеет смысл избегать, где это возможно, лишних переменных (экономить память) и как-то на автомате стараюсь без них обходиться
Меня внешний вид моего кода не напрягает совершенно и в принципе мне так удобно, но вдруг задумался, а не повлияет ли такой вид записи на скорость работы кода в худшую сторону?
Какой код будет работать быстрее, мой, или такой?:
var string1 = document.getElementById(tested_fields[7]+string_number).value;
if (string1.substring(string1.indexOf('\'',res_find),(string1.indexOf('\'',res_find)+2))=="''"){
res_find=(string1.indexOf('\'',res_find))+2;
} else {
enum_flag=1;
res_find=(string1.indexOf('\'',res_find))+1;
}
И как вообще писать правильнее с точки зрения "культуры кода"?
Последний раз редактировалось polecat, 19.02.2015 в 20:21.
|
|
19.02.2015, 21:26
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
Сообщение от polecat
|
имеет смысл избегать, где это возможно, лишних переменных (экономить память)
|
__________________
В личку только с интересными предложениями
|
|
19.02.2015, 21:31
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
Сообщение от polecat
|
культуры кода
|
Боюсь это понятие вообще не применимо к твоему коду
__________________
В личку только с интересными предложениями
|
|
19.02.2015, 21:32
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
Сообщение от melky
|
«Программы должны быть написаны так, чтобы их могли читать люди, и лишь иногда так, чтобы их могли выполнять машины»
|
|
|
19.02.2015, 21:37
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
Че хоть скрипт твой делать должен? Кавычки зачем-то считает?
__________________
В личку только с интересными предложениями
|
|
19.02.2015, 22:01
|
|
Профессор
|
|
Регистрация: 23.12.2013
Сообщений: 1,856
|
|
polecat,
Цитата:
|
И как вообще писать правильнее с точки зрения "культуры кода"?
|
Второй вариант правильнее. Просто потому, что его гораздо удобнее читать.
Цитата:
|
а не повлияет ли такой вид записи на скорость работы кода в худшую сторону?
|
Да, будет хуже. В теории, ты постоянно заново получаешь доступ к DOM элементу, вместо того, чтобы просто запомнить его в переменной.
|
|
20.02.2015, 06:02
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
Вот код, делающий тоже самое (если я не ошибся):
var quote = '\'';
var string1 = document.getElementById(tested_fields[7]+string_number).value;
var quotePos = string1.indexOf(quote, res_find);
res_find = quotePos + 1;
if (string1[quotePos + 1] == quote){
res_find += 1;
} else {
enum_flag=1;
}
Можно еще регулярку использовать - код станет короче.
Твои косяки:
1) Почему tested_fields[7] а не 43 или 777? Магических чисел быть не должно.
2) Почему такое дибильное именование через подчеркивание? В js такой стиль не используют. Достаточно посмотреть на имена объектов из браузерного окружения чтобы понять это.
__________________
В личку только с интересными предложениями
|
|
20.02.2015, 15:26
|
Новичок на форуме
|
|
Регистрация: 19.02.2015
Сообщений: 8
|
|
Сообщение от danik.js
|
Твои косяки:
1) Почему tested_fields[7] а не 43 или 777? Магических чисел быть не должно.
2) Почему такое дибильное именование через подчеркивание? В js такой стиль не используют. Достаточно посмотреть на имена объектов из браузерного окружения чтобы понять это.
|
Ох вы и резкий
Написал же, только учусь.
По пунктам:
1) Потому, что это маленький кусочек выдернутый из огромной процедуры с целью продемонстрировать пример "внешнего вида". Вообще там массив полей, которые я проверяю. Тут можно было бы и просто имя поля вставить, но выше мне нужно именно массив перебирать, а тут я просто использую элемент массива, потому, что мне так удобнее (всё равно он сформирован).
2) Потому, что мне так понятно назначение переменной. В учебнике читал, что нужно называть понятно и в одном стиле, остальное не важно - вот и соответствую. Где почитать как называть переменные, что-бы не вызывать припадков смеха у "бывалых"?
3) Этот кусочек ищет первую одинарную кавычку в строке, и смотрит что стоит за ней. Если вторая одинарная кавычка то...
Там дальше длинно
По поводу памяти - это мне рассказывали году так в 95м, при изучении паскаля. С тех пор я с программированием не сталкивался особо, а сейчас появилось желание поковыряться
2 Safort Спасибо. Это я и хотел узнать.
Последний раз редактировалось polecat, 20.02.2015 в 15:55.
|
|
20.02.2015, 16:46
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
Сообщение от polecat
|
в одном стиле
|
Как бы в разных языках программирования есть свои общепринятые стайл-гайды, которым в том числе соответствует именование встроенных объектов (если они есть в окружении) и популярных библиотек. И если отойти от общепринятого стиля, то "одного стиля" ну никак не получится.
И смеялся я не над стилем, а над способом "экономии памяти"
Сообщение от polecat
|
По поводу памяти
|
Переменные действительно занимают память. Но ты забыл, что вызов функций занимает процессорное время. Вот только памяти завались, тем более ссылка занимает мизерный объем, а процессор надо беречь по возможности. Особенно учитывая "мобилизацию" аудитории.
__________________
В личку только с интересными предложениями
|
|
20.02.2015, 17:03
|
Новичок на форуме
|
|
Регистрация: 19.02.2015
Сообщений: 8
|
|
А как лучше тогда делать, если я не только яваскрипт использую:
1 В разных средах использовать разные стили?
или
2 Везде использовать одинаковый стиль?
По поводу переменных, не то, что-бы я забыл, что вызов функций занимает процессорное время. Просто я не в курсе, что обращение к DOM модели, это вызов функции. Как то я яваскрипт начал изучать с конца - сначала понадобилась какая-то мелочь, я нашёл как это люди делают, пристроил у себя на странице, потом ещё понадобилось и.т.д.
Сейчас уже кое в чём разбираюсь (в нужных мне пределах) но до изучения базы руки так и не дошли.
Вот поэтому и возникают иногда такие вопросы.
Спасибо, что отвечаете
Да, первое представление о программировании я получил 20 лет назад в институте изучая турбопаскаль. и там нас сильно напрягали экономией памяти, а процессорное время для наших задач как-то не особо важно было
Последний раз редактировалось polecat, 20.02.2015 в 17:11.
|
|
|
|