8 правил хорошего кода - хорошая статья о Code Style

 

Бродя по Хабру, наткнулся на интересную статью 8 правил хорошего кода, думаю, многим будет интересно почитать. Программисты MQL иногда присылают свой код на предмет найти ошибку. И очень часто при первом взгляде на него мне хочется бежать за блевотным пакетиком, настолько отвратительно этот код выглядит.

У меня при чтении такого спагетти-кода возникает образ программиста, которые его написал : лохматое, немытое, воняющее существо с всклокоченными волосами, красными глазами и недельной щетиной. В квартире бардак, последняя женщина в его жизни была лет 5 назад, питается дешираком с бульонными кубиками )) Знаю, что люди, присылающие код, следят за собой, квартирой, собакой и даже женой. Но почему такое наплевательское отношение к написанию кода?

Обычно я сразу загоняю такие исходники в Visual Studio и там его форматирую в божеский вид. И вы знаете, частенько после того, как код из каши-малаши превращается в нечто осмысленное и структурированное, ошибка становится видна невооруженным глазом. 

Примеры спагетти-кода приводить не буду, дабы не портить воскресный вечер ))

Перефразируя великого писателя под наши реалии, можно сказать : В человеке всё должно быть прекрасно: и лицо, и одежда, и душа, и код...

А. П. Чехов 

Do good code: 8 правил хорошего кода
Do good code: 8 правил хорошего кода
  • habrahabr.ru
Практически всем, кто обучался программированию, известна книга Стива Макконнелла «Совершенный код». Она всегда производит впечатление, прежде всего, внушительной толщиной (около 900 страниц). К сожалению, реальность такова, что иногда впечатления этим и ограничиваются. А зря. В дальнейшей профессиональной деятельности программисты сталкиваются...
 
Alexey Volchanskiy:

Бродя по Хабру, наткнулся на интересную статью 8 правил хорошего кода, думаю, многим будет интересно почитать. Программисты MQL иногда присылают свой код на предмет найти ошибку. И очень часто при первом взгляде на него мне хочется бежать за блевотным пакетиком, настолько отвратительно этот код выглядит.

У меня при чтении такого спагетти-кода возникает образ программиста, которые его написал : лохматое, немытое, воняющее существо с всклокоченными волосами, красными глазами и недельной щетиной. В квартире бардак, последняя женщина в его жизни была лет 5 назад, питается дешираком с бульонными кубиками )) Знаю, что люди, присылающие код, следят за собой, квартирой, собакой и даже женой. Но почему такое наплевательское отношение к написанию кода?

Обычно я сразу загоняю такие исходники в Visual Studio и там его форматирую в божеский вид. И вы знаете, частенько после того, как код из каши-малаши превращается в нечто осмысленное и структурированное, ошибка становится видна невооруженным глазом. 

Примеры спагетти-кода приводить не буду, дабы не портить воскресный вечер ))

Перефразируя великого писателя под наши реалии, можно сказать : В человеке всё должно быть прекрасно: и лицо, и одежда, и душа, и код...

А. П. Чехов 

Улыбнули примеры, противоречащие правилам под которые они составлены:

================== 

...соблюдайте правило вертикали — части одного запроса или условия должны находиться на одном отступе
if (typeof a ! == "undefined" &&
    typeof b ! == "undefined" &&
    typeof c === "string") { 
//your stuff 
}

 

 ...Попробуем внести изменения таким образом:

// находим лист, записываем имя в leafName
if ( node != null ) {
     while ( node.next != null ) {
           node = node.next;
           leafName = node.name;
     }
}
else {
     leafName = ””;
}

 

 ==================

 Как-то кривовато соблюдено правило вертикали, не правда ли?

 
Yury Kirillov:

Улыбнули примеры, противоречащие правилам под которые они составлены:

================== 

...соблюдайте правило вертикали — части одного запроса или условия должны находиться на одном отступе

 

 ...Попробуем внести изменения таким образом:

 

 ==================

 Как-то кривовато соблюдено правило вертикали, не правда ли?

Не надо фанатизма, это не значит, что надо код по столбцам расписывать )) Достаточно выравнивания по typeof a. Во втором примере вообще криминала не вижу. Лично меня бесят расстановки {} скобок, нифига не видно начало и конец блока. Я всегда так пишу

 
Alexey Volchanskiy:

Не надо фанатизма, это не значит, что надо код по столбцам расписывать )) Достаточно выравнивания по typeof a. Во втором примере вообще криминала не вижу. Лично меня бесят расстановки {} скобок, нифига не видно начало и конец блока. Я всегда так пишу

 Не знаю, не знаю. Иногда фанатизм со скобками облегчает восприятие.

   {if (TPoff)                                      //если ТР отключены, то программный профит - какой захотим, 
   {
      ProfitB=ProfOrd;
      ProfitS=ProfOrd;
   }else{                                          //Иначе - не меньше 2 стоплевел (по крайней мере для РобоФорекс)
      ProfitB=fmax(ProfOrd,2*gStopLevelB*Point);       
      ProfitS=fmax(ProfOrd,2*gStopLevelS*Point);       
   }}//if (TPoff)
 
Yury Kirillov:

 Не знаю, не знаю. Иногда фанатизм со скобками облегчает восприятие.

Так пишут программисты с маленьким размером .... не того, о чем все подумали.

Монитора )) Размер имеет значение!

------ шучу, кодестайл в разных фирмах разный, хотя, обычно придерживаются стиля от MS 

 
Alexey Volchanskiy:

Так пишут программисты с маленьким размером .... не того, о чем все подумали.

Монитора )) Размер имеет значение!

------ шучу, кодестайл в разных фирмах разный, хотя, обычно придерживаются стиля от MS 

Типа у кого не хватает размера - тот компенсирует большим монитором? :-)))
 
Yury Kirillov:
Типа у кого не хватает размера - тот компенсирует большим монитором? :-)))
Неее )) У кого в том числе и мониторчик маленький, компенсирует тем, что пытается втиснуть побольше строк кода на экран.
 

Сразу бросилось в глаза

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

for (var i = 0; i < 100; i++)

Но у MQ пробелы считаются плохом тоном.

 
Yury Kirillov:

...

 Как-то кривовато соблюдено правило вертикали, не правда ли?

Где конкретно кривизна и в чем? Нормальные примеры без кривизны.
 
Alexey Viktorov:

Сразу бросилось в глаза

Но у MQ пробелы считаются плохом тоном.

Может, у MQ маленькие мониторы? )) Я ставлю пробелы, мне так комфортнее
 
Alexey Viktorov:

Сразу бросилось в глаза

Но у MQ пробелы считаются плохом тоном.

   А при чем здесь MQ ???  

   Пишете то вы... 

Причина обращения: