Создатель Linux высказался за увеличение длины строк кода

Создатель Linux высказался за увеличение длины строк кода

05.06.2020     

Линус Торвальдс заявил, что пора пересмотреть правила хорошего тона в плане написания кода. Золотым стандартом для кода ядра Linux считаются 80-символьные строки. Но Торвальдс предлагает увеличить значение до 100 символов.

Времена меняются

В старых терминалах, которые использовались для написания и отладки кода ядра Linux, часто были установлены ограничения 80х25: 80 символов в строке, 25 строк в окне. Современные терминалы вмещают гораздо больше символов, да и разрешение мониторов постоянно растет. 

Все это сподвигло Торвальдса внести изменения в скрипт проверки новых патчей ядра. Он перестал отклонять код со строками длиннее 80 символов.

Торвальдс подчеркнул: оптимальная длина строки сейчас – 100 символов. Но она может быть и больше, если в этом действительно есть необходимость. Разработчик также добавил, что широкие мониторы специально предназначены для просмотра большого количества файлов одновременно.

О пользе длинных строк

Торвальдс подчеркнул: если продолжать переносить строки, стремясь к соблюдению  «золотого» 80-символьного стандарта, будет очень тяжело работать с кодом и с командами Linux. И вообще: длинные строки кода – не всегда зло. Гораздо хуже частые разрывы таких строк – именно они ежедневно вызывают проблемы. К примеру, если в Linux вы используете команду grep для поиска внутри файлов, то результат ее работы может сбить вас с толку. Очень сложно будет разобраться в обрывках строк кода, которые появляются из-за многочисленных переносов. 

У самого создателя Linux терминалы настроены на показ 100 символов в строке и 50 строк в окне. Параметры основного терминала – 142х76. На мониторе помещается шесть терминалов в три колонки и остается место еще для одного терминала, который на 20% уже остальных. Это обеспечивает возможность комфортной работы с большими массивами кода. 

Торвальдс также рассказал, что обычно использует широкие вкладки при редактировании кода. Так проще делать отступы и понимать структуру кода, видеть цельные функции и блоки. В узких же вкладках сложно считать пробелы и переходить с уровня на уровень. 

Разработчик подчеркнул: люди с ограниченными ресурсами не должны делать всю систему неудобной. И это касается не только размеров окна терминала: так, не стоит жаловаться, что ядро компилируется 10 часов, если вы разрабатываете его на Raspberry PI с 4 ГБ оперативной памяти.

Имена имеют значение

В своем письме Торвальдс коснулся и других вопросов разработки, в частности, имен переменных. По его словам, если вы используете какую-нибудь переменную i в качестве анонимного счетчика внутри цикла, это нормально. Но не стоит ставить краткость во главу угла, выбирая имена для всех переменных.

Торвальдс считает, что называть переменные именами в пределах 10-15 символов совершенно нормально. Нужно, чтобы имя было понятным. Использовать бесконечные сокращения и заставлять коллег догадываться, что вы имели в виду – сомнительный путь.



Источник: https://infostart.ru/journal/news/tekhnologii/sozdatel-linux-vyskazalsya-za-uvelichenie-dliny-strok-koda_1247138/
Автор:
Ксения Шестакова Обозреватель


Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. Bassgood 1024 05.06.20 17:02 Сейчас в теме
Торвальдс считает, что называть переменные именами в пределах 10-15 символов совершенно нормально. Нужно, чтобы имя было понятным.

Интересно а как Торвальдс отнесся бы к вот такому имени объекта "DataCompositionResultSpreadsheetDocumentOutputProcessor"? ;)
Drivingblind; portwein; TreeDogNight; maksa2005; wowik; rusmil; +6 Ответить
2. PerlAmutor 101 05.06.20 18:31 Сейчас в теме
(1) Его продукт - его правила. У 1С свои стандарты, свои правила - https://its.1c.ru/db/v8std/content/456/hdoc

120 символов в строку - норма. Линусу совсем немного осталось до принятия неизбежного.

Кстати давно заметил, что разработчики Java тоже обожают длиннющие названия классов.
5. CheBurator 3421 05.06.20 23:27 Сейчас в теме
(2)
Кстати давно заметил, что разработчики Java тоже обожают длиннющие названия классов.

потому что они нихрена не поймут в своих простынях.
должно быть как в 1С - открыл экран, глянул мельком по одним наименованиям переменных функцйи-процедур уже понятно что и зачем...
а не исследовать тонны двухсимвольных переменных
Hatson; portwein; TreeDogNight; +3 Ответить
13. awk 714 07.06.20 08:34 Сейчас в теме
(5)Что-то мне кажется, что на яве вы не пишете. По вашему посту вы скорее пишете на клюшках или плюсах.
17. Darklight 22 08.06.20 13:21 Сейчас в теме
(2) Да 120 символов в строке - это хорошая норма. Особенно если использовать ультраширокоформатные мониторы - даже на боковую панель места останется. И даже 120 символов - не предел (если это необходимо, а не просто приступ глупости и самомнения) - строки такие возникают не часто (в основном из-за длинных типов) - и в этих случаях очень спасает продвинутая мышка с отдельной боковой прокруткой!
Главное, чтобы главная суть кода была слева, а не справа, а вот, типы - это как раз всторостепенная информация и их правильно размещать справа (а описание определений и логики - слева) , или вообще применять выведение типов и не указывать вовсе. Вот тут Си подобные языки имеют недостаток - у них типы обязаны размещаться слева - и когда они длинные - код активно сезжает вправо даже без учета серий отступов - но это уже недостатки дизайна языка!

А насчёт длинных имён - тут не стоит увлекаться - если длинное имя типа (вернее полный путь к типу, со всеми вложенными пространствами имён и типами-классами-владельцами) это просто неизбежность (и есть способы сокращения обрезания к длинным путям), то длинные имена переменных - это не меньшее зло, чем короткие. Но на практике с длинными переменным сталкиваешься очень редко (с очень длинными - вообще не сталкивался); и если придерживаться правила не включать составные части типа в имя переменной - то длинные имена и не возникают.

А в остальных случаях длинные имена переменных - это скорее просто проблема дизайна типов и функций - слишком универсальные комплексные типы порождают сложные имена для своих переменных, призванные пояснить эту универсальность. Сюда же можно отнести и аналогичную проблему функций, содержащих эти переменные - слишком комплексные функции, обрабатывают слишком разнородную информацию - от того и нужно поддерживать содержательные имена для этой информации. Более короткие функции - уже сами по себе (в т.ч. в своём имени и полном пути расположения) сосредоточены на узкой типизации функциональности - и им не нужны длинные имена переменным - т.к. внутри и так ясно что происходит и что обрабатывается!
4. starik-2005 2173 05.06.20 21:44 Сейчас в теме
(1) имя переменной и имя класса - вещи немного разные. Писать что-то типа:
myDataCompositionResultSpreadsheetDocumentOutputProcessor = new DataCompositionResultSpreadsheetDocumentOutputProcessor()
ИМХО не очень.
Bassgood; terrorion; +2 Ответить
6. CheBurator 3421 05.06.20 23:28 Сейчас в теме
(4)
myDataCompositionResultSpreadsheetDocumentOutputProcessor = new DataCompositionResultSpreadsheetDocumentOutputProcessor()


myDCRSDOP = new DCRSDOP() - намного лучше!
14. awk 714 07.06.20 08:38 Сейчас в теме
(6)
Код
processor = new DataCompositionResultSpreadsheetDocumentOutputProcessor()
Показать полностью

Ваш код, не в IDE, набор букв.
user774630; starik-2005; +2 Ответить
18. Darklight 22 08.06.20 14:10 Сейчас в теме
(6)ПроцессорВывода = ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент();
Что Вы тут паритесь, обычной такой короткой записи вполне достаточно - судя из контекста. Не надо называть переменную именем типа - это само по себе - дурной тон.
В контексте существования имени этой переменной такого короткого имени вполне достаточно (учитывая что рядом могут другие процессоры... в переменных).

А вот имя типа тут действительно - слишком длинное - оно могло бы быть допустиммым во внутреннем (скрытом) алгоритме - но не во внешнем API
Тут архитектурно просто сама логика вывода результата компоновки должна была быть иной
Должен был быть один процессор вывода типа "ПроцессорВывода" в пространстве имён "СистемаКомпоновкиДанных.ПроцессорыОбработкиДанных", причём он вполне себе может быть статическми - тут нет смысла создавать экземпляр объекта данного типа)

