Здравствуйте, Sinclair, Вы писали:
S>Пришлось бы для каких-то случаев реализовывать паттерн null objeсt
На практике этот паттерн хорошо работает лишь в случае отсутствия полей у объекта, т.е. когда есть только виртуальные ф-ии и им можно приписать некое "нулевое" поведение либо выбрасывание исключений (одно время широко использовали этот паттерн в реальных разработках, потом отказались).
Потому что на практике в программе, допустим, будет связанный список объектов некоего типа, и если использовать как конец списка ссылку на "нулевой" объект, то при непроверке на null (в чём суть ошибки, которую пытаемся лечить) будет обращение к полям этого null-объекта с чтением фигни, т.е. ошибка маскируется и себя никак не проявляет. Или проявляет себя намного позже, вдали от места и времени возникновения — это самый неприятный случай.
В общем, такие костыли обычно ведут к еще худшим ошибкам, т.е. требующим гораздо больше усилий на обнаружение самого факта ошибки и затем на её локализацию.