Задержка пробелов является достаточной проблемой для программистов, так как редакторы, такие как Emacs, имеют специальные функции, которые выделяют его или избавляются от него автоматически, и многие стандарты кодирования требуют, чтобы вы исключили все его экземпляры. Я не совсем уверен, почему, хотя. Я могу подумать об одной практической причине избегания ненужных пробелов, и это то, что если люди не будут осторожны, избегая этого, то они могут изменить его между коммитами, и тогда мы получим различия, кажущиеся неизменными, просто потому, что кто-то удалил или добавил пробел.
Это уже звучит как довольно веская причина, чтобы избежать этого, но я хочу посмотреть, есть ли что-то большее, чем это. Итак, почему замыкающие пробелы такие большие дела?
источник
Ответы:
Причины, по которым это важно для меня:
Когда я нажимаю клавишу «Конец», я ожидаю, что курсор переместится в конец строки (в зависимости от того, какой редактор я использую и как он настроен), и я ожидаю, что смогу начать печатать прямо сейчас. Если курсор попадает туда, и мне нужно удалить 3 или 4 символа, это раздражает. Особенно, если это противоречит всем файлам.
Когда у меня есть строковые литералы, которые занимают несколько строк, конечный пробел может заставить выходную строку выглядеть неправильно, когда она используется.
В то время как не строго программирование, пробел может серьезно испортить ввод данных, если в файле есть конечный / ведущий, который будет проанализирован и использован как ввод чего-то другого. Это случается чаще всего, когда чистый, сгенерированный входной файл загрязняется тем, кто его редактирует в Excel или чем-то еще, а затем может появиться конечный пробел (и другие проблемы форматирования).
источник
Я действительно ненавижу тянущиеся пробелы, но точная причина немного расплывчата.
Я предполагаю, что причина этого чувства не в программировании, а в области настольных издательских систем. Вы когда-нибудь получали документ, напечатанный кем-то другим, который нужно было напечатать в публикации? Во всех современных публикациях, особенно при использовании столбцов, принято, чтобы предложения следовали друг за другом последовательно в пределах одного абзаца, а не начинали новую строку для каждого предложения. Что ж, когда есть пробелы в конце, требуется намного больше усилий, чтобы сделать это правильно (много операций поиска и замены, которые устраняют двойные пробелы и т. Д.).
Я знаю, что другие причины (в программировании) - не очень веские, но они настолько беспокоят мою подсознательную психику, что заставляют меня ее устранить:
Да, да, я знаю! Я знаю, это нежелательные причины. Я не перфекционист, но ... ну, может быть, я?
Последняя причина, о которой я могу подумать, - это непоследовательное движение курсора. Такое ощущение, что курсор висит в воздухе в конце линии, каждый шаг вправо может привести к его падению или зависанию в неизвестной степени, он просто чувствует себя неустойчивым (как те невидимые или исчезающие блоки, которые Super Марио прыгал).
Вероятно, мне может быть поставлен диагноз trailspacefobia?
источник
Многие из этих ответов почти касаются причины, по которой это плохо для меня, но в основном: это «ломает» текстовые редакторы. Мой опыт с Vim.
Vim спроектирован так, что общие действия отображаются на буквы настолько чисто, что вам даже не нужно думать о том, какую букву или комбинацию клавиш нажимать. Различные горячие клавиши позволяют курсору перемещаться по тексту так быстро, что требуется всего пара нажатий клавиш, чтобы переместить его туда, куда вы хотите. Даже такие вещи, как свертывание блоков кода, быстрая, так как вы можете нажать END или $, чтобы перейти к концу строки, где курсор должен перекрываться {или} или (или) или что-то в этом роде - нет необходимости прерывать поток мыслей для получить представление на экране.
Но затем появляются пробелы, и движения курсора больше не предсказуемы. Ваш процесс ввода прерывается, потому что то, что вы не видите, влияет на то, куда движется курсор, поэтому вы должны прервать ход мыслей, чтобы отправить его туда, где он должен быть.
Когда-нибудь замечали, как раздражаются люди, когда они действительно сосредоточены на задаче, и кто-то их прерывает? Да, найти конечный пробел, когда его меньше всего ожидают, точно так же.
Как замечание, я также заметил, что люди, которые не заботятся о пробелах, используют мышь для навигации и, как правило, из-за этого медленнее печатают ...
источник
%s/ *$//
Удивительно, но самый очевидный ответ отсутствует: конечные пробелы могут и будут приводить к трудностям поиска ошибок.
Наиболее очевидная ситуация - многострочные строки. Python, JavaScript и Bash - несколько примеров языков, на которые может повлиять это:
производит:
что несколько загадочно и трудно решить, если редактор не настроен для отображения пробельных символов.
Хотя выделение синтаксиса может помочь избежать таких случаев, еще проще избежать проблемы, не пропуская пробелы в конце строк. Вот почему некоторые средства проверки стиля будут выдавать предупреждение при обнаружении пробелов, а некоторые редакторы будут обрезать их автоматически.
Иллюстрация: выделение синтаксиса может помочь избежать запаздывания пробелов в ситуациях, когда это может привести к ошибкам, но не полагайтесь только на это.
Другой контекст, кратко упомянутый в предыдущем ответе , это данные, хранящиеся в файлах.
Например, файлы CSV, содержащие конечные пробелы, могут вызывать несогласованность данных, что также очень трудно обнаружить: совместимые со стандартами синтаксические анализаторы будут обрезать пробелы (стандарт указывает, что начальные или конечные пробелы не имеют значения, если они не разделены двойными кавычками), но некоторые синтаксические анализаторы могут плохо себя вести и оставить пробел как часть значения.
Другие пользовательские форматы могут, в частности, учитывать, что пробел является частью значения, что приводит к непротиворечивым, но все еще трудным для отладки ситуациям.
источник
Недавно я провел день в поисках ошибки, которая оказалась неожиданным конечным пробелом в данных.
источник
Когда я выбираю исходный код программы для того, чтобы скопировать и вставить его (или удалить), я нахожу это немного раздражающим, когда вижу все нерегулярные лишние пробелы в конце строк: так как мне приходится читать код, пока я его выбираю замыкающий пробел - это ненужный шум. Пример (точки обозначают пробел):
Этот пример является искусственным, но я видел много кода, который выглядит следующим образом.
источник
Помимо очевидной проблемы, что это нарушает разбор в некоторых случаях? Как заметил другой автор, это может привести к тонким и трудным для отслеживания ошибкам. Пробелы не всегда незначительны. В некоторых случаях конечные пробелы могут значительно изменить смысл строки кода или данных.
В большинстве случаев существуют пробелы для форматирования кода для читателей. Конечный пробел может указывать на несколько вещей, включая:
Два из них могут привести к неправильному функционированию, а другой может затруднить понимание кода.
источник
Существуют языки программирования, чувствительные к пробелам в конце строки. Например, скрипт TCL выдаст ошибку, если в конце строки есть пробел.
источник