Azure Drake
> if (!value) {
> doSomething();
> } else {
> doAnother();
> }
Подумал тут что меня всегда бесило в этом - и кажется понял - то что начинается блок по вертикальным отступам на слово, а заканчивается на символ.
Тут два пути решения - либо действительно делать завершение блока тоже словом end - вообще никаких проблем тогда не имею:
if !value then
doSomething();
else
doAnother();
end;действительно и логично и эстетично и заметьте как лишние скобки повыпадали там где они опять таки нарушали эстетику всячески.
Либо делать всё-таки и открытие блока скобками тоже!
{ if (!value)
doSomething();
} else {
doAnother();
}Во! Так еще можно как то мириться...
Мне тоже нравится end в конце, но в том, что закрывающая } не выглядит полноценным словом, тоже есть смысл: скобка визуально создаёт почти пустую строку, отделяющую блок от следующего.
Это смотрится нормально:
if (...) {
...
}
if (...) {
...
}А тут хочется пустую строку между end и следующим if:
if ... then ... end if ... then ... end
Azure Drake
> Не нужны, если не ставить открывающую скобку в отдельной строке.
Перед армией устраивался на работу в одну студию, у них там был Qt style - struct/class/функции начинают с новой строки, if/switch/for/while оставляют на той же.
Ну ничё, приспособился, нормально. Сейчас вот пишу рейтрейсер этим стилем - ничего не путается, шёрстка гладкая и шелковистая.
Смотрю на старый код с максимальным разносом и пробелами внутри скобочек - и, знаешь, тоже особых проблем как-то не замечаю. Что-то не устают у меня глаза от гуляния по экрану. И ифы из поля зрения почему-то не теряются.
Так что, я считаю, что без разницы оно всё, нет в этом вопросе каких-то объективных аргументов, есть только надуманные придирки и дикая вкусовщина.
Azure Drake
> Мне тоже нравится end в конце, но в том, что закрывающая } не выглядит
> полноценным словом, тоже есть смысл: скобка визуально создаёт почти пустую
> строку, отделяющую блок от следующего.
> Это смотрится нормально:
А вот так ?, -
if (...) { if ( ...) { } ... }}}}}}}}}}}}}
0iStalker
> А вот так
Это, кстати, ещё одно преимущество скобочек. Когда они утрамбованы, это тоже бывает удобно именно для чтения: сразу можно прикинуть число вложенностей, например.
0iStalker
> А вот так ?, -
Я так пробовал, очень неудобно добавлять строки в конец блока, надо скобочки считать.
1 frag / 2 deaths
Да, поэтому такой упаковкой занимаются только когда код уже давно написан и отлажен. Например, в библиотеках.
Azure Drake
> Например, в библиотеках.
Обфускация?
А есть какие-нибудь препроцессоры, позволяющие писать на C/C++ в питоновском стиле? Тогда вообще вопрос с оформлением скобок отпадет :)
1 frag / 2 deaths
Для тебя такой код является понятным,
if (...) { for ( ...) { for ( ...) { if ( ...) { while ( ...) { if ( ...) { for ( ...) { if ( ...) { ... } } } } } } } }
а такой - обфусцированным?
if (...) { for ( ...) { for ( ...) { if ( ...) { while ( ...) { if ( ...) { for ( ...) { if ( ...) { ... }}}}}}}}
Azure Drake
> А тут хочется пустую строку между end и следующим if:
По мне так - нет, потому что блоки выделены пустым пространством в своих границах, а не чем то еще.
Но я часто отделяю друг от друга пустыми строками блоки кода которые делают очень разные вещи, если нет смысла вставлять комментарий, но это другое.
Azure Drake
Да, конец блока неопределяем
1 frag / 2 deaths
Питон ты вообще не признаёшь, надо полагать?
Azure Drake
> Питон ты вообще не признаёшь, надо полагать?
Как в мире где до сих пор программисты пополам делятся на табуляторщиков и пробельщиков вообще можно было придумать язык с зависимостью синтаксиса от видимого размера отступа - мне лично вот вообще неведомо.
По моему весь язык изначально был именно попыткой какое то своё видение в этом вопросе проталкивать в чужие глотки железным сапогом. Это было главное ради чего он создавался.
Azure Drake
> Питон ты вообще не признаёшь, надо полагать?
В нём нет скобок, которые постоянно отвлекают на мысли "не обсчитались ли авторы".
Ну и как ИДЕ в Питоне работает на попытку расчленить блок, я не знаю, возможно там ИДЕ лучше заточено на это.
Тема в архиве.