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.
|
|
|
|