Маленькая рефлексия о C и ++

Apr 30, 2014 23:55

Пристально посмотрел на код компилятора C и список «фич» языка и, кажется, только сейчас осознал как всё грустно.
наверное, ничего нового для кого-то не скажу )

effectiveness, questionnaire, computer, c, thoughts, c++, software

Leave a comment

morfizm May 4 2014, 23:25:19 UTC
"100 раз рефакторится". "Код с исключениями вместо кодов - сильно экономит ресурсы для "рефакторится" и "читается"."

Как насчёт такого: ты добавляешь throw в какой-нибудь сравнительно частоиспользуемой библиотечной функции, в которой throw ещё не было, и в этот момент тебе нужно от code-review'ить ВСЕ возможные пути, на которых эта функция используется, directly or indirectly, to make sure that code is exception-safe, RAII, etc.

Насчёт return'ов в середине функций - имхо, это даже хуже exception'ов, но это просто bad style, можно не использовать exceptions, и при этом не писать return'ов из середины. Вообще, если размер функции больше экрана, или во вложенных циклах делается какая-то нетривиальная логикая с аллокацией нескольких ресурсов, это всё bad style, и такое надо не пускать/рефакторить. Я не очень понимаю, к чему был этот аргумент. Типа, exceptions позволяют писать более сложный/витиеватый/плохой код, уменьшая стоимость последствий? Ну да, они уменьшают. Просто зачем писать сложный/витиеватый/плохой код in the first place?

Мой поинт в том, что сравнительно нетрудно писать легко читаемый и безопасный код, не используя exceptions вовсе. Это не означает, что если взять произвольный кусок кода и на скорую руку повыкидывать из него exception'ы, заменив на возвраты, будет хорошо - нет, будет отвратительно. Чтобы писать без exception'ов нужна определённая дисциплина писания. Но на самом деле, чтобы писать с exceptions безопасно, тоже нужна немаленькая дисциплина. Мне сложно сравнивать сложности одной дисциплины или другой. Я за десять лет programming in production, не увидел хороших примеров, где бы безопасно и читаемо писали с использованием exceptions. Без exceptions - вижу хороший пример сейчас на работе. Разница практическая - какие дисциплины хороши только в теории, а какие дисциплины люди будут реально и consistently соблюдать.

Reply


Leave a comment

Up