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
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.