"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 соблюдать.
Как насчёт такого: ты добавляешь 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