Аналитик системы вопросов и ответов о программировании Stack Overflow Дэвид Робинсон сопоставил данные об уровне зарплат программистов с данными о предпочитаемой технике форматирования кода и обнаружил, что любители пробелов зарабатывают больше, чем сторонники табуляции.
Большинство программистов для удобочитаемости кода используют форматирование отступами, что позволяет выделить в коде отдельные блоки. При этом одни разработчики создают отступ несколькими пробелами, а другие – табуляцией. Главной проблемой такого подхода является то, что при работе над одним проектом нескольких человек, использующих разные отступы, форматирование сбивается и код становится трудночитаемым.
Дэвид Робертсон воспользовался данными опроса разработчиков за 2017 год, проведенного Stack Overflow. Из 28 657 разработчиков, обозначивших себя профессиональными программистами, 40,7% используют табуляцию, а 41,8% форматируют код с помощью пробелов. Оставшиеся 17,5% ответили, что используют оба метода форматирования.
При этом из 12 426 опрошенных предоставили свои данные о годовой зарплате, что позволило сопоставить данные о доходах с предпочитаемой техникой форматирования кода. Выяснилось, что программисты, использующие пробелы получают в среднем больше, чем любители табуляции. хотя имеют не большой разрыв в зарплате. Те разработчики, которые используют оба метода форматирования, в среднем зарабатывают столько же, сколько и те, кто пользуется только табуляцией.
Помимо общего сопоставления, аналитик также распределил данные по странам. Оказалось, что меньше всего разрыв в зарплате заметен в Европе (Германия), а самый значительный – наблюдается в Индии.
По итогам анализа данных, Робинсон выделил несколько ключевых признаков, связанных с уровнем дохода профессионального программиста: пробелы или табуляция, страна, опыт программирования, сфера работы и язык программирования, уровень образования, участие в проектах с открытым исходным кодом, программирование как хобби и размер компании. Как считает исследователь, в среднем пробелы вместо табуляции связаны с повышенной на 8,6% зарплатой. По подсчетам Робинсона, такая прибавка в зарплате эквивалентна дополнительным 2,4 года программирования, хотя корреляция не обязательно указывает на причинно-следственную связь.
Ранее разработчик из Google Фелипе Хоффа выяснил по итогам анализа более миллиарда файлов из 400 тыс. репозиториев на GitHub, что форматирование кода с помощью пробелов в общем случае используется чаще, чем форматирование с помощью табуляции.
Зарплата больше, потому что затраты времени на форматирование больше - поставить четыре пробела - это четыре раза нажать space, а если tab - то только два раза.
щас выдерну из клавиатуры tab и потребую прибавку к зарплате.
Студент спрашивает профессора:
- Профессор, вы, когда спите, бороду прячете под одеяло или снаружи оставляете?
- Знаете, голубчик, не задумывался...
Через неделю профессор останавливает студента в коридоре:
- Ну ты и сволочь! Неделю заснуть не могу: так не удобно и так тоже не удобно!
Всегда использовал автозамену символа табуляции на 4 пробела в других языках, но 1С в этом плане меня расстроила - она не умеет убирать 4 пробела клавишей backspace в отличие от других IDE... Поэтому по принуждению использую табуляции...
В плане 1С, мне кажется, актуально "как учили", "так принято".
По моему, в Делфе и паскале я юзал пробелы, а как в 1С ушёл, так почти только табуляцией, а так и тем и тем.
Я всегда использовал табуляцию. Тупок.... Пробельшикам анафема и гореть в аду без покаяния.
Всеми разделяется убеждение, что варёные яйца при употреблении их в пищу испокон веков разбивались с тупого конца; но дед нынешнего императора, будучи ребёнком, порезал себе палец за завтраком, разбивая яйцо означенным древним способом. Тогда император, отец ребенка, обнародовал указ, предписывающий всем его подданным под страхом строгого наказания разбивать яйца с острого конца. Этот закон до такой степени озлобил население, что, по словам наших летописей, был причиной шести восстаний, во время которых один император потерял жизнь, а другой — корону.
…Насчитывают до одиннадцати тысяч фанатиков, которые в течение этого времени пошли на казнь, лишь бы не разбивать яйца с острого конца. Были напечатаны сотни огромных томов, посвящённых этой полемике, но книги Тупоконечников давно запрещены, и вся партия лишена законом права занимать государственные должности.
(13) Ну в конце концов во многом благодаря борьбе русских тупоконечников и остроконечников двоеперстников и троеперстников было положено освоение Урала, Сибири. Если помните, у нас те реформы всё-таки не привели к масштабной мясорубке, в отличие от одного европейского островного государства. Ну и царям у нас головы прилюдно не рубили.
а они учитывали, что это может быть эхо старых RADов и прочих сред разработки?
например, начинал в свое время с TP7, так там вроде даже ТАБ не работал, нужно было пробелы ставить
В 1с я считаю только таб! за пробелы руки по выдергивать охото.. а некоторые еще и совсем не ставят ничего...
Встречал все 3 примера и последний к сожалению не так уж и редко как хотелось бы:
Если Истина Тогда
пробел = "я использую проблелы";
пробел_пробел = "это так удобно..";
пробел_пробел_пробел = "читать..";
КонецЕсли;
Если Истина Тогда
Таб = "я использую Таб";
Таб_Таб = "это так удобно..";
Таб_Таб_Таб = "читать!";
КонецЕсли;
Если Истина Тогда
НеФорматирую="я не использую ни Таб ни пробелы";
НеФорматирую_НеФорматирую="это так удобно..";
НеФорматирую_НеФорматирую_НеФорматирую="читать!";
КонецЕсли;
Если Истина Тогда
пробел = "я использую проблелы";
пробел_пробел = "это так удобно..";
пробел_пробел_пробел = "читать..";
КонецЕсли;
Для меня и первый и второй вариант норм читаются. Вот когда мониторы были не 1920х, а 640х.... и у тебя цикл массивом попирает и ничего в ширину не влазит.... то уж лучше пробелы... а с мониками как сейчас и в 1С, то да исключительно табуляция...
Ну, начнём с того, что такого я вообще почти не читал:
Странно, везде где довелось работать, такое табулирование считается признаком хорошего тона, даже в снегопате настраивается по Ctrl+= чтоб знаки присвоения были на одном уровне. Знаю еще что в SublimText такое выравнивание применяется, функция редактора. В исходном коде на различных языках тоже встречал (C#, java, python).
Обычно вот так норма (хотя у Вас и красиво):
Такой вариант очень часто применяется когда небольшие блоки, буквально несколько строчек.
(22) Привет. Я на 7-ке ооочень мало прогил :))) Я тогда сисадминил и "баловался" 1С. Из достижений в 7,7 у меня отчёт, который делался до меня за час, а у меня, после переписи делался за 5 минут. На этом почти всё, не считая нескольких печатных форм.
Странно, везде где довелось работать, такое табулирование считается признаком хорошего тона, даже в снегопате настраивается по Ctrl+= чтоб знаки присвоения были на одном уровне.
Вот что пишет Стив Макконнелл в книге "Совершенный код"
Не выравнивайте правые части выражений присваивания В первом издании этой книги я рекомендовал выравнивать правые части выражений, содержащие присваивания
//Тут у него пример похожий на наш:
Если Истина Тогда
Таб = "я использую Таб";
Таб_Таб = "это так удобно..";
Таб_Таб_Таб = "читать!";
КонецЕсли;
С высоты 10 летнего опыта могу сказать, что, хотя этот стиль может выглядеть привлекательно, он превращается в настоящую головную боль, когда приходится поддерживать выравнивание знаков равенства при изменении имен переменных и прогоне кода через утилиты, заменяющие пробелы знаками табуляции, а знаки табуляции — пробелами. Кроме того, его тяжело сопровождать при перемещении строк между частями программы, в которых применяются разные размеры отступов.
Для обеспечения единообразия с другими принципами отступов, а также учитывая вопросы удобства сопровождения, обращайтесь с группами выражений, содержащими операции присваивания, так же, как вы бы обращались с любыми другими выражениями
//Тут у него пример похожий на наш:
Если Истина Тогда
Таб = "я использую Таб";
Таб_Таб = "это так удобно..";
Таб_Таб_Таб = "читать!";
КонецЕсли;
Т.е. он счтитает, что выглядит красиво, но в сопровождении сложнее.
А по большому счету я бы никого ни заставлял ни поругал бы ни за один из выше написанных вариантов. Главное, чтобы не так:
Если Истина Тогда
Таб = "я использую Таб";
Таб_Таб = "это так удобно..";
Таб_Таб_Таб = "читать!";
КонецЕсли;
//Тут у него пример похожий на наш:
Если Истина Тогда
Таб = "я использую Таб";
Таб_Таб = "это так удобно..";
Таб_Таб_Таб = "читать!";
КонецЕсли;
Скрыть
Если только в этом неудобство, то выравнивание можно автоматизировать. Я уже больше 10 лет назад делал такой выравниватель для 1С на Delphi. И в EDT тоже.
(28) Автоматизация предполагает запуск какой-то внешнего скрипта, который на новой платформе могут рухнуть, запускаются секунду. Плюс в указанной вами ветке форума вычитал справедливый аргумент:
присвоение удобно искать по строке "ИмяРеквизита =", поиск просто по "ИмяРеквизита" найдёт все места использования реквизита, а не случаи его инициализации
Лично я не против обоих вариантов. На текущий момент в платформе нельзя это выравнивание сделать "из под коробки" и нельзя найти по "ИмяРеквизита =" все совпадения без учета табов и пробелов (например "ИмяРеквизита <тут 10 пробелов, которые инфостарт обрезал> ="). Поэтому сейчас я предпочту вариант без выравнивания!
(29) поиск просто по "ИмяРеквизита" найдёт все места использования реквизита, а не случаи его инициализации
... и заодно покажет, где "ИмяРеквизита" передаётся в процедуры/функции, в которых ИмяРеквизита может быть переприсвоено.
Никакого скрипта. Выделение - копирование в буфер - выравнивание - вставка из буфера. Абсолютно безболезненно.
Если никакого скрипта (т.е. ручное копирование во внешнюю программу, потом ручная вставка) то это это потерянное время программиста. В указанной вами ссылке всё делается, как я понял через скрипты, которые запускаются секунду по нажатию Ctrl+Alt+F.
А в Вашем посте новая платформа - это что: EDT или просто новая версия V8?
V8. Я просто предположил, что любое внешнее вмешательство в работу конфигуратора в любой момент может быть заблокировано разработчиками 1С как очередная "защита от опасных действий".
Если даже вы мне докажете, что будет работать на любом релизе платформы, в любом случае (скрипты и не скрипты) - время потерянно и не решён вопрос поиска по "ИмяРеквизита =".
Но опять таки повторюсь уже в 3 раз за 3 сообщения: я не против обоих вариантов! Вот только для варианта с выравниванием знака "=" не хватает встроенных механизмов платформы. Поэтому я считаю пока есть смысл не придерживаться этого варианта.
поиск просто по "ИмяРеквизита" найдёт все места использования реквизита, а не случаи его инициализации
... и заодно покажет, где "ИмяРеквизита" передаётся в процедуры/функции, в которых ИмяРеквизита может быть переприсвоено.
... а может вообще ни разу не найтись, т.к. "ИмяРеквизита" - это реквизит формы и в какую-то процедуру общего модуля передаётся форма и там уже меняется "ИмяРеквизита"
Если вы прочитаете первоисточник, откуда я взял эту мысль, вы увидите, что человеку уже подобное замечание делали, на что он ответил:
кажется, это не аргумент, чтобы ещё больше усложнять себе жизнь доп. выравниваниями ) в большинстве случаев этот прием работает и позволяет быстро локализовать нужное место в коде.
Опять таки Макконнелл пишет:
дебаты вокруг форматирования программ часто больше похожи на религиозные войны, а не на философские диспуты
Поэтому я предлагаю закончить "войну", тем более я с ваш способ форматирования не отвергал. Просто я считаю, что с текущими возможностями платформы не рационально тратить на него время.
Если даже вы мне докажете, что будет работать на любом релизе платформы, в любом случае (скрипты и не скрипты) - время потерянно и не решён вопрос поиска по "ИмяРеквизита =".
Тут и доказывать не надо, копипаст есть на любом релизе. Что касается поиска, то я такой цели и не ставил. Это просто игрушка, Снегопату это ни разу не конкурент.
Просто я считаю, что с текущими возможностями платформы не рационально тратить на него время.
С этим полностью согласен, приоритет у этой возможности стопиццотшышнадцатый.
Было бы странно, если бы любители венгерской нотации, кастомизации воркфрэймов и прочих медитаций зарабатывали меньше, чем салаги, только осваивающие среды в дефолтном режиме. Мелковат аналитик пошел...