 
			
				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,150
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		  
	
 
	| 
		
			Сообщение от 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.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |