_>> 3. Фактически, на каждый из вопросов нас устраивает любой ответ, который в каком-нибудь плане лучше предложенных фрагментов кода, и при этом не создаёт больше проблем, чем решает.
M> Очень многие такие тесты на собеседовании и этот в том числе имеют серьезный недостаток: они даны вне контекста и испытуемому на самом деле предлагается усовершенствовать "сферический код в
M> вакууме." Я бы такой код без дополнительных условий вообще переписывать не стал бы
Работает — и хорошо.
Представьте, что вышеуказанные фрагменты кода достались Вам в наследство от программиста, уволенного за профнепригодность, и у Вас есть немного времени на рефакторинг именно этих фрагментов.
M> Как можно говорить, что усовершенствованный код должен решать больше проблем, чем создает, если даже достоверно неясно какого рода проблемы имели место?
Наличие проблем — это часть вопроса. Исправляйте те проблемы, которые видите. Считайте, что Вы — последний человек, который стоит между этими фрагментами кода и реальной эксплуатацией в какой-нибудь life-critical system.
M> А то может первый код вообще хитрый хак чего-то или оптимизирован по быстродействию, а тут уже на форуме напредлагали и boost и смартпоинтеры, которые там возможно уместны как седло у коровы.
M> По второму коду можно сказать, что вообще-то есть библиотечные функции для разбора опций командной строки getopt для Unix или более универсально boost::program_options, а может этого не нужно
M> совсем и тут важно, что внещний результат работы программы может быть одинаковым в случае отсутствия опций и в случае неотображаемого символа в аргументах.
Ради бога. Если Вы считаете, что от использования буста, смартпоинтеров, getopt или чёрта в ступе программа в чём-то выиграет, то пожалуйста, используйте их. Только напишите, в чём программа, по Вашему мнению, выиграла.