 
			
				28.01.2011, 10:30
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 19.02.2008 
					
					
					
						Сообщений: 9,177
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от sysif
			
		
	 | 
 
	| 
		 Известный факт, что в js часто взаимодействие между разными объектами оборачивается головной болью.
	 | 
 
	
 
 
	
 
	| 
		
			Сообщение от x-yuri
			
		
	 | 
 
	| 
		 и очень интересует всем кроме меня известный факт про головные боли от взаимодействия объектов?
	 | 
 
	
 
 Мне тоже неизвестен этот факт.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				28.01.2011, 11:38
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 09.12.2010 
					
					
					
						Сообщений: 12
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от Kolyaj
			 
		
	 | 
 
	| 
		Мне тоже неизвестен этот факт.
	 | 
 
	
 
 Ну, я про все ту же утипизацию и что из нее вытекает. Если у нас возникла ошибка выполнения, мы идем ее и правим - вылезает другая ошибка - правим...и т.п...а тут оказывается, что первый случай опять сломался. Такие вот замечательные итерации.
 
Это не головные боли?
 
Вот отсюда и возникают идеи ввести какие-то соглашения при взаимодейстии объектов  
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось sysif, 28.01.2011 в 11:41.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				28.01.2011, 11:44
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 19.02.2008 
					
					
					
						Сообщений: 9,177
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Я уже писал  
	
 
	| 
		
			Сообщение от Kolyaj
			
		
	 | 
 
	| 
		Я уже лет 7 пишу на динамических языках, не помню ни одной ошибки, возникшей из-за несоответствия типов. Они были, это однозначно, но я их не помню, потому что это скорее опечатки, они не стоят внимания.
	 | 
 
	
 
  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				28.01.2011, 11:45
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Модератор Всея Форума 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 14.05.2009 
					
					
					
						Сообщений: 4,021
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от sysif
			
		
	 | 
 
	| 
		а тут оказывается, что первый случай опять сломался
	 | 
 
	
 
 Может не в тему, но у меня есть подозрение, что код  сам ломается если его долго не использовать.   
Вот написал я скрипт, вроде работает.   
Кинул в папку к остальным исходникам. Через месяц запускаю, а он не работает  
Магия    
		
	
		
		
		
		
		
			
				__________________ 
				Болтовня ничего не стоит. Покажите мне код.  — Linus Torvalds
влад.куркин.рф
			 
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				28.01.2011, 11:46
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 19.02.2008 
					
					
					
						Сообщений: 9,177
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от B~Vladi
			
		
	 | 
 
	| 
		Через месяц запускаешь, а он не работает
	 | 
 
	
 
 Протух.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				28.01.2011, 11:46
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 05.01.2010 
					
					
					
						Сообщений: 64
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Приведу пример с интерфейсом IDisposable (как в C#), который имеет один метод Dispose. 
Пусть у меня есть система, с большим кол-ом различных js классов. Во избежание утечек памяти у меня есть некий Manager для контроля всех ссылок на созданные объекты. Когда какой-то объект мне не нужен я вызываю у него метод Dispose, а будет ли он за собой чистить свои внутренние ресурсы, это уже его проблема. Т.е. здесь возникает такое соглашение: если Manager'у отдаётся на управление какой-то объект, то он должен реализовывать интерфейс IDisposable. 
 
Но как уже приводились ссылки в начале обсуждения, нужно просто проверить есть ли такой метод/свойство в объекте и если нету, то как вариант кидать Exception. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				28.01.2011, 11:51
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 09.12.2010 
					
					
					
						Сообщений: 12
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от B~Vladi
			 
		
	 | 
 
	
		Может не в тему, но у меня есть подозрение, что код сам ломается если его долго не использовать.   
Вот написал я скрипт, вроде работает.   
Кинул в папку к остальным исходникам. Через месяц запускаю, а он не работает  
 
Магия  
	 | 
 
	
 
 Ага, а вера в волшебство пропадает, когда понимаете, что вы там не один ковырялись, да? 
Вы когда ручку на двери не заметите, за какое место хвататься будете, и если не знаете, в какую сторону дверь открывается?    
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				28.01.2011, 11:56
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 09.12.2010 
					
					
					
						Сообщений: 12
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от kidar2
			 
		
	 | 
 
	
		 
Но как уже приводились ссылки в начале обсуждения, нужно просто проверить есть ли такой метод/свойство в объекте и если нету, то как вариант кидать Exception.
	 | 
 
	
 
 Ну обычно в таких случаях делается что-то типа if(obj.method) obj.method(); 
Что так-то проблемы быстро локализовать ни разу не помогает  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				28.01.2011, 12:02
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 05.01.2010 
					
					
					
						Сообщений: 64
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от sysif
			 
		
	 | 
 
	
		Ну обычно в таких случаях делается что-то типа if(obj.method) obj.method(); 
Что так-то проблемы быстро локализовать ни разу не помогает
	 | 
 
	
 
 Я имел ввиду примерно такое 
if (!obj.Dispose)  
   throw new Error("Метод или свойство не реализовано");
 
И делать эту проверку в момент когда, один объект отдаётся другому. 
Тогда с локализацией проблем не будет.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				28.01.2011, 12:52
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 09.12.2010 
					
					
					
						Сообщений: 12
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от kidar2
			 
		
	 | 
 
	
		Я имел ввиду примерно такое 
if (!obj.Dispose)  
   throw new Error("Метод или свойство не реализовано"); 
 
И делать эту проверку в момент когда, один объект отдаётся другому. 
Тогда с локализацией проблем не будет.
	 | 
 
	
 
 Ну да, и так последовательно, для каждой функции?  
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось sysif, 28.01.2011 в 12:55.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |