Re[4]: Codepedia. Взгляд вглубь. (читать придется много :) )
От: henson Россия http://www.njt-rails.com
Дата: 30.09.05 09:03
Оценка:
Здравствуйте, FreshMeat, Вы писали:

FM>Здравствуйте, anonymous, Вы писали:


A>>все-таки мне кажется, что сниппет не должен быть больше функции (и уж точно не классом, по крайней мере пока)... и тогда вопрос предельно упрощается: есть четыре точки, через которые проходят две прямые, пресекаются ли они?... итог: функция, на входе которой 8 переменных с координатами, на выходе — булево значение... и теперь любой программист может взять её и использовать в одном из собственных классов описывающих геометрию, т. о. дублирования кода не будет...

FM>Таким образом отказываемся от ООП.
FM>Компактно-крохотных сниппетов может оказаться совсем немного.

FM>Плюс, если копнуть чуть глубже, появляются новые неприятности:

FM>если мы говорим о C++
FM>
FM>template < typename T >
FM>bool is_intersect_lines2( T p00x, T p00y, T p01x, T p01y, 
FM>                          T p10x, T p10y, T p11x, T p11y );
FM>


FM>1. при каждом вызове ф-ии, необходимо проверять вырожденные случаи —

FM>
FM>( p00x == p01x && p00y == p01y ) || 
FM>( p10x == p11x && p10y == p11y )
FM>

FM>если мы будем использовать классы, можно делать такую проверку один раз в конструкторе.
FM>Конечно, эту проблему можно переложить на пользователя, потребовать обязательно проверять передаваемые параметры, но тогда код становится более опасным (для меня это было бы уже достаточной причиной отказаться от использования такого сниппета)

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