Использовать (СистемаКомпоновкиДанных, СистемаКомпоновкиДанных.ПроцессорыОбработкиДанных)
{

       //Предшествующий код получения результата компоновки

       ПроцессорВывода.Вывести(РезультатКомпоновки, ТабличныйДокументРезультат);

}



Причём "ПроцессорВывода" тут общий класс (причём ещё воpможно примеряющий классы-расширения(хелперы) для расширения своего внешнего API), а вот функция "Вывести" возможно имеет перегрузки (ну или ветвление внутри) - где нужная логика реализации вывода определяется исходно переданными типами объектов- аргументов).
Вот когда нужная логика выбрана - вот тогда уже создаётся конкретный экземпляр процессора вывода - осуществляет вывод - и там имя типа такого процессора уже может иметь произвольную длину - это всё равно будет скрыто для внешнего программиста. А для внутреннего и по контексту этой реализации всё будет понятно.

Просто 1С ещё не доросла до уровня программирования конца XX века :-(

А можно было бы ещё короче в ещё более сишном виде

ТабличныйДокументРезультат << РезультатКомпоновки;


здесь выбором нужного процессора будет управлять класс объекта "РезультатКомпоновки", зачем этим заниматься программисту - вообще не ясно - а если нужно можно и так

ТабличныйДокументРезультат << ПроцессораВыводаВТабличныйДокумент(РезультатКомпоновки); 


Ту идёт приведение типа "СистемаКомпоновкиДанных.РезультатКомпоновки" в тип "СистемаКомпоновкиДанных.ПроцессорыОбработкиДанных.ПроцессорВывода", приводящий просто к созданию экземпляра процессора вывода и его инициализацией результатом компоновки; и последующее направление вывода в поток табличного документа - приёмника - путём вызова соотвествующего перегруженного оператора напраления в поток из пространства "СистемаКомпоновкиДанных.ПроцессорыОбработкиДанных"


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

Использовать (Новый СистемаКомпоновкиДанных.ПроцессорыОбработкиДанных.ПроцессорВыводаВТабличныйДокумент())
{
      УстановитьИсточник(РезультатКомпоновки);


     //Какой-то ещё код

      Вывести(ТабличныйДокументРезультат );

}
Показать


И у меня опять нет длинных имён переменных - и всё понятно над чем идёт работат даже с длинным именем типа

И это возможно почти во всех современных императивных языках программирования.....



З.Ы.
Ну а вообще - длинные имена некоторых типов в 1С это следствие отсутствия иерархии пространств имён - вообще можно сказать не пространств имён - тем более нет их встроенной библиотеки - всё в одной куче - в 1С 7 - это было ещё приемлемо - но в 1С 8 даже встроенная библиотека выросла уже до очень крупных размеров (не говоря уже о том, что творится в таких конфигурациях как ERP - где тоже было бы неплохо более детально разбить код и типы по отдельным иерархическим подгруппам). И вот всё это содержимое необходимо размещать в едином пространстве имён - чтобы имена не пресекались и оставались понятными - вот они и растут в длину...
3. nvv1970 05.06.20 20:25 Сейчас в теме
7. DitriX 1810 06.06.20 00:05 Сейчас в теме
все зависит от окружения, если у вас все разрабы сидят за ноутами, то да 100-120 норм, у нас все сидят за большими мониторами и мы ставим лимит в 150, и все отлично, главное чтобы удобно было работать всем участникам процесса. ИМХО
8. milanse 35 06.06.20 01:14 Сейчас в теме
(7) у нас тоже все сидели за мониторами, а теперь раз , и бук 15' вместо 27 монитора и кухонный стол вместо удобного офисного стола и кресла )
11. ipoloskov 120 06.06.20 12:52 Сейчас в теме
(8) я офисный монитор притащил домой
12. milanse 35 06.06.20 12:56 Сейчас в теме
(11) полноценного рабочего места нет, некуда ставить.
9. PerlAmutor 101 06.06.20 06:27 Сейчас в теме
А вообще заголовок провокационный получился на главной странице =)
Прикрепленные файлы:
user774630; DoctorRoza; ab_initio; Serega-artem; maksa2005; starik-2005; awk; TreeDogNight; ipoloskov; Senator_I; +10 Ответить
10. Senator_I 13 06.06.20 11:41 Сейчас в теме
(9) Тоже угорнул, дескать, некоторая недосказанность осталась. )))
15. portwein 08.06.20 07:12 Сейчас в теме
(13)
Что-то мне кажется, что на яве вы не пишете

