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

      Комментарии к записи 20 Не верьте никому! отключены

Помечено: ,

В этой теме 0 ответов, 1 участник, последнее обновление  Васильев Владимир Сергеевич 2 мес., 3 нед. назад.

  • Автор
    Сообщения
  • #3598

    — И еще, Шерлок, хочу тебе дать братский совет. Поскольку ты будешь иметь дело не с уголовным миром, а с политиками, не верь никому, ни единому слову.
    (Майкрофт Холмс).

    Замените в этой цитате слово «политиками» на слово «программированием», и получите замечательную рекомендацию.

    Возьмите в руки Стандарт C++ и внимательно его прочитайте, поскольку это единственный источник информации, которому можно верить. Кроме самого Стандарта в этой жизни больше никому верить нельзя.

    Не верьте никому и никогда. Вы прочитали статью об ответственности? Представьте себе что авторы всех библиотек, с которыми вам приходится работать, жутко безответственные люди. Более того — представьте себе что даже вы сами — безответственный человек. Не верьте даже собственным классам и функциям.

    Если у функции специфицированы исключения — не верьте ей. Сегодня они специфицированы, завтра она начнет кидать std::runtime_error, а послезавтра — вообще, любые исключения, даже не отнаследованные от std::exception.

    Если вам предоставляют абстрактный интерфейс — не верьте тому, что он никогда не поменяется. Будьте готовы к тому, что он может поменяться в любой момент, и вам придется переписывать все его реализации. Будьте к этому готовы — прячьте, по возможности, сторонние интерфейсы за невиртуальными адаптерами, используйте «Nonvirtual interface» и «Curiously recurring template pattern», и будьте готовы к тому, что вам это все равно не поможет.

    Если вам говорят, что вероятность первой ошибки составляет 99%, а второй — 1%, то не верьте этим данным. Будьте готовы в любой момент столкнуться с любой из этих ошибок.

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

    Пишите код, которому можно верить. Реализовывайте оператор присваивания и конструктор копирования, а не одноименные функции. Запрещайте копирование, если оно не отвечает своей семантике. Не используйте абстрактные классы, там где они не являются очевидной необходимостью. Не создавайте искусственных правил, взятых с потолка. Старайтесь опираться во всем на семантику, предоставляемую грамматикой языка — таким образом вы будете максимально перекладывать ответственность за свои действия со своих плеч на плечи Стандарта. А Стандарту, как я уже сказал, можно верить больше, чем кому бы это ни было.

    Хотя, конечно же, C++ — язык не идеальный, и об этом тоже нужно помнить.

Для ответа в этой теме необходимо авторизоваться.