Имя пользователя:

Пароль:


Список форумов ПРАКТИЧЕСКИЕ ВОПРОСЫ Работа Программирование и IT Просмотров: 897

Элегантное программирование: Избыточный отступ (over-indenting) - враг номер один


Давим клаву за бабло
  #1
Сообщение 29 Dec 2013, 12:20
Ursego Аватара пользователя
СОЗДАТЕЛЬ ТЕМЫ
Canada, Ontario
Город: Toronto
Стаж: 11 лет 7 месяцев 26 дней
Постов: 10707
Лайкнули: 3448 раз
Карма: 33%
СССР: Днепропетровск
Пол: М
Лучше обращаться на: ты
Заход: 20 Nov 2023, 18:00

Избыточный отступ (over-indenting) - враг номер один

Используйте как можно меньшее вложение логических фрагментов, выделенных отступом (т.е. клавишей TAB).

Обычно если строки отдалились от левой кромки экрана на три TAB-а, то это всё ещё не катастрофично, но в принципе код мог бы быть написан более элегантно, а вот если более, чем на 3, то зажигается "красная лампочка" - структура кода организована некорректно, положение надо исправлять! TAB - он как соль в борще: без соли никак, но но если использовать слишком много, то борщ будет невозможно есть. Если ваш код может похвастаться длинными "лестницами" END IF-ов (или закрывающих фигурных скобок если речь о языке с Си-образным синтаксисом), то Вам стОит критически отнестись к своим программистским привычкам. Товарищ, выделяй фрагмент в отдельную функцию если видишь, что табы наступают как Наполеон на Москву! Лично я почти никогда не использую больше двух табов (во всяком случае стараюсь сдерживать себя в стремлении лишний раз клацнуть по вредной клавише) - соблюдение этого нехитрого правила приводит к ПРОСТЫМ подпрограммам, делая работу более простой и приятной и для меня, и для других членов команды.

Я часто вспоминаю слова своего первого руководителя: "Если я увижу в твоём коде более 3-х табов, вылетишь из проекта как пробка из шампанского!". Огромное спасибо этому человеку - если б не он, я бы пополнил армию кодеров, которым не хватает ширины экрана...

Циклы с "continue"

Используйте в циклах continue вместо того, чтобы выделять следующие строки дополнительным TAB-ом.

Этот способ - тяжёлая артиллерия в борьбе с избыточным отступом:

*** Не рекомендуется: ***

PowerBuilder:
do while [condition]
   if this.uf_data_ok_1() then
      if this.uf_data_ok_2() then
         if this.uf_data_ok_3() then
            [фрагмент кода (возможно, имеющий свои внутренние под-фрагменты с отступом)]
         end if
      end if
   end if
loop

C#:
while ([condition])
{
   if (this.DataOk1())
   {
      if (this.DataOk2())
      {
         if (this.DataOk3())
         {
            [фрагмент кода (возможно, имеющий свои внутренние под-фрагменты с отступом)]
         }
      }
   }
}

*** Рекомендуется: ***

PowerBuilder:
do while [condition]
   if not this.uf_data_ok_1() then continue
   if not this.uf_data_ok_2() then continue
   if not this.uf_data_ok_3() then continue
   [фрагмент кода (возможно, имеющий свои внутренние под-фрагменты с отступом)]
loop

C#:
while ([condition])
{
   if (!this.DataOk1()) continue;
   if (!this.DataOk2()) continue;
   if (!this.DataOk3()) continue;
   [фрагмент кода (возможно, имеющий свои внутренние под-фрагменты с отступом)]
}

  #2     Элегантное программирование: Избыточный отступ (over-indenting) - враг номер один
Сообщение 29 Dec 2013, 13:06
Cth Аватара пользователя
Canada, British Columbia
Город: Vancouver
Стаж: 10 лет 3 месяца 26 дней
Постов: 1550
Лайкнули: 312 раз
Карма: 21%
Пол: М
Заход: 09 Aug 2022, 19:36

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

  #3     Элегантное программирование: Избыточный отступ (over-indenting) - враг номер один
Сообщение 29 Dec 2013, 13:46
Ursego Аватара пользователя
СОЗДАТЕЛЬ ТЕМЫ
Canada, Ontario
Город: Toronto
Стаж: 11 лет 7 месяцев 26 дней
Постов: 10707
Лайкнули: 3448 раз
Карма: 33%
СССР: Днепропетровск
Пол: М
Лучше обращаться на: ты
Заход: 20 Nov 2023, 18:00

cthulchu:
мне continue всегда казался неловким решением
Привычка - дело нешуточное. В этом плане мне повезло - в самом начале пути попал к хорошему дрессировщику, который много дури выбил (ну, не всю, конечно...). Было несколько случаев, когда другим программистам удавалось сломать мои привычки (хотя вначале я отбивался всеми конечностями) - вначале чувствовал неудобство (даже если и мозгами понимал, что по-новому - лучше), а потом привыкал. Зато хорошо усвоил факт, что мои взгляды могут быть не самыми лучшими.

  #4     Элегантное программирование: Избыточный отступ (over-indenting) - враг номер один
Сообщение 29 Dec 2013, 14:22
Cth Аватара пользователя
Canada, British Columbia
Город: Vancouver
Стаж: 10 лет 3 месяца 26 дней
Постов: 1550
Лайкнули: 312 раз
Карма: 21%
Пол: М
Заход: 09 Aug 2022, 19:36

ну да, конечно, век живи - век учись.

Вам есть что сказать по этой теме? Зарегистрируйтесь, и сможете оставлять комментарии
cron