Определение точек выхода компилятором C#
От: __gas  
Дата: 11.08.10 07:02
Оценка:
В программе довольно часто используется такой паттерн:

 void ThrowException(string fmt_str, param object[] args)
 {
   throw new Exception(string.Format(fmt_str, args);
 }

 bool foo()
 {
   <любая условная конструкция>
     <условие истинно>
       return true;
     <условие ложно>
       ThrowException(<набор различных параметров>);
   }
 }


Естетсвенно при компиляции получаем ошибку 'foo': not all code paths return a value. Причем иногда в километровом тексте лапши понять в каком именно парте компилятор не нашел выход бывает весьма трудно. Кроме того, и это наиболее неприятно, приходится добавлять незначимые return-ы, что очень замутняет понимание и без того не прозрачного кода. Может имеется како-то другой паттерн для таких случаев (ну, кроме явного раскрытия ThrowException — это однозначно не подходит, т.к. ф-ция более нетривиальна, чем в примере)?
Как известно, 90% людей верят утверждениям, начинающимся со слов «как известно».
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.