Свобода форматировать код - зачем она?
От: Chrome  
Дата: 23.11.09 20:28
Оценка: 7 (2) +2 -2
В былые времена, когда деревья были большие а трава зеленая...
Программистов уговаривали, что форматировать код — это хорошо.
Умные люди тратили свое время, что бы донести мысль, которая в наши дни очевидна и вроде бы не подлежит сомнению.
Что надо делать отступы в соответствии с уровнем вложенности, ставить пробелы где положено, не размещать несколько мыслей в одной строке и т д.
То, что сейчас называется стандартами кодирования.

И вроде ни у кого не вызывает сомнения, что эти стандарты следует соблюдать.
Однако средства разработки по прежнему оставляют этот аспект на усмотрение программиста.
Захотел написать код без отступов — пожалуйте. Захотел в одну строчку — на здоровье.
То есть вам конечно, всячески помогают делать правильно, не и неправильно делать не запрещают.
Это плохо, по моему. Во всяком случае в проектах, где больше одного человека.

Как думаете, со временем свобода форматирования полностью отомрет?

Ну максимум, что мне кажется позволительным, это вставить несколько пустых строк, что бы выделять логические участки.
А все остальное должно быть жестко автоформатировано.
Кстати было это в Visual Basic 6.0 неплохо реализовано, уходишь с текущей строки — она форматируется и ошибки подсвечивает.

Так же интересно, обязательные скобочки, выделяющие блоки кода, все эти {}, begin end
— уже живые мертвецы? Сущесвуют просто по инерции?
Ведь отступов для достижения той же цели достаточно, и они являются необходимыми в свете вышеизложенных мыслей.

Есть у скобочек причины для выживания в синтаксисе будущих языков?
Re: Свобода форматировать код - зачем она?
От: Hobot Bobot США  
Дата: 23.11.09 20:54
Оценка:
Здравствуйте, Chrome, Вы писали:

C>Так же интересно, обязательные скобочки, выделяющие блоки кода, все эти {}, begin end

C> — уже живые мертвецы? Сущесвуют просто по инерции?
C>Ведь отступов для достижения той же цели достаточно, и они являются необходимыми в свете вышеизложенных мыслей.

Посмотри на Питон. Как по мне — терпимо, но со скобочками нагляднее
What a piece of work is a man! how noble in reason! how infinite in faculty! in form and moving how express and admirable! in action how like an angel! in apprehension how like a god! the beauty of the world! the paragon of animals!
Re[2]: Свобода форматировать код - зачем она?
От: Курилка Россия http://kirya.narod.ru/
Дата: 23.11.09 21:49
Оценка:
Здравствуйте, Hobot Bobot, Вы писали:

HB>Здравствуйте, Chrome, Вы писали:


C>>Так же интересно, обязательные скобочки, выделяющие блоки кода, все эти {}, begin end

C>> — уже живые мертвецы? Сущесвуют просто по инерции?
C>>Ведь отступов для достижения той же цели достаточно, и они являются необходимыми в свете вышеизложенных мыслей.

HB>Посмотри на Питон. Как по мне — терпимо, но со скобочками нагляднее


В Haskell можно как в Питоне, а если захочется (ну мало-ли по пьяни там или ещё как), то можно и скобочки нарисовать
Re: Свобода форматировать код - зачем она?
От: RomikT Германия  
Дата: 23.11.09 21:55
Оценка: +1
Здравствуйте, Chrome, Вы писали:

C>...

C>Ну максимум, что мне кажется позволительным, это вставить несколько пустых строк, что бы выделять логические участки.
C>А все остальное должно быть жестко автоформатировано.
C>Кстати было это в Visual Basic 6.0 неплохо реализовано, уходишь с текущей строки — она форматируется и ошибки подсвечивает.

В Eclipse, например, можно включить автоматическое форматирование при сохранении. И не только форматирование, но и некоторые другие "подчистки" кода. Я его почти всегда держу включенным.
Re: Свобода форматировать код - зачем она?
От: alexeiz  
Дата: 23.11.09 23:02
Оценка: :))) :))) :))) :))
Chrome, Вам присуждается почётное звание Formatting Nazi:

Re: Свобода форматировать код - зачем она?
От: Pzz Россия https://github.com/alexpevzner
Дата: 24.11.09 01:46
Оценка: +1 -3
Здравствуйте, Chrome, Вы писали:

C>И вроде ни у кого не вызывает сомнения, что эти стандарты следует соблюдать.

C>Однако средства разработки по прежнему оставляют этот аспект на усмотрение программиста.
C>Захотел написать код без отступов — пожалуйте. Захотел в одну строчку — на здоровье.
C>То есть вам конечно, всячески помогают делать правильно, не и неправильно делать не запрещают.
C>Это плохо, по моему. Во всяком случае в проектах, где больше одного человека.

А что делать, если вам достался в наследство товарный вагон кода, отформатированного не так, как принято в вашей организации (или в организации, разработавшей средства разработки)? Городить огород из разных стилей? Но это кошмар получится. Переформатировать старый код по-новому? Но при этом во-первых вы потеряете возможность сравнивать ваши изменения с оригиналом, а во-вторых, потеряете форматирование комментариев, которое тоже могло как-то использоваться в качестве выразительного средства.

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

C>Так же интересно, обязательные скобочки, выделяющие блоки кода, все эти {}, begin end

C> — уже живые мертвецы? Сущесвуют просто по инерции?
C>Ведь отступов для достижения той же цели достаточно, и они являются необходимыми в свете вышеизложенных мыслей.

Так сделано в питоне. На мой взгляд — глупость.
Re[2]: Свобода форматировать код - зачем она?
От: no4  
Дата: 24.11.09 04:08
Оценка: 1 (1) +1
Здравствуйте, Pzz, Вы писали:

Pzz>Но при этом во-первых вы потеряете возможность сравнивать ваши изменения с оригиналом,


Не потеряю. Достаточно перед сравнением переформатировать старую версию на лету.

Pzz>а во-вторых, потеряете форматирование комментариев, которое тоже могло как-то использоваться в качестве выразительного средства.


Сколько ты встречал такого кода?
Да, иногда бывает подобие ASCII Art в коде, но я такое при работе не встречал, только давно, когда читал исходники чего-то манипулирующего битами.

Pzz>Вот и получается, что невозможно выбрать какой-то единый стиль, а все остальные отменить. Ну и явно преобладающего стиля тоже как-то нет, все пишут по-разному.


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

C>>Ведь отступов для достижения той же цели достаточно, и они являются необходимыми в свете вышеизложенных мыслей.


Pzz>Так сделано в питоне. На мой взгляд — глупость.


И еще — F#, Haskell, Boo

Я тоже раньше так думал. Пробовал ли ты привыкнуть к этому? С моей точки зрения, скобочки — просто привычный костыль. Конечно первое время глаз относится недоверчиво — так как привык проверять отступы по дублирующим их скобочкам. А потом привыкаешь и скобки наоборот начинают раздражать.

Всё-таки в скобочных языках программисты все равно делают отступы, чтобы сразу видеть вложенности в коде, а вот скобочки в отступных языках никто(1) для себя не пишет — хотя могли бы, например, комментариями.

(1) "Никто" употребляется в разговорном смысле "известное мне большинство"
Re[3]: Свобода форматировать код - зачем она?
От: Sinix  
Дата: 24.11.09 06:40
Оценка: +2 -2
Здравствуйте, no4.

no4>Всё-таки в скобочных языках программисты все равно делают отступы, чтобы сразу видеть вложенности в коде, а вот скобочки в отступных языках никто(1) для себя не пишет — хотя могли бы, например, комментариями.


1. Шансов ошибиться скобочками куда меньше, чем шансов огрести проблем с отступами — скобочек банально меньше.
2. Нет разброда в том что считать отступом и сколько раз.
3. Ни одна софтина не заменяет скобочки на что-то другое (см холивары про табуляцию).
4. Семантика программы не должна определяться невидимыми символами/форматированием.
5. Отступы у скобчатых получаются в нагрузку и не несут смысловой нагрузки (уже написано выше).

Разумеется, любую идею можно довести до абсурда — отступы в маткаде не то чтобы страшнее (ПРЕВЕД ((ЛИСП) !)). Хотя вайтспейс всё равно круче.

В общем для мейнстрима не пойдёт
Re[3]: Свобода форматировать код - зачем она?
От: Константин Б. Россия  
Дата: 24.11.09 06:47
Оценка: 1 (1) +2 -1 :)
Здравствуйте, no4, Вы писали:

no4>Я тоже раньше так думал. Пробовал ли ты привыкнуть к этому? С моей точки зрения, скобочки — просто привычный костыль. Конечно первое время глаз относится недоверчиво — так как привык проверять отступы по дублирующим их скобочкам. А потом привыкаешь и скобки наоборот начинают раздражать.


Очень чревато ошибками. Например при Cut/Paste кода из одного места в другое легко ошибиться в отступах. Забыть внести строчку в цикл или наоборот лишнюю добавить. Скобочки в этом отношении надежнее.
Re[4]: Свобода форматировать код - зачем она?
От: Курилка Россия http://kirya.narod.ru/
Дата: 24.11.09 06:52
Оценка: -3 :)
Здравствуйте, Константин Б., Вы писали:

КБ>Здравствуйте, no4, Вы писали:


no4>>Я тоже раньше так думал. Пробовал ли ты привыкнуть к этому? С моей точки зрения, скобочки — просто привычный костыль. Конечно первое время глаз относится недоверчиво — так как привык проверять отступы по дублирующим их скобочкам. А потом привыкаешь и скобки наоборот начинают раздражать.


КБ>Очень чревато ошибками. Например при Cut/Paste кода из одного места в другое легко ошибиться в отступах. Забыть внести строчку в цикл или наоборот лишнюю добавить. Скобочки в этом отношении надежнее.


По-моему как раз использование Cut/Paste чревато ошибками
Re[5]: Свобода форматировать код - зачем она?
От: Clevelus Россия http://clevelus.ru
Дата: 24.11.09 08:34
Оценка:
В Visual Studio Меню->Правка->Форматировать документ и нет проблем.

Как форматировать (в том числе и скобочки) можно предварительно настроить.
Доброго времени суток! Мир Вам! С уважением Clevelus.
Если мой ответ понравился — оцените, ни на что не влияет, но будет приятно.
Re[4]: Свобода форматировать код - зачем она?
От: geniepro http://geniepro.livejournal.com/
Дата: 24.11.09 09:13
Оценка: 1 (1)
Здравствуйте, Sinix, Вы писали:

S>1. Шансов ошибиться скобочками куда меньше, чем шансов огрести проблем с отступами — скобочек банально меньше.


In praise of mandatory indentation for novice programmers
http://okasaki.blogspot.com/2008/02/in-praise-of-mandatory-indentation-for.html
Re[6]: Свобода форматировать код - зачем она?
От: Chrome  
Дата: 24.11.09 09:15
Оценка:
Здравствуйте, Clevelus, Вы писали:

C>В Visual Studio Меню->Правка->Форматировать документ и нет проблем.


Вопрос был — зачем позволять программисту нарушать стандартное форматирование?
Re[7]: Свобода форматировать код - зачем она?
От: Tekk  
Дата: 24.11.09 09:22
Оценка:
Здравствуйте, Chrome, Вы писали:

C>Вопрос был — зачем позволять программисту нарушать стандартное форматирование?


По историческим причинам (С)
Re[5]: Свобода форматировать код - зачем она?
От: Sinix  
Дата: 24.11.09 09:48
Оценка:
Здравствуйте, geniepro, Вы писали:

G>http://okasaki.blogspot.com/2008/02/in-praise-of-mandatory-indentation-for.html


А в киеве дядька...
Я перечислил грабли связанные с программированием отступами в мейнстриме.
Вы поделились ссылкой на опыты по натаскиванию новичков.
?????
[PROFIT]

Да ещё финальный пассаж "я поражён как правильное форматирование помогает студентам писать программы"... автор явно метит в капитаны

Не принято в общем. Следующий?
Re[3]: Свобода форматировать код - зачем она?
От: Pzz Россия https://github.com/alexpevzner
Дата: 24.11.09 10:16
Оценка:
Здравствуйте, no4, Вы писали:

no4>Я тоже раньше так думал. Пробовал ли ты привыкнуть к этому? С моей точки зрения, скобочки — просто привычный костыль. Конечно первое время глаз относится недоверчиво — так как привык проверять отступы по дублирующим их скобочкам. А потом привыкаешь и скобки наоборот начинают раздражать.


Это у вас Стокгольмский синдром проявляется
Re: Свобода форматировать код - зачем она?
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 24.11.09 11:14
Оценка: 3 (2) +5 -1
Здравствуйте, Chrome, Вы писали:

C>Что надо делать отступы в соответствии с уровнем вложенности, ставить пробелы где положено, не размещать несколько мыслей в одной строке и т д.

C>То, что сейчас называется стандартами кодирования.

C>И вроде ни у кого не вызывает сомнения, что эти стандарты следует соблюдать.

C>Однако средства разработки по прежнему оставляют этот аспект на усмотрение программиста.

Следует соблюдать, но все-таки это не догма. Например, нечто такое:

  // Тут я пробелами показываю структуру, что в линейном коде отобразить сложно
  parent.appendChild(p);
    p.appendChild(div);
      div.appendChild(span);
    p.appendChild(otherDiv);
    p.appendChild(table);

  // Альтернатива, увидеть структуру сложно
  parent.appendChild(p);
  p.appendChild(div);
  div.appendChild(span);
  p.appendChild(otherDiv);
  p.appendChild(table);


  // А тут пробелы используются для логической группировки
  X := (A+1) * (A*X*X + B*X + C);
  X := ( A + 1 ) * ( A * X * X + B * X + C); // Для сравнения, так отформатировал бы VB


  for c1 :=    0 to 51 do
  for c2 := c1+1 to 51 do
  for c3 := c2+1 to 51 do
  for c4 := c3+1 to 51 do
  for c5 := c4+1 to 51 do
  begin
    // Обработка последовательности c1, c2, c3, c4, c5
    // Какой вариант мне приятнее для восприятия, чем с отступами
  end;


     // А вот альтернатива  
     for (c1=0; c1<52; ++c1)
          for (c2=c1+1; c2<52; c2++)
               for (c3=c2+1; c3<52; c3++)
                    for (c4=c3+1; c4<52; c4++)
                         for (c5=c4+1; c5<52; c5++)
                         {
                              // Совсем уехали вправо
                         }


Ну и психологическая проблема: если я не могу написать так, как считаю нужным в данном конкретном случае, то такую систему в топку.
Re[5]: Свобода форматировать код - зачем она?
От: Константин Б. Россия  
Дата: 24.11.09 11:50
Оценка: +2 :))
Здравствуйте, Курилка, Вы писали:

К>Здравствуйте, Константин Б., Вы писали:


КБ>>Здравствуйте, no4, Вы писали:


no4>>>Я тоже раньше так думал. Пробовал ли ты привыкнуть к этому? С моей точки зрения, скобочки — просто привычный костыль. Конечно первое время глаз относится недоверчиво — так как привык проверять отступы по дублирующим их скобочкам. А потом привыкаешь и скобки наоборот начинают раздражать.


КБ>>Очень чревато ошибками. Например при Cut/Paste кода из одного места в другое легко ошибиться в отступах. Забыть внести строчку в цикл или наоборот лишнюю добавить. Скобочки в этом отношении надежнее.


К>По-моему как раз использование Cut/Paste чревато ошибками


Т.е. если вам нужно перенести кусок кода его по новой набиваете? Или вы сразу все пишете правильно?
Re[7]: Свобода форматировать код - зачем она?
От: Clevelus Россия http://clevelus.ru
Дата: 24.11.09 12:00
Оценка: +1 :)
Здравствуйте, Chrome, Вы писали:

C>Здравствуйте, Clevelus, Вы писали:


C>>В Visual Studio Меню->Правка->Форматировать документ и нет проблем.


C>Вопрос был — зачем позволять программисту нарушать стандартное форматирование?


Представьте, когда серетарь набирает текст в текстовом редакторе — она сразу следует шаблону? Нет! Сначала идет набор текста, исправление ошибок и только потом форматирование.

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

Форматировать или нет ( и как ) определяется политикой в организации. Во многих перед сохранением документа в репозиторий нужно его отформатировать в соответствии с правилами (в студии просто нажать кнопку ).

Более того, форматирование кода, в общем случае, также включает в себя как называть переменные и функции ... и т.д.
Доброго времени суток! Мир Вам! С уважением Clevelus.
Если мой ответ понравился — оцените, ни на что не влияет, но будет приятно.
Re: Свобода форматировать код - зачем она?
От: Воронков Василий Россия  
Дата: 24.11.09 15:20
Оценка: +1
Здравствуйте, Chrome, Вы писали:

На VB.NET никогда не писали? Вот там по умолчанию как раз formatting nazi в полном объеме. Можно посмотреть, как оно в жизни-то получается.

Меня лично бесит
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.