Страшные памятки в коде программы...
От: Flamer Кипр http://users.livejournal.com/_flamer_/
Дата: 21.09.04 16:25
Оценка: 13 (1) :)))
Сегодня открытие сделал Вернее, приспособил для себя более удобный способ оставлять [сабж], чтобы чего-то не забыть дописать.

Обычно я делал как?

switch(nodeType)
{
  case stringNode:
   ...
  break;

  default:
     assert(false);
  break;
} // switch

Выделенный ассерт нужен для того, чтобы чего не забыть, буде появится новый тип, который надо обработать. Но сообщение, которое выкидывает assert, уж очень неинформативное:

Assertion failed: false, file C:\JOB\Garbage\AssertionTest.cpp, line 85


Почесал я репу и придумал малой кровью велосипед

enum
{
  NOT_IMPLEMENTED
};


switch(nodeType)
{
  case stringNode:
   ...
  break;

  default:
     assert( (NOT_IMPLEMENTED >> nodeType) );
  break;
} // switch


Теперь все гораздо веселее:

Assertion failed: (NOT_IMPLEMENTED >> nodeType), C:\JOB\Garbage\AssertionTest.cpp, line 85

То есть видно, что именно не имплементировано Даже стрелочки показывают направление глубокого морального падения

З.Ы. Почему в "Философию"? Затрудняюсь ответить Наверное потому, что данная заметка и есть частный пример философии удобно-ленивого программирования

З.З.Ы. Как там в "Юморе" говорят? Звиняйте, если байан
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.