В былые времена, когда деревья были большие а трава зеленая...
Программистов уговаривали, что форматировать код — это хорошо.
Умные люди тратили свое время, что бы донести мысль, которая в наши дни очевидна и вроде бы не подлежит сомнению.
Что надо делать отступы в соответствии с уровнем вложенности, ставить пробелы где положено, не размещать несколько мыслей в одной строке и т д.
То, что сейчас называется стандартами кодирования.
И вроде ни у кого не вызывает сомнения, что эти стандарты следует соблюдать.
Однако средства разработки по прежнему оставляют этот аспект на усмотрение программиста.
Захотел написать код без отступов — пожалуйте. Захотел в одну строчку — на здоровье.
То есть вам конечно, всячески помогают делать правильно, не и неправильно делать не запрещают.
Это плохо, по моему. Во всяком случае в проектах, где больше одного человека.
Как думаете, со временем свобода форматирования полностью отомрет?
Ну максимум, что мне кажется позволительным, это вставить несколько пустых строк, что бы выделять логические участки.
А все остальное должно быть жестко автоформатировано.
Кстати было это в Visual Basic 6.0 неплохо реализовано, уходишь с текущей строки — она форматируется и ошибки подсвечивает.
Так же интересно, обязательные скобочки, выделяющие блоки кода, все эти {}, begin end
— уже живые мертвецы? Сущесвуют просто по инерции?
Ведь отступов для достижения той же цели достаточно, и они являются необходимыми в свете вышеизложенных мыслей.
Есть у скобочек причины для выживания в синтаксисе будущих языков?
Здравствуйте, 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!
Здравствуйте, Hobot Bobot, Вы писали:
HB>Здравствуйте, Chrome, Вы писали:
C>>Так же интересно, обязательные скобочки, выделяющие блоки кода, все эти {}, begin end C>> — уже живые мертвецы? Сущесвуют просто по инерции? C>>Ведь отступов для достижения той же цели достаточно, и они являются необходимыми в свете вышеизложенных мыслей.
HB>Посмотри на Питон. Как по мне — терпимо, но со скобочками нагляднее
В Haskell можно как в Питоне, а если захочется (ну мало-ли по пьяни там или ещё как), то можно и скобочки нарисовать
Здравствуйте, Chrome, Вы писали:
C>... C>Ну максимум, что мне кажется позволительным, это вставить несколько пустых строк, что бы выделять логические участки. C>А все остальное должно быть жестко автоформатировано. C>Кстати было это в Visual Basic 6.0 неплохо реализовано, уходишь с текущей строки — она форматируется и ошибки подсвечивает.
В Eclipse, например, можно включить автоматическое форматирование при сохранении. И не только форматирование, но и некоторые другие "подчистки" кода. Я его почти всегда держу включенным.
Здравствуйте, Chrome, Вы писали:
C>И вроде ни у кого не вызывает сомнения, что эти стандарты следует соблюдать. C>Однако средства разработки по прежнему оставляют этот аспект на усмотрение программиста. C>Захотел написать код без отступов — пожалуйте. Захотел в одну строчку — на здоровье. C>То есть вам конечно, всячески помогают делать правильно, не и неправильно делать не запрещают. C>Это плохо, по моему. Во всяком случае в проектах, где больше одного человека.
А что делать, если вам достался в наследство товарный вагон кода, отформатированного не так, как принято в вашей организации (или в организации, разработавшей средства разработки)? Городить огород из разных стилей? Но это кошмар получится. Переформатировать старый код по-новому? Но при этом во-первых вы потеряете возможность сравнивать ваши изменения с оригиналом, а во-вторых, потеряете форматирование комментариев, которое тоже могло как-то использоваться в качестве выразительного средства.
Вот и получается, что невозможно выбрать какой-то единый стиль, а все остальные отменить. Ну и явно преобладающего стиля тоже как-то нет, все пишут по-разному.
C>Так же интересно, обязательные скобочки, выделяющие блоки кода, все эти {}, begin end C> — уже живые мертвецы? Сущесвуют просто по инерции? C>Ведь отступов для достижения той же цели достаточно, и они являются необходимыми в свете вышеизложенных мыслей.
Здравствуйте, Pzz, Вы писали:
Pzz>Но при этом во-первых вы потеряете возможность сравнивать ваши изменения с оригиналом,
Не потеряю. Достаточно перед сравнением переформатировать старую версию на лету.
Pzz>а во-вторых, потеряете форматирование комментариев, которое тоже могло как-то использоваться в качестве выразительного средства.
Сколько ты встречал такого кода?
Да, иногда бывает подобие ASCII Art в коде, но я такое при работе не встречал, только давно, когда читал исходники чего-то манипулирующего битами.
Pzz>Вот и получается, что невозможно выбрать какой-то единый стиль, а все остальные отменить. Ну и явно преобладающего стиля тоже как-то нет, все пишут по-разному.
В нормальных командах используют рекомендации от производителя средства разработки и прогоняют код через всякие стайлкопы.
C>>Ведь отступов для достижения той же цели достаточно, и они являются необходимыми в свете вышеизложенных мыслей.
Pzz>Так сделано в питоне. На мой взгляд — глупость.
И еще — F#, Haskell, Boo
Я тоже раньше так думал. Пробовал ли ты привыкнуть к этому? С моей точки зрения, скобочки — просто привычный костыль. Конечно первое время глаз относится недоверчиво — так как привык проверять отступы по дублирующим их скобочкам. А потом привыкаешь и скобки наоборот начинают раздражать.
Всё-таки в скобочных языках программисты все равно делают отступы, чтобы сразу видеть вложенности в коде, а вот скобочки в отступных языках никто(1) для себя не пишет — хотя могли бы, например, комментариями.
(1) "Никто" употребляется в разговорном смысле "известное мне большинство"
Здравствуйте, no4.
no4>Всё-таки в скобочных языках программисты все равно делают отступы, чтобы сразу видеть вложенности в коде, а вот скобочки в отступных языках никто(1) для себя не пишет — хотя могли бы, например, комментариями.
1. Шансов ошибиться скобочками куда меньше, чем шансов огрести проблем с отступами — скобочек банально меньше.
2. Нет разброда в том что считать отступом и сколько раз.
3. Ни одна софтина не заменяет скобочки на что-то другое (см холивары про табуляцию).
4. Семантика программы не должна определяться невидимыми символами/форматированием.
5. Отступы у скобчатых получаются в нагрузку и не несут смысловой нагрузки (уже написано выше).
Разумеется, любую идею можно довести до абсурда — отступы в маткаде не то чтобы страшнее (ПРЕВЕД ((ЛИСП) !)). Хотя вайтспейс всё равно круче.
Здравствуйте, no4, Вы писали:
no4>Я тоже раньше так думал. Пробовал ли ты привыкнуть к этому? С моей точки зрения, скобочки — просто привычный костыль. Конечно первое время глаз относится недоверчиво — так как привык проверять отступы по дублирующим их скобочкам. А потом привыкаешь и скобки наоборот начинают раздражать.
Очень чревато ошибками. Например при Cut/Paste кода из одного места в другое легко ошибиться в отступах. Забыть внести строчку в цикл или наоборот лишнюю добавить. Скобочки в этом отношении надежнее.
Здравствуйте, Константин Б., Вы писали:
КБ>Здравствуйте, no4, Вы писали:
no4>>Я тоже раньше так думал. Пробовал ли ты привыкнуть к этому? С моей точки зрения, скобочки — просто привычный костыль. Конечно первое время глаз относится недоверчиво — так как привык проверять отступы по дублирующим их скобочкам. А потом привыкаешь и скобки наоборот начинают раздражать.
КБ>Очень чревато ошибками. Например при Cut/Paste кода из одного места в другое легко ошибиться в отступах. Забыть внести строчку в цикл или наоборот лишнюю добавить. Скобочки в этом отношении надежнее.
По-моему как раз использование Cut/Paste чревато ошибками
А в киеве дядька...
Я перечислил грабли связанные с программированием отступами в мейнстриме.
Вы поделились ссылкой на опыты по натаскиванию новичков.
?????
[PROFIT]
Да ещё финальный пассаж "я поражён как правильное форматирование помогает студентам писать программы"... автор явно метит в капитаны
Здравствуйте, no4, Вы писали:
no4>Я тоже раньше так думал. Пробовал ли ты привыкнуть к этому? С моей точки зрения, скобочки — просто привычный костыль. Конечно первое время глаз относится недоверчиво — так как привык проверять отступы по дублирующим их скобочкам. А потом привыкаешь и скобки наоборот начинают раздражать.
Здравствуйте, 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++)
{
// Совсем уехали вправо
}
Ну и психологическая проблема: если я не могу написать так, как считаю нужным в данном конкретном случае, то такую систему в топку.
Здравствуйте, Курилка, Вы писали:
К>Здравствуйте, Константин Б., Вы писали:
КБ>>Здравствуйте, no4, Вы писали:
no4>>>Я тоже раньше так думал. Пробовал ли ты привыкнуть к этому? С моей точки зрения, скобочки — просто привычный костыль. Конечно первое время глаз относится недоверчиво — так как привык проверять отступы по дублирующим их скобочкам. А потом привыкаешь и скобки наоборот начинают раздражать.
КБ>>Очень чревато ошибками. Например при Cut/Paste кода из одного места в другое легко ошибиться в отступах. Забыть внести строчку в цикл или наоборот лишнюю добавить. Скобочки в этом отношении надежнее.
К>По-моему как раз использование Cut/Paste чревато ошибками
Т.е. если вам нужно перенести кусок кода его по новой набиваете? Или вы сразу все пишете правильно?
Здравствуйте, Chrome, Вы писали:
C>Здравствуйте, Clevelus, Вы писали:
C>>В Visual Studio Меню->Правка->Форматировать документ и нет проблем.
C>Вопрос был — зачем позволять программисту нарушать стандартное форматирование?
Представьте, когда серетарь набирает текст в текстовом редакторе — она сразу следует шаблону? Нет! Сначала идет набор текста, исправление ошибок и только потом форматирование.
Откуда редактор знает в какой стадии находится редактирование файла с кодом? Более того, когда в коде ошибки то его в некоторых случаях вообще невозможно правильно отформатировать.
Форматировать или нет ( и как ) определяется политикой в организации. Во многих перед сохранением документа в репозиторий нужно его отформатировать в соответствии с правилами (в студии просто нажать кнопку ).
Более того, форматирование кода, в общем случае, также включает в себя как называть переменные и функции ... и т.д.
Доброго времени суток! Мир Вам! С уважением Clevelus.
Если мой ответ понравился — оцените, ни на что не влияет, но будет приятно.