Здравствуйте,
Какой вариант вы предпочитаете и испольуете когда разрабатывате софт.
Убираете ли вы скобки если всего одна строка с кодом после if|for|while,
если нет то почему?
1.
if (a < 5)
func1();
for (int i; i < 100; i++)
func2();
while (b < 12)
func3();
2.
if (a < 5)
{
func1();
}
for (int i; i < 100; i++)
{
func2();
}
while (b < 12)
{
func3();
}
Мне больше нравиться первый вариант, т.к. код выглядит более компактно.
меньше личших знаков которые надо анализировать и игнорировать пока читаешь код,
т.е. глаза меньше устают, больше строчек кода помещается на одном экране.
Підтримати Україну у боротьбі з країною-терористом.
Если коротко, то основной критерий для хорошей системы соглашений по кодированию всего один: она строится на правилах, а не на исключениях.
Исключения сложнее формализовать, сложнее проверять и почти невозможно применять автоматически.
Как следствие, на больших проектах любое исключение рано или поздно нивелирует правило, и код превращается в дикую мешанину из "я так вижу". Кому-то это может и нравится, мне — нет.
Здравствуйте, Qbit86, Вы писали:
Q>Если в тестовых целях...
Sinix хорошо выше сказал: если брать каждое исключение во внимание (т.е. ваше "если"), то ничего путного не выйдет. Лучше скипать скобки, ибо читают код куда чаще, чем влезают в каждую строчку и "не выполняют". Кроме того, комментирующий должен быть внимателен, так нельзя комментировать if.
Здравствуйте, Kolesiki, Вы писали:
K>Sinix хорошо выше сказал: если брать каждое исключение во внимание (т.е. ваше "если"), то ничего путного не выйдет. Лучше скипать скобки, ибо читают код куда чаще, чем влезают в каждую строчку и "не выполняют". Кроме того, комментирующий должен быть внимателен, так нельзя комментировать if.
Пропуск скобок — это и есть исключение. Типа: много'statement'овые блоки пишем со скобками, а одно'statement'овые синтаксически можно писать и так и эдак, но мы выберем вариант без скобок как исключение.
Здравствуйте, _ichensky, Вы писали:
_>Здравствуйте, _>Какой вариант вы предпочитаете и испольуете когда разрабатывате софт. _>Убираете ли вы скобки если всего одна строка с кодом после if|for|while, _>если нет то почему?
Лично я для себя предпочитаю не писать скобки для одной строки.
В команде соглашение писать скобки всегда и я этого придерживаюсь так как однообразный стиль предпочтительней.
Здравствуйте, Kolesiki, Вы писали:
_>>Какой вариант вы предпочитаете и испольуете когда разрабатывате софт. K>Вот такой:
На самом деле очень полезный вариант, называется Indent Guides:
А по поводу subj, я лично использую вариант 1 (см. пример выше). Потому что мне так нравится: исходники компактнее, больше помещается на экран, меньше "синтаксического мусора".
Если это допускается синтаксисом — это можно использовать, нужно лишь только понимать когда и почему.
Но я работаю один. Если работаешь в команде, то как правило вырабатывается "командный стиль" и тогда if и прочие конструкции проще брать из сниппетов, да плюс все это контролируется правилами (решарпера или еще какого препроцессора). В это случае важно, чтобы весь код был в одном стиле, т.к. читать ваш код будут другие люди, а вы соотвественно — код других. И необходима некая формализация, даже в ущерб очевидным преимуществам.
Опускание скобок если тело состоит из одного операнда не стоит применять если при этом усложнятеся читаемость кода, например, в случае вложенных (nested) конструкций:
// проблема
if(conditionA)
if(conditionB)
...
else // требуется время, чтобы понять к какому if принадлежит этот else
...
// решение
if(conditionA)
{
if(conditionB)
...
else
...
}
// а вот такое я не понимаю (для одно-операндовых тел)
if(conditionA)
{
if(conditionB)
{
...
}
else
{
...
}
}
с другой стороны у VS довольно мощный форматтер (CTRL+K, CTRL+D — форматировать открытый документ), если не боитесь полагаться на MS, то исключения можно использовать везде, особенно если взят на вооружение Indent Guides.
Здравствуйте, _ichensky, Вы писали:
_>Здравствуйте, _>Какой вариант вы предпочитаете и испольуете когда разрабатывате софт. _>Убираете ли вы скобки если всего одна строка с кодом после if|for|while, _>если нет то почему?
Пишу всегда со всеми скобками. И автоформатирование настроил вставлять скобки везде где можно.
Пробовал перейти на вариант без скобок, если блок состоит только из одной строки, но буквально через пару дней добавил в одном месте вторую строку и забыл про скобки — баг. Как только обнаружил, стал снова ставить скобки везде. Мне и так есть над чем подумать, чтобы ещё и за скобками следить.
Здравствуйте, _ichensky, Вы писали:
_>Здравствуйте, _>Какой вариант вы предпочитаете и испольуете когда разрабатывате софт. _>Убираете ли вы скобки если всего одна строка с кодом после if|for|while, _>если нет то почему?
Предпочитаю скобки писать, но более компактно:
if (a < 5) {
func1();
}
for (int i; i < 100; i++) {
func2();
}
while (b < 12) {
func3();
}
Почему-то этот вариант не очень популярен. Возможно, из-за того что студия с настройками по умолчанию не дает так писать.
Здравствуйте, Vladek, Вы писали:
V>Стараюсь ставить скобки везде. Ещё важный момент для меня, не использую оператор !, он плохо читается:
Аналогично. Он не только плохо читается, но и редко соответствует семантике. Намного чаще требуется знать, что условие ложно, а не что его отрицание истинно.
Здравствуйте, alexzz, Вы писали:
V>>Стараюсь ставить скобки везде. Ещё важный момент для меня, не использую оператор !, он плохо читается: A>Аналогично. Он не только плохо читается, но и редко соответствует семантике. Намного чаще требуется знать, что условие ложно, а не что его отрицание истинно.
Для этого умные люди (т.е. кого отсеяла на собеседовании C# team) используют оператор unless, правда это в Perl
Я не знаю в чём была гиперэкономия, когда керниганыричи забабахали свои символьные выкрутасы (&& || !), но экономия получилась буквально ОДИН СИМВОЛ — and or xor not — чего ради надо было занимать символы — непонятно.
Но это Си-легаси, никто не мешал ни Жабистам, ни Шарповодам использовать человечески удобные обозначения.
A>>Почему-то этот вариант не очень популярен. Возможно, из-за того что студия с настройками по умолчанию не дает так писать.
GIV>Это стиль Java, поэтому в C# так нельзя
Здравствуйте, Darooma, Вы писали:
A>>>Почему-то этот вариант не очень популярен. Возможно, из-за того что студия с настройками по умолчанию не дает так писать.
GIV>>Это стиль Java, поэтому в C# так нельзя
D>не скомпилируется?
Скомпилируется. Но в студии со стандартными настройками такой стиль неудобен: форматер переносит открывающую скобку на новую строку.