Re[18]: using Statement и отложенная инициализация
От: amx3000 Россия  
Дата: 31.12.08 06:38
Оценка:
Здравствуйте, meowth, Вы писали:

M>Мне кажется, метод, возвращающий этот самый Stream.Null, не должен заботиться о производительности метода,

который его вызывает — не его это дело.

Метод, возвращающий пустой стрим, естественно не должен заботиться о том, как этот стрим будет использоваться в дальнейшем. Только зачем его возвращать? Какой в этом глубокий смысл? Экономия на обработке исключений? Выполнение кода, который можно не выполнять?

M>"Зовущий" метод сам может проверить результат на Stream.Null и не делать "ощутимые" записи, сэкономив время.


В таком дизайне еще меньше смысла, чем в работе со стрим.нулл как с нормальным полноценным стримом. А если в дизайне нет смысла, значит это неправильный дизайн.
Вместо того, чтобы возвращать стрим.нулл и не заботиться о том, что там будет дальше, лучше сразу выбрасывать исключение "файл не соответствует ожиданиям".

M>Цимес Stream.Null'а в таком случае в том, что такая проверка становится опциональной, и без нее не упадет — хотите, экономьте время, пишите доп.логику, устраивает и так — не проверяйте, stream.null такой же поток, как и все остальные; важно то, что в любом случае усложнение кода не навязывается и в любом случае ничего не свалится.


Ага. Просто в один прекрасный момент, через пару лет развития программы, вдруг все начнет адски тормозить и жрать память, не падая. И кому-то придется, тихонько матерясь на толковых предшественников, исправлять все возвраты Stream.Null на нормальный выброс и обработку исключений.
Или, что еще хуже, — не вдруг, а просто все будет работать медленно. Не критически медленно, чтобы пользователи забили тревогу, а так, вызывая небольшое раздражение. Просто потому что сэкономили на обработке исключений в одном месте, в другом, в десятом... Ничего не валится же, значит все ок.

Извините за лирику, это у меня сейчас личное прорвалось :)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.