Информация об изменениях

Сообщение Re[7]: Фигурная скобка без новой строки: Fun() { от 28.11.2018 21:01

Изменено 28.11.2018 21:02 vsb

Re[7]: Фигурная скобка без новой строки: Fun() {
Здравствуйте, Masterspline, Вы писали:

vsb>>А что, кто-то не заключает все блоки в скобки? Это же прямой источник ошибок. Так ни в коем случае нельзя делать.


M>Иногда бывают варианты, когда лишние скобки реально лишние:


M>
M>std::string get_decision(bool condition)
M>{
M>    if( condition )
M>        return "фсе пропало";
M>    else
M>        return "ище есть шансы"; 
M>}
M>

M>Тут любой вариант (без else или со скобками) будет хуже читаться. Хотя, если такой код редактировать потом, то шансов добавить ошибку больше, чем со скобками.

Проблема не в читаеости. А в последующей доработке кода:

std::string get_decision(bool condition)
{
    if( condition )
        return "фсе пропало";
    else
        log("continue");
        return "ище есть шансы"; 
}


Рраз. Причём ничего даже не поломалось. Лет через пять в попытке пофиксить баг перед дедлайном каким-нибудь мастером пайтона:

std::string get_decision(bool condition)
{
    std::string result;
    if( condition )
        result = "фсе пропало";
    else
        log("continue");
        result = "ище есть шансы"; 
    return result;
}


Два. Вот тебе и баг.

Если говорить конкретно про этот вариант, то тут, конечно, достаточно тернарного оператора. Но в целом я не вижу никакой нечитаемости в варианте вида

std::string get_decision(bool condition) {
    if( condition ) {
        return "фсе пропало";
    } else {
        return "ище есть шансы";
    }
    return result;
}


По строчкам одна лишняя скобка на закрывающую скобку. Зато когда скобки везде, глаза расслабляются, им не надо судорожно выхватывать куски кода после контрольных операторов, которые значительно меняют поток выполнения программы. Увидел скобки — значит что-то происходит. Нет скобок, значит там одна инструкция, ничего интересного, можно сканировать код дальше.
Re[7]: Фигурная скобка без новой строки: Fun() {
Здравствуйте, Masterspline, Вы писали:

vsb>>А что, кто-то не заключает все блоки в скобки? Это же прямой источник ошибок. Так ни в коем случае нельзя делать.


M>Иногда бывают варианты, когда лишние скобки реально лишние:


M>
M>std::string get_decision(bool condition)
M>{
M>    if( condition )
M>        return "фсе пропало";
M>    else
M>        return "ище есть шансы"; 
M>}
M>

M>Тут любой вариант (без else или со скобками) будет хуже читаться. Хотя, если такой код редактировать потом, то шансов добавить ошибку больше, чем со скобками.

Если говорить конкретно про этот вариант, то тут, конечно, достаточно тернарного оператора. Но в целом я не вижу никакой нечитаемости в варианте вида

std::string get_decision(bool condition) {
    if( condition ) {
        return "фсе пропало";
    } else {
        return "ище есть шансы";
    }
    return result;
}


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