Re[2]: Что кошернее возвращать, null или "" ?
От: Nuald Россия http://nuald.blogspot.com
Дата: 12.11.04 00:00
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Если взглянуть на стандартную библиотеку — там о неудаче принято сообщать при помощи null, а не пустых строк или Special Case, так как null это однозначно, а "" может иметь большее значение.


Кто сказал, что стандартная библиотека — образец для подражания? О вреде null много сказано, повторяться не хочется...

А>Special Case хорошо, но тогда и вызывающий код и вызываемый должны иметь общее знание о некоей константе, то есть код будет более связанным.


А какая разница — будет ли завязка на null или константу. Только в первом случае, какой-нить новенький программист придет, и попробует разыменовать этот null. И если Special Case может просто показать окошечко с ошибкой или выкинуть внятный Assert, то обращение к null выкинет малоинформативное исключение, после чего пользователи будут брызгать слюной, стучать кулаками по столу и звонить в два часа ночи разработчику...

А>Special Case хорош тогда, когда валидный экземпляр объекта должен быть возвращен В ЛЮБОМ САМОМ РАСПЛОХОМ СЛУЧАЕ, или когда используются какие-то метки или теги, определяющие логику обработки, так что я за null.


По закону Мерфи все случаи относятся к вышеуказанному
Re[2]: Что кошернее возвращать, null или "" ?
От: Andir Россия
Дата: 12.11.04 03:31
Оценка:
Здравствуйте, Rafiki, Вы писали:

R>Простой довод (в случае с .NET): не производится упаковка/распаковка строки.


Строки не боксятся ...

С Уважением, Andir!
using(RSDN@Home 1.1.4 beta 3){/* Работаем! */}
Re[8]: Что кошернее возвращать, null или "" ?
От: Banch  
Дата: 12.11.04 11:43
Оценка:
Здравствуйте, GarryIV, Вы писали:

GIV>Вместо того чтоб один раз написать класс исключения ты вынужден в каждом обработчике делать лишние телодвижения...


я пытался показать как раз обратное
вместо того чтобы писать 20 классов на 20 вариатов ошибок в одной библиотеке пишщется всего один универсальный класс

GIV>Да и помещать код логгирования внутрь исключения мне как-то не нравиться.

код логгирования туда помещять не надо, просто из-за того что эксепшн универсальный его становиться проще логгировать и анализировать

например есть исключение "MyError11" и одним параметром
в коде анализатора
Analize( MyExc exc )
{
  if( exc.Code == "MyError11" && exc.Params[ 0 ] == "MyData111" )
  {
     Console.WriteLine( "error in data111" );
  }
}


это вместо того чтобы делать
Analize( MyExc exc )
{
  if( exc is MyExc11 && ((MyExc23)exc).Data == "MyData111" )
  {
     Console.WriteLine( "error in data111" );
  }
}
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.