try - catch без лишней вложенности
От: FrozenHeart  
Дата: 09.06.13 15:33
Оценка:
Привет!

Как-то со знакомым возник спор на тему того, какой из следующих кусков кода является наиболее читаемым:

// 1

void foo
try
{
    bar();
    baz();
}
catch (const SomeException& ex)
{
    // ...
}


// 2

void foo
{
    try
    {
        bar();
        baz();
    }
    catch (const SomeException& ex)
    {
        // ...
    }
}


Оговорки следующие:


Я выступал за первый вариант, т.к. в данном случае мы избавляемся от лишней вложенности, которая здесь не нужна. Минусом такого подхода является, конечно, то, что подобная конструкция встречается не так уж и часто (да и вообще была придумана лишь ради того, чтобы использовать её в списке инициализации конструкторов), в связи с чем некоторые программисты могут застрять на пару минут, перечитывая данный кусок кода.
Re: "Неправильно ты, Дядя Фёдор, бутерброд ешь..."
От: os24ever
Дата: 09.06.13 21:57
Оценка: +2 -5 :)
Надо скобкой на строку заголовка класть, так вкуснее будет:

// 3

void foo {
    try {
        bar ();
        baz ();
    } catch (const SomeException& ex) {
        // ...
    }
}
Re: try - catch без лишней вложенности
От: Sni4ok  
Дата: 10.06.13 09:05
Оценка:
Здравствуйте, FrozenHeart, Вы писали:

FH>Как-то со знакомым возник спор на тему того, какой из следующих кусков кода является наиболее читаемым:


монописуально же
Re: Вам нужен chief
От: igor-booch Россия  
Дата: 10.06.13 10:29
Оценка:
Оба решения имеют плюсы и минусы.
Нужен руководитель, который примет окончательное решение,
а так можно долго фигнёй страдать
http://rsdn.ru/Info/rules.xml
Re: try - catch без лишней вложенности
От: Sinix  
Дата: 10.06.13 11:01
Оценка:
Здравствуйте, FrozenHeart, Вы писали:

FH>Как-то со знакомым возник спор на тему того, какой из следующих кусков кода является наиболее читаемым:


Если речь идёт о личных предпочтениях — спорить бессмысленно. Как по мне, ваши доводы за первый вариант — это скорее агитация за второй

Если о стиле кодирования в команде, то подобные моменты имеет смысл определять политикой только если они проверяются автоматически при коммите. Идеальный вариант — код автоматически форматируется при сохранении. Иначе вы потеряете больше времени от соблюдения политики, чем сэкономите на чтении одинаково оформленного кода.
Re: try - catch без лишней вложенности
От: abibok  
Дата: 10.06.13 16:27
Оценка: +1
Только второй.
Re: try - catch без лишней вложенности
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 12.06.13 12:08
Оценка: +1
Здравствуйте, FrozenHeart, Вы писали:

FH>Я выступал за первый вариант, т.к. в данном случае мы избавляемся от лишней вложенности, которая здесь не нужна. Минусом такого подхода является, конечно, то, что подобная конструкция встречается не так уж и часто (да и вообще была придумана лишь ради того, чтобы использовать её в списке инициализации конструкторов), в связи с чем некоторые программисты могут застрять на пару минут, перечитывая данный кусок кода.


Только второй вариант. Не хватает ещё застревать на пару минут при чтении тривиальнейшего куска кода.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re: try - catch без лишней вложенности
От: vpchelko  
Дата: 12.06.13 17:44
Оценка: :)
2ой вариант, ибо код переносимие на другие языки программирования.
Сало Украине, Героям Сала
Re[2]: "Неправильно ты, Дядя Фёдор, бутерброд ешь..."
От: . Великобритания  
Дата: 13.06.13 20:01
Оценка: +1 -1
Здравствуйте, os24ever, Вы писали:

o> Надо скобкой на строку заголовка класть, так вкуснее будет:

o>
o> void foo {
o> }
o>

Egyptian brackets? Нет уж, увольте.
avalon/1.0.432
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[3]: "Неправильно ты, Дядя Фёдор, бутерброд ешь..."
От: fddima  
Дата: 14.06.13 08:23
Оценка: +2
Здравствуйте, ., Вы писали:

.>Egyptian brackets? Нет уж, увольте.

Почему?
Re[4]: "Неправильно ты, Дядя Фёдор, бутерброд ешь..."
От: B0FEE664  
Дата: 18.06.13 11:30
Оценка: +3 -1
Здравствуйте, fddima, Вы писали:

.>>Egyptian brackets? Нет уж, увольте.

F> Почему?

Открывающая и закрывающая скобки должны находиться либо на одной строке, либо в одном столбце. Для удобства чтения.
И каждый день — без права на ошибку...
Re: try - catch без лишней вложенности
От: Олег К.  
Дата: 20.06.13 15:57
Оценка: +1
Знаю оба варианта но лично только за второй. В этом и смысле софтваре инжениринга — не поддаваться на провокации а сделать код простым и понятным для остальный программистах. И речь не только об конкретно одной этой конструкции а вообще.
Re[5]: "Неправильно ты, Дядя Фёдор, бутерброд ешь..."
От: Gadsky Россия  
Дата: 21.06.13 13:52
Оценка: +3 -2
Здравствуйте, B0FEE664, Вы писали:

BFE>Здравствуйте, fddima, Вы писали:


.>>>Egyptian brackets? Нет уж, увольте.

F>> Почему?

BFE>Открывающая и закрывающая скобки должны находиться либо на одной строке, либо в одном столбце. Для удобства чтения.


Кому должны?
Re[6]: "Неправильно ты, Дядя Фёдор, бутерброд ешь..."
От: fddima  
Дата: 21.06.13 14:06
Оценка: +1
Здравствуйте, Gadsky, Вы писали:

BFE>>Открывающая и закрывающая скобки должны находиться либо на одной строке, либо в одном столбце. Для удобства чтения.

G>Кому должны?
Друг-другу.
Re[7]: "Неправильно ты, Дядя Фёдор, бутерброд ешь..."
От: Gadsky Россия  
Дата: 21.06.13 14:29
Оценка:
Здравствуйте, fddima, Вы писали:

F>Здравствуйте, Gadsky, Вы писали:


BFE>>>Открывающая и закрывающая скобки должны находиться либо на одной строке, либо в одном столбце. Для удобства чтения.

G>>Кому должны?
F> Друг-другу.

Хватит с них того, что они находятся на одной странице!
Re[6]: "Неправильно ты, Дядя Фёдор, бутерброд ешь..."
От: B0FEE664  
Дата: 21.06.13 15:47
Оценка:
Здравствуйте, Gadsky, Вы писали:

.>>>>Egyptian brackets? Нет уж, увольте.

F>>> Почему?
BFE>>Открывающая и закрывающая скобки должны находиться либо на одной строке, либо в одном столбце. Для удобства чтения.
G>Кому должны?
Читателю.
И каждый день — без права на ошибку...
Re[4]: "Неправильно ты, Дядя Фёдор, бутерброд ешь..."
От: __kot2  
Дата: 21.06.13 21:56
Оценка:
Здравствуйте, fddima, Вы писали:
F>Здравствуйте, ., Вы писали:
.>>Egyptian brackets? Нет уж, увольте.
F> Почему?
научиться глазами ловить можно оба варианта
против них есть два аргумента
первый — неудобно комментить условия для отладке
второй я забыл
Re: try - catch без лишней вложенности
От: __kot2  
Дата: 21.06.13 21:57
Оценка:
Здравствуйте, FrozenHeart, Вы писали:
FH>Я выступал за первый вариант, т.к. в данном случае мы избавляемся от лишней вложенности, которая здесь не нужна. Минусом такого подхода является, конечно, то, что подобная конструкция встречается не так уж и часто (да и вообще была придумана лишь ради того, чтобы использовать её в списке инициализации конструкторов), в связи с чем некоторые программисты могут застрять на пару минут, перечитывая данный кусок кода.
логично, но я бы лично подвис над первым вариантом
а нужно следовать принципу минимальной неожиданности, посему вариант 2
Re[7]: "Неправильно ты, Дядя Фёдор, бутерброд ешь..."
От: Gadsky Россия  
Дата: 22.06.13 10:51
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>Здравствуйте, Gadsky, Вы писали:


.>>>>>Egyptian brackets? Нет уж, увольте.

F>>>> Почему?
BFE>>>Открывающая и закрывающая скобки должны находиться либо на одной строке, либо в одном столбце. Для удобства чтения.
G>>Кому должны?
BFE>Читателю.

Хотите ощутить себя читателем противоположного стиля? — Сделайте еще по паре пустых строк до и после этой скобочки. Как оно?

ИМХО лишние пустые строки — точно такой же мусор на экране как и все другое...
Re[8]: "Неправильно ты, Дядя Фёдор, бутерброд ешь..."
От: . Великобритания  
Дата: 22.06.13 15:53
Оценка:
Здравствуйте, Gadsky, Вы писали:

G> Хотите ощутить себя читателем противоположного стиля? — Сделайте еще по паре пустых строк до и после этой скобочки. Как оно?

А зачем? Почему пару, а не четырнадцать? Это всё алогично. Как и алогично открывающую скобку писать как-то по другому, чем закрывающую.

G> ИМХО лишние пустые строки — точно такой же мусор на экране как и все другое...

Будьте последовательны, не ставьте и перед закрывающей, мусора ещё меньше будет. И после тоже не ставьте.
avalon/1.0.432
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[8]: "Неправильно ты, Дядя Фёдор, бутерброд ешь..."
От: B0FEE664  
Дата: 24.06.13 08:01
Оценка:
Здравствуйте, Gadsky, Вы писали:

.>>>>>>Egyptian brackets? Нет уж, увольте.

F>>>>> Почему?
BFE>>>>Открывающая и закрывающая скобки должны находиться либо на одной строке, либо в одном столбце. Для удобства чтения.
G>>>Кому должны?
BFE>>Читателю.

G>Хотите ощутить себя читателем противоположного стиля? — Сделайте еще по паре пустых строк до и после этой скобочки. Как оно?

G>ИМХО лишние пустые строки — точно такой же мусор на экране как и все другое...

Пустые строки на экране совершенно не напрягают. Собственно, я и сейчас из-за "корпоративных" правил иногда пишу так:
    if ( a < b ) {

        c = b - a;
    }
    ....
И каждый день — без права на ошибку...
Re[9]: "Неправильно ты, Дядя Фёдор, бутерброд ешь..."
От: Gadsky Россия  
Дата: 24.06.13 10:48
Оценка:
Здравствуйте, ., Вы писали:

G>> ИМХО лишние пустые строки — точно такой же мусор на экране как и все другое...

.>Будьте последовательны, не ставьте и перед закрывающей, мусора ещё меньше будет. И после тоже не ставьте.

Закрывающая скобка показывает конец блока. Открывающая для начала совершенно необязательна, т.к. в 99% случаев начало блока видно по соответствующему ключевому слову.
Re[10]: "Неправильно ты, Дядя Фёдор, бутерброд ешь..."
От: . Великобритания  
Дата: 25.06.13 20:32
Оценка:
Здравствуйте, Gadsky, Вы писали:

G> .>Будьте последовательны, не ставьте и перед закрывающей, мусора ещё меньше будет. И после тоже не ставьте.

G> Закрывающая скобка показывает конец блока. Открывающая для начала совершенно необязательна, т.к. в 99% случаев начало блока видно по соответствующему ключевому слову.
Зачем нужны правила работающие в 99% случаев, если есть правила работающие в 100%?
Блок есть блок, а ключевое слово — ключевое слово. Непонятно, почему именно блоки с ключевыми словами какие-то особенные.
Скажем, вот такое непонятно как правильно форматировать c egyptian brackets:
String[][] a =
{
    {
        "aaaaaaaaaaaaaaa",
        "bbbbbbbbbbbbbbbbbbbbb"
    },
    {
        "ccccccccccccccccc",
        "ddddddddddddddddddddddddddd",
        "eee"
    }
};
avalon/1.0.432
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[11]: "Неправильно ты, Дядя Фёдор, бутерброд ешь..."
От: Gadsky Россия  
Дата: 25.06.13 21:31
Оценка:
Здравствуйте, ., Вы писали:

.>Зачем нужны правила работающие в 99% случаев, если есть правила работающие в 100%?

Да-да, пустая строка при открывающей скобке — 100% лишняя.

.>Блок есть блок, а ключевое слово — ключевое слово. Непонятно, почему именно блоки с ключевыми словами какие-то особенные.

Они не особенные, просто блок прекрасно видно — начало и конец. Перенос скобки детект блока не облегчает, а пространство жрет.

.>Скажем, вот такое непонятно как правильно форматировать c egyptian brackets:

.>
.>String[][] a =
.>{
.>    {
.>        "aaaaaaaaaaaaaaa",
.>        "bbbbbbbbbbbbbbbbbbbbb"
.>    },
.>    {
.>        "ccccccccccccccccc",
.>        "ddddddddddddddddddddddddddd",
.>        "eee"
.>    }
.>};
.>


Не вижу проблемы, за отсутствием ключевого слова и такой подход прокатит (для внутренних блоков).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.