(DRAFT)
Здесь расскажу про такое заблуждение как обрамление фигурными скобочками оператор if с одним простым действием.
if(condition)
{
return 0;
}
вместо
if(condition)
return 0;
Мифическая причина идущая от Стива Макконнела (Code Complete). К ней все обращаются, когда начинают мне её называть. Такое ощущение, что это единственная книга, которую горячие стороники скобочек читали :) Кстати, советую тогда заглянуть на http://agileconsulting.ru/wiki/Books - тут множество книг о качестве кода.
1. Защита от дурака, что кто-то в будущем добавит строчку и сделает баг в программе.
А теперь демистификация скобок. Итак, почему скобки это пережиток:
1. Отступы явно указывают на логический блок из одной строки.
2. Отступы проставляются автоматически средой разработки.
3. Тесты не дадут написать код неправильно. У вас нету тестов? Тогда улучшать качество кода начали не от туда :)
4. Скобки кушают 2 линии
5. Мы бизнес-разработчики, и должны свести к минимум все инженерные ухищрения. Ведь в любом языке фраза: "если наступит утро, то я проснусь" не содержит скобок.
А теперь мой аргумент за скобочки:
1. Визуально видно разделение условия от действия. Строка между условием и действием способствует отличию. Но минус в том, что такая конструкция нагружает, когда идёт проверка входных параметров. В таком случаем мне нужно локаничное полотно проверок, а не скобочки :) Поэтому вначале функции проверки без скобочек очень удобны, а вот чуть глубже в тело функции - нужно подумать.
Если вы используете современную IDE и TDD и утверждаете, что скобки полезны по названой мифической причине - просьба дайте конкретный пример. Иначе рассуждаем о коне в ваккууме.
на мой взгляд, скобочки помогаюти делать код проще. Это ты написал "return 0;", а часто тело бывает очень даже не тривиальным, и понять с помощью скобок гораздо проще. И если код Java-style, потеряешь всего одну строку под скобки. Вобщем, я не согласен, что скобки в данном случае зло.
ОтветитьУдалитьif (condition) {
return new XMLObject();
}
ок. добавлю условие.
ОтветитьУдалитьif(condition)
ОтветитьУдалитьreturn 0;
if(!condition)
return 1;
Гы
было круто!
ОтветитьУдалитьif(condition) return !condition;
else return condition;
Вот такая реальность жизни...
ОтветитьУдалитьhttp://www.govnokod.ru/872
Денис, прошу прощенья, что не в тему немного. Вы родом не из Хабаровска?
ОтветитьУдалитьВ любом языке фраза: "если наступит утро, то я проснусь,пойду пить кофе и читать газету" также не содержит скобок. Вывод: скобки вообще не нужны, даже если операторов много :)
ОтветитьУдалитьЮля, ну зачем тузом бить? :)
ОтветитьУдалитьАнонимный, да из Хабаровска.
По-моему, вы занимаетесь хренотой в этом посте. Без обид. Если в этом и состоит ваша работа как тренера, то я удивлен и раздосадован.
ОтветитьУдалить-- meowth.
P.S. Мне помнится, что вы упоминали, что сильны в применении ценностей и принципов написания хоршего кода. Предлагаю чеклист этих принципов в качестве темы след. поста -- надеюсь, что не только мне будет интересно.
Этот комментарий был удален автором.
ОтветитьУдалить>> материал этого сообщения
ОтветитьУдалитьНе материал. Удивляет то, что целый пост посвящен достаточно второстепенному вопросу, а в качестве аргументов приведены субъективные ощущения, не подкрепленные практикой.
Это хорошо, что вы над ними задумываетесь, однако.. Есть такое выражение -- "писАть в стол", т.е. размышлять и делать выводы исключительно для себя, никому не показывая. Если они подтверждаются -- тогда делиться ими, если нет -- оставлять их выводами для себя. Есть ощущение, что вам этого не хватает.
И завязывайте уже с психоанализом :)
-- meowth
> не подкрепленные практикой.
ОтветитьУдалитьТы любишь читать чужие мысли похвально. Но в данном случае огорчу тебя. Ты промазал.
> И завязывайте уже с психоанализом :)
Это не психоанализ. Это одна из составляющих динамики развития команд. Если ты владеешь таким инструментом - можно построить команду мечты.
Жаль, что ты защищаешься.
Чтобы развеять, что это не психоанализ, а реальность обратись к книге "Программируем командный дух" и послушай наши подкасты, где мы обсуждаем проблематику эмоционально интеллекта.
И перестань обсуждать, начни проверять через собственный опыт. Только опыт ответит на вопрос - что правда, а что нет.
ОтветитьУдалитьИ ещё раз отправлю тебя к практике - Shu-ha-ri. Обсуждают только на уровне ri, но ты не прошёл даже ни shu, ни ri. А пытаешься вставить свои пять копеек. Но без опыта, твои пять копеек подтверждены гиперинфляции.
А так, прикольно, что ты свои заметки оставляешь, заставляешь задуматься :)
ОтветитьУдалить