Получается что и создатели Spring-а на Java не пишут - там если имя класса меньше 20 символов, то "можно условно считать это браком")
16. awk 714 08.06.20 08:21 Сейчас в теме
(15)
Получается что и создатели Spring-а на Java не пишут - там если имя класса меньше 20 символов, то "можно условно считать это браком")


Сами придумали и сами опровергли. Я такого не писал. Это называется - софизм.
Оставьте свое сообщение

См. также

Ученые выяснили, как работает мозг программистов при работе с кодом

Новость Наука

Исследовательская группа Хемницкого технологического университета в Германии впервые проанализировала, как работает мозг человека при работе над программным кодом.  

03.07.2020    728    SKravchenko    18       

Apple разрешила разработчикам оспаривать нарушение правил App Store 

Новость Мобильные приложения Новости компаний

Apple пересмотрит процесс взаимодействия с разработчиками, нарушившими правила App Store. Авторы приложений смогут обжаловать решение компании и загружать обновления в магазин, пока идет спор. 

30.06.2020    397    VKuser24342747    0       

Ползет вперёд: Python обогнал Java в рейтинге языков программирования

Новость Языки программирования

JetBrains, крупный разработчик сред для создания кода, представил ежегодный отчет о популярных языках программирования. В рейтинге Developer Ecosystem Survey 2020 язык Python впервые обогнал Java. 

26.06.2020    756    user1015646    3       

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

Новость Инновации Языки программирования

Ученые из Высшей технической школы Цюриха (ETH Zurich) разработали язык программирования, который можно использовать для квантовых компьютеров так же легко, надежно и безошибочно, как классические. 

26.06.2020    777    SKravchenko    0       

ABBYY опубликовала исходный код своей библиотеки машинного обучения

Новость Infostart Software Partners Маркет Новости компаний

Компания ABBYY выложила на GitHub исходники своей нейросети, используемой для распознания текста. Программный код открыт под свободной лицензией Apache 2.0.

23.06.2020    1397    VKuser24342747    2       

Лучше поздно… Роскомнадзор прекращает блокировку Telegram

Новость Мессенджеры Роскомнадзор

Новость об отмене блокировки мессенджера появилась на официальном сайте ведомства.

22.06.2020    1399    Senator_I    18       

SpaceX использовал Linux и C, для вывода астронавтов на орбиту

Новость

Ракета Илона Маска Falcon 9, с помощью которой корабль Crew Dragon доставил астронавтов НАСА на Международную космическую станцию, работает на жидком кислороде, ракетном керосине, Linux и C/C++.

19.06.2020    982    SKravchenko    3       

Google избавляется от «расизма» в коде Chrome

Новость Новости компаний

Команда Google Chrome исключает из кода термины «черный список» и «белый список», чтобы сделать их более инклюзивными.

18.06.2020    862    SKravchenko    15       

Представлено ядро Linux 5.7: что нового

Новость Linux

В релиз включили обновленную реализацию файловой системы exFAT, переработанные средства аутентификации и инструменты для создания UDP-туннелей, а также сняли ограничение на длину строки кода в 80 символов.

18.06.2020    749    user1015646    0       

Разработчики получили доступ к созданию навыков для «Маруси»

Новость Новости компаний

Mail.ru Group предоставила возможность сторонним разработчикам создавать собственные голосовые команды для виртуального помощника «Маруся».

17.06.2020    843    VKuser24342747    1       

Microsoft представила бесплатные инструменты для создания ботов

Новость Новости компаний

Компания Microsoft обновила инструменты для создания ботов: Virtual Assistant Accelerator и Bot Framework Composer.

16.06.2020    965    user1015646    0       

Сайт Stack Overflow назвал «самые страшные» и «самые любимые» языки программирования

Новость Языки программирования

2020 год показал, что Rust – «самый любимый», Python – «самый востребованный», а Perl, Scala и Go – «самые высокооплачиваемые» языки программирования.

15.06.2020    983    SKravchenko    3       

Разработчики «Эльбруса» выложили в открытый доступ систему команд процессора

Новость Микроэлектроника

МЦСТ, создающая отечественные «Эльбрус», предоставила всем желающим доступ к набору микропроцессорных команд. Документация распространяется по открытой лицензии. 

08.06.2020    996    VKuser24342747    4       

«Ростех» внедрит в вузах России учебного промышленного робота с исходниками на GitHub

Новость GitHub Робототехника

Госкорпорация «Ростех» создала компактного робота для обучения студентов вузов и колледжей. Исходный код для управления устройством выложен на GitHub, учебные заведения могут дорабатывать его под свои нужды. 

05.06.2020    1488    VKuser24342747    1       

Microsoft призвала пользоваться PowerShell вместо CMD

Новость Infostart Software Partners Маркет Новости компаний

Microsoft порекомендовала пользоваться инструментом PowerShell вместо классического интерпретатора CMD (cmd.exe). Разработчики не будут заниматься доработкой CMD, но оставят его в системе для обеспечения совместимости. 

04.06.2020    2378    user1015646    39       

Из реестра российского ПО могут удалить ОС на ядре Linux

Новость Linux Минкомсвязь

Правила, которыми руководствуется Минкомсвязь, запрещают добавлять в реестр ПО с компонентами, которые распространяются по свободным лицензиям GPL и MPL.

02.06.2020    1243    user1015646    10       

Опубликован релиз платформы Electron 9.0.0 для создания приложений на базе движка Chromium

Новость Linux

Создатели обновления повысили эффективность обработчика событий окна в Linux, улучшили просмотрщик PDF и многое другое.

01.06.2020    1197    SKravchenko    0       

Microsoft планирует объединить UWP и Win32-приложения при помощи проекта Reunion

Новость Новости компаний

Reunion призван объединить платформу разработчиков Windows, которая в настоящее время разбита между Win32 и универсальной платформой Windows (UWP).

29.05.2020    1156    SKravchenko    0       

«Яндекс» запустил бесплатную облачную платформу для разработки нейросетей

Новость Искусственный интеллект Облачные технологии

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

29.05.2020    1528    VKuser24342747    1       

В Беларуси заработал сервис видеоконференций на основе российской облачной платформы

Новость Облачные технологии Стартапы

Сервис видеоконференцсвязи на базе российской облачной платформы IVA MCU запустили в Беларуси. Услуги предоставляет республиканский провайдер облачных услуг beCloud. 

28.05.2020    965    user1015646    0       

Microsoft открыла исходники для 37-летнего языка GW-BASIC

Новость Новости компаний Языки программирования

Microsoft представила исходный код интерпретатора языка программирования GW-BASIC. 37 лет назад он был одним из самых популярных языков для написания программ и игр. 

28.05.2020    1453    VKuser24342747    2       

Создатель Linux отказался от Intel в пользу AMD

Новость Linux Микроэлектроника

Линус Торвальдс стал использовать для работы компьютер на базе процессора AMD. Предыдущие 15 лет он отдавал предпочтение ПК на компонентах Intel. 

27.05.2020    1473    user1015646    9       

Microsoft Build 2020: переход в онлайн и главные анонсы

Новость Infostart Software Partners Маркет Новости компаний

Компания Microsoft на конференции Build 2020 представила не только технологии будущего, но и полезные практические решения, которыми будут пользоваться миллионы людей по всему миру.

26.05.2020    2364    user1015646    1       

Microsoft создаст единую платформу для разработки под Windows

Новость Infostart Software Partners Маркет Новости компаний

Компания представила единую платформу для разработки под Windows, функционал для ответственного использования машинного обучения и другие инструменты для разработчиков. 

25.05.2020    2101    VKuser24342747    3       

Разработчик Node.js запустил новую JavaScript-платформу Deno 1.0

Новость Языки программирования

Создатель платформы для JavaScript-разработки Node.js Райан Даль выпустил первый официальный релиз нового проекта – Deno 1.0.

25.05.2020    1473    user1015646    1