Брутально и бессердечно о программировании и проектировании
ГлавнаяФорумПаттерныАнтипаттерныТест-драйвЗаметкиВопрос-ответКнигорецензииСправочная

26. Не верьте никому!

— И еще, Шерлок, хочу тебе дать братский совет. Поскольку ты будешь иметь дело не с уголовным миром, а с политиками, не верь никому, ни единому слову.
Майкрофт Холмс.
Замените в этой цитате слово «политиками» на слово «программированием», и получите замечательную рекомендацию.
Возьмите в руки Стандарт C++ и внимательно его прочитайте, поскольку это единственный источник инфрмации, которому можно верить. Кроме самого Стандарта в этой жизни больше никому верить нельзя.
Не верьте никому и никогда. Вы прочитали статью об ответственности? Представьте себе что авторы всех библиотек, с которыми вам приходится работать, жутко безответственные люди. Более того — представьте себе что даже вы сами — безответственный человек. Не верьте даже собственным классам и функциям.
Если у функции специфицированы исключения — не верьте ей. Сегодня они специфицированы, завтра она начнет кидать std::runtime_error, а послезавтра — вообще, любые исключения, даже не отнаследованные от std::exception.
Если вам предоставляют абстрактный интерфейс — не верьте тому, что он никогда не поменяется. Будьте готовы к тому, что он может поменяться в любой момент, и вам придется переписывать все его реализации. Будьте к этому готовы — прячьте, по возможности, сторонние интерфейсы за невиртуальными адаптерами, используйте «Nonvirtual interface» и «Curiously recurring template pattern», и будьте готовы к тому, что вам это всеравно не поможет.
Если вам говорят, что вероятность первой ошибки составляет 99%, а второй — 1%, то не верьте этим данным. Будьте готовы в любой момент столкнуться с любой из этих ошибок.
Не воспринимайте никакую информацию как постоянную, что бы вам не говорили. Всегда будьте готовы к тому, что любая внешняя информация может перевернуться с ног на голову.
Пишите код, которому можно верить. Реализовывайте оператор присваивания и конструктор копирования, а не одноименные функции. Запрещайте копирование, если оно не отвечает своей семантике. Не используйте абстрактные классы, там где они не являются очевидной необходимостью. Не создавайте искусственных правил, взятых с потолка. Старайтесь опираться во всем на семантику, предоставляемую грамматикой языка — таким образом вы будете максимально перекладывать ответственность за свои действия со своих плеч на плечи Стандарта. А Стандарту, как я уже сказал, можно верить больше, чем кому бы это ни было.
Хотя, конечно же, C++ — язык не идеальный, и об этом тоже нужно помнить.

Оглавление
Статистика
© 2007—2009 Inside C++ Коммерческие услугиКонтактная информация

двухстворчатая противопожарная дверь противопожарные двери. строительство коттеджей. заказать перевести деньги по адресу