Как следовать рекомендациям по ограничению в 80 символов при написании исходного кода?

15

Итак, как вы знаете, есть лучшая практика высказывания

Ограничить строку исходного кода в 80 символов.

Вот 2 ссылки:

Почему 80 символов являются «стандартным» пределом для ширины кода?

Ограничение в 80 символов по-прежнему актуально во времена широкоэкранных мониторов?

И я уверен, что вы сможете получить больше, если будете искать эту лучшую практику.

Но я нахожу это чрезвычайно трудным, вот пример:

public class MyClass {

    public void myMethod() {

        final Map<String, List<MyInterfaceHere>> myReference

Таким образом, вы делаете отступ для каждого класса, каждого метода и каждого оператора.

И я уже нахожусь в колонке 60 к концу последнего 'e', ​​который я имею в 'myReference'.

У меня осталось 20 пробелов, я действительно вызываю конструктор и присваиваю объект моей ссылке.

Я имею в виду, действительно ли это выглядит лучше:

public class MyClass {

    public void myMethod() {

        final Map<String, List<MyInterfaceHere>> myReference 
                = new HashMap<String, List<MyInterfaceHere>>(); 

Какова лучшая практика здесь?

Корай Тугай
источник
6
Мы сделаем это 140. 80, возможно, было бы хорошо во времена небольших экранов и небольших принтеров
tgkprog
7
Лучшая практика, если вы не в версиях End-Of-Life, таких как 5/6 , вероятно final Map<String, List<MyInterfaceHere>> myReference = new HashMap<>();(80 символов с отступом, как в вашем примере)
комнат
4
Мета-лучшая практика - не слепо использовать лучшие практики двадцатилетней давности. Когда 17-дюймовая электронно-лучевая трубка имела разрешение 1280x1024, более низкие пределы символов имели смысл, но не сегодня.
TMN
2
Обратите внимание, что одним из преимуществ использования узких столбцов текста, а не растягивания по всему доступному пространству на дисплее, является возможность легко просматривать несколько частей кода рядом друг с другом. 80 chars * 7 pixels/char = 560 pixels per file, Это позволяет удобно разместить два файла (1120 пикселей) на экране шириной 1280 пикселей или три (1680 пикселей) на экране размером 1920 пикселей, в обоих случаях оставляя дополнительное пространство для номеров строк, полос прокрутки, сигил и других элементов пользовательского интерфейса. , Или даже немного более длинная линия.
8bittree
3
@ 8bittree Я могу просматривать код рядом - на двух мониторах. Разрабатывать на одном мониторе - все равно что водить машину с одним колесом.

Ответы:

18

Лучшая практика должна заключаться в «ограничении длины линии, чтобы вы, все ваши коллеги и все используемые вами инструменты были довольны ею», плюс некоторый здравый смысл. 80 символов кажутся очень маленькими и имеют тенденцию уменьшать читабельность. Однажды меня полностью обманула такая строчка:

/* Very long comment to the end of the line */ realCode ();

где вызов функции не был виден на экране (и при этом он не был виден на экране любого коллеги) без указания.

Я установил в своем редакторе поле для отображения в 100 столбцов и перевернул код на дисплее, чтобы при редактировании все всегда было видно, а чрезмерно длинные строки обычно разбиваются вручную на две, а иногда и более строки. Молитесь, чтобы ваш редактор хорошо форматировал разделенные операторы, если он выполняет автоматическое форматирование. Используйте стиль кодирования, который не приводит к глубоко вложенным операторам. (Некоторые люди создают гнездо из двадцати операторов if, за которым следует хвост из двадцати других, что приводит к углублению в 200 символов, и никто не может понять, что еще принадлежит, если, если).

В вашем конкретном случае Swift изобрел способ избежать этого: переменной «let» (которая примерно такая же, как «final» в других языках) необходимо присвоить значение ровно один раз перед ее использованием, но не обязательно в объявлении Таким образом, вы можете разделить свою неприятную линию на два независимых утверждения.

PS. Я встречал строки в реальном написанном человеком коде длиной более 400 символов. Другими словами, вам придется прокручивать целую вечность, чтобы прочитать остальную часть строки, даже на 24-дюймовом мониторе. Я не был удивлен :-(

gnasher729
источник
10
Похоже, /* Very long comment to the end of the line */ realCode ();должно уже нарушать некоторые другие правила стиля.
Роберт Харви
3
/* Very long comment to the end of the line */ realCode ();это одна из причин, почему в среде IDE есть средства форматирования кода, которые автоматически помещают комментарий и код в отдельные строки.
2
Он пришел из того же источника, который печально написал «if (условие) \ n \ tgoto exit; \ n \ tgoto exit;». Всего несколькими годами ранее.
gnasher729
Я обнаружил, что установка максимальной длины строки в 80 символов заставляет меня думать с точки зрения функций и классов и ОО, вместо того, чтобы писать длинную строку текста, чтобы сделать все в одном кадре. Это заставляет меня писать программы, которые другие могут легко подготовить. Во-вторых, большинство программистов (по моему опыту), которые я видел в SV, работают на своих ноутбуках, и у них нет больших экранов, доступных для них все время. Таким образом, написание текста в пределах 80 символов помогает всем. В-третьих, вы можете разделить большой экран монитора на несколько панелей и одновременно просматривать код.
alpha_989
3

Да, это выглядит лучше. Вот почему "Не используйте слишком длинные строки!" Максим очень сильный.

Что касается лучшей практики, я никогда не использую эти ужасно длинные выражения конструктора. Я бы всегда использовал

public class MyClass {

    public void myMethod() {

        final Map<String, List<MyInterfaceHere>> yReference = newMap();

для некоторой соответственно определенной, статически импортированной стоимости newMap(). Я считаю серьезным недостатком Java то, что у него нет встроенной версии.

Килиан Фот
источник
1

Цель не в том, чтобы «сохранить строки до 80 символов». Цель состоит в том, чтобы «сделать ваш код легко читаемым и понятным». Искусственный лимит в 80 символов помогает в удобочитаемости, но это не жесткое и быстрое правило, если ваша команда не решит, что так оно и есть.

Вы спрашивали о передовой практике, и передовая практика заключается в том, чтобы «сделать код максимально читабельным». Если для этого требуется более 80 символов, пусть будет так.

Брайан Оукли
источник
1

Не бойтесь нажать клавишу возврата. Большинство современных языков (включая Java, как в вашем примере) вполне устраивают операторы, состоящие из нескольких строк.

Просто подумайте о том, где вы ломаете строки, и вы можете получить что-то, что вписывается в ограничение 80 столбцов и все еще остается идеально читаемым. Официальные соглашения о кодировании Java даже указывают предпочтительные места для разрыва строк.

Если все сделано правильно, аккуратно разбитая строка намного удобнее для чтения, чем та, которая исчезает за боковой стенкой экрана.

Саймон Б
источник
1

Если вы используете длину строки / ширину кода, используйте инструмент.

  • Resharper
  • Визуальный ассист
  • и т.п.

Разработчики решают, что является разумной длиной (80, 120, 200 и т. Д.), Установите эту опцию в инструменте.

После этого просто напишите код, как обычно, безотносительно к ширине или длине строки. Как только он будет функционален и закончен, щелкните правой кнопкой мыши и выберите « Очистить код» или аналогичный параметр. Инструмент отформатирует код, как вы сказали, и разбивает длинные строки, как указано.

Бессмысленно и легко, и каждый исходный файл будет отформатирован одинаково.

Джон Рейнор
источник
0

Предел 80 символов может быть слишком коротким в наши дни, но это помогает. Я бы согласился со всеми этими мнениями, что код должен быть также хорошо отформатирован. например, код

/ * Очень длинный комментарий до конца строки * / realCode ();

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

Соблюдать лимит в 80 часов или нет - это индивидуальный выбор, но если вещи видны в одном кадре, это всегда даст удобный обзор и ощущение программистам и другим рецензентам.

user220681
источник