16 приёмов написания суперчитабельного кода


Содержание

10 лучших советов по написанию читабельного кода

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

Комментирование и документирование

Очень полезной фичей в Visual Studio является возможность комментариев в пользовательских классах и методах, в С# приложениях просто надо добавит три слеша («///») перед их объявлением.VS.NET автоматически создает необходимые XML атрибуты, куда можно вставлять описание и информацию о параметрах. После того как проект скомпилирован, VS.NET сохраняет введенную информацию, и она будет отображаться с использованием IntelliSense. Эта информация включает комментарии для методов, параметры методов, возвращаемые переменные методов, перечислений и свойств.

Комментарии должны описывать цель секции кода, но не механизм как достичь эту цель — описывайте скорее «почему», а не «как». Если вы заметили, что комментариях используете имена переменных, лучше остановится и переписать комментарий.

Единый стиль в отступах

Все знают что надо делат отступы в коде, чтобы повысить его читабельность о структурированность. Есть несколько стилей:

Выбор стиля зависит от вас, здесь самое лучшее правило — последовательность, если выбрали один, то придерживайтесь его всю жизнь :), ну или на протяжении одного проекта по крайней мере.

Еще по структуре отступов:

Разбивайте длинные SQL запросы на несколько строчек используя verbatim strings, т.е. использовать «@» в начале строки. Выравнивать последующие строчки лучше по началу SQL выражения в первой строчке . Тоже правило работает для вызова функций с большим количеством параметров

Разбивайте длинные объявления методов на несколько строчек и отступайте на 6 символов или 2 TAB отступа. Тоже правило работает для длинных IF выражений.

Когда присваиваете переменной длинное выражение, лучше сделать перенос сразу после знака «=», чтобы было видно все выражение в одной строчке.

Группируйте код

Чаще всего определенные задания занимают несколько строк кода. Хорошая идея группировать эти задания в отдельные блоки, с разделителем — пустая строка.

Добавление строки комментариев перед каждым блоком также визуально подчеркивает разделение .

Избегайте глубоких вложений

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

Организация файлов и папок

Технически можно весь код содержать в одном файле, но его будет очень тяжело читать и поддерживать. Лучше всего разделять решение(Solution) на разные проекты (projects) в соответствии с разными уровнями, модулями, или компонентами определенными на стадии дизайна.

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

В Visual Studio 2005 ввели полезную фичу: возможность добавлять папки в одно решение, группировать проекты и даже папки в вашей собственной логической иерархи.

Для примера пользуясь руководством Microsoft Patterns and Practicies по разработке трехуровневой архитектуры приложения, у вас может получиться что-то типа:

Будьте последовательны в именовании переменных

Как правило имена переменных имеют смысловую нагрузку и состоят из нескольких слов. Но это не обязательно так для локальных переменных. Они могут состоят и из одного символа. Хорошей практикой является использование единого принципа в именовании локальных переменных во всем проекте. Например:

Тут также стоит вспомнить про Венгерскую нотацию. Суть Венгерской нотации сводится к тому, что имена идентификаторов предваряются заранее оговорёнными префиксами, состоящими из одного или нескольких символов. Пример:

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

Пишите SQL спец. слова заглавными буквами

Обращение к базам данных важная часть большинства WEB приложений. Если вы часто используете запросы, хорошая идея сделать их также более читабельными. Общепринятой практикой считается писать заглавными словами спец. слова SQL:

DRY принцип

DRY расшифровывается как Don»t Repeat Yourself (Не повторяйтесь). Также известно выражение DIE: Duplication is Evil(Повторение — зло). Принцип гласит:

» Каждый сегмент знаний должен иметь единственное и однозначное представление в рамках системы».

В ASP.NET можно использовать эталонные страницы( master pages) для задания шаблона всего сайта.

Если вам все таки надо использовать кусок кода снова и снова, то его можно перенести на панель инструментов(ToolBox), просто выделите ваш код и перетащите выбранный текст на общую вкладку. Теперь шаблон можно использовать как любой другой контрол.

Рефакторинг

Рефакторинг — процесс изменения внутренней структуры программы, не затрагивающий её внешнего поведения и имеющий целью облегчить понимание её работы. В основе рефакторинга лежит последовательность небольших эквивалентных (то есть сохраняющих поведение) преобразований. Лучше проводить рефакторинг недавно написанного кода, пока он свежий в голове, что бы потом легче было его читать и использовать. Хорошая книга по рефакторингу тут.

Ссылки по теме

Популярные статьи
Информационная безопасность Microsoft Офисное ПО Антивирусное ПО и защита от спама Eset Software


Бестселлеры
Курсы обучения «Atlassian JIRA — система управления проектами и задачами на предприятии»
Microsoft Office 365 для Дома 32-bit/x64. 5 ПК/Mac + 5 Планшетов + 5 Телефонов. Подписка на 1 год. Электронный ключ
Microsoft Windows 10 Профессиональная 32-bit/64-bit. Все языки. Электронный ключ
Microsoft Office для Дома и Учебы 2020. Все языки. Электронный ключ
Курс «Oracle. Программирование на SQL и PL/SQL»
Курс «Основы TOGAF® 9»
Microsoft Windows Professional 10 Sngl OLP 1 License No Level Legalization GetGenuine wCOA (FQC-09481)
Microsoft Office 365 Персональный 32-bit/x64. 1 ПК/MAC + 1 Планшет + 1 Телефон. Все языки. Подписка на 1 год. Электронный ключ
Windows Server 2020 Standard
Курс «Нотация BPMN 2.0. Ее использование для моделирования бизнес-процессов и их регламентации»
Антивирус ESET NOD32 Antivirus Business Edition
Corel CorelDRAW Home & Student Suite X8

О нас
Интернет-магазин ITShop.ru предлагает широкий спектр услуг информационных технологий и ПО.

На протяжении многих лет интернет-магазин предлагает товары и услуги, ориентированные на бизнес-пользователей и специалистов по информационным технологиям.

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


Читабельность текста: что это такое и как её улучшить

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

Под читабельностью понимают легкость восприятия текста простым обывателем. Текст должен быть лаконичным, понятным и логичным. Чтобы сделать его таким, стоит придерживаться нескольких универсальных правил.

Содержание статьи:

Эффективные советы по повышению читабельности текста

Составление заголовка

Заголовок – это мощнейший инструмент создания интересного контента. В процессе HTML-разметки и SEO-оптимизации текстового наполнения особое внимание уделяется корректно составленным и читабельным заголовкам.
При чтении длинных заголовков пользователи теряют интерес, в то время как короткие не отражают смысл статьи. Заголовок размером около 70 символов станет оптимальным. В него стоит четко и компактно вложить главный посыл статьи.

Тип шрифта

Не игнорируйте требования к размеру и стилистике шрифта. Все чаще можно услышать мнение о негативном влиянии гарнитур с засечками (Times New Roman, Garamond, Georgia и др.) на читабельность текстов. Несмотря на это, многие дизайнеры, научные работники и типографы продолжают использовать Times New Roman при публикации соответствующего материала.
Удобочитаемость текста не зависит строго от гарнитуры. Так, изменив гарнитуру в этой статье с Arial на Times New Roman вы с легкостью продолжите чтение и не будете испытывать неудобств.
При выборе оригинальных декоративных гарнитур не перегибайте палку и используйте их при форматировании небольших фрагментов текстового материала (заголовков либо строк).
При публикации текста рекомендуется использовать один либо два вида шрифта. Абзацы и строки не должны «прыгать» перед глазами.
Правила создания интернет-ресурса не накладывают ограничений на использование традиционных гарнитур без засечек. Выбор антиквы (любых видов шрифтов с засечками) оправдан при наполнении сайта респектабельного учреждения, например, печатного издания.

Выбор кегля шрифта (размера)

В течение нескольких лет наиболее популярными размерами шрифта были 12 и 14 pt. Современные издатели практикуют иной подход, обозначая размер шрифта при помощи одного из двух способов:

  • фиксирования на определенном уровне (как правило, от 18 до 22 px исходя из тематики интернет-портала и потенциальной аудитории);
  • процентного соотношения (в соответствии с системным значением и автоматическим расчетом браузера). Для лучшей читабельности стоит отдавать предпочтение более крупным шрифтам, позволяющим пользователям со слабым зрением комфортно воспринимать текст.

Исключение верхнего регистра

Ни при каких обстоятельствах не используйте верхний регистр для написания целого предложения. Интернет-этика считает данный прием недопустимым и предостерегает от некорректного обращения к посетителю сайта. Заглавные буквы отталкивают читателя, заставляя уйти от избыточного эмоционального напора. Пытаясь достучаться до посетителя таким образом, вы рискуете потерять его доверие.

Оптимальная длина предложений

Забудьте о слишком длинных предложениях, растягивающихся на целый абзац. Главную мысль можно донести до читателя в двух строках. Подобный подход избавит его от необходимости вникать в смысл сложных оборотов, неестественных словоформ и фраз. Все это утомляет читателя.
Благодаря лаконичной подаче текст превращается в функциональный и удобочитаемый материал. Использование сложных предложений перегружает его.
На практике копирайтеры привыкли следовать «правилу Твиттера», в соответствии с которым длина предложения не должна превышать 130 символов без пробелов.

Чередование длинных и коротких предложений

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

Разбивка на абзацы

Текст должен состоять из нескольких смысловых блоков. Чтение однообразного контента, занимающего не одну страницу, вызывает раздражение. Благодаря выделению абзацев у читателя появляется возможность подытожить смысл сказанного и вникнуть в содержание. Для логичного завершения мысли понадобится не более 5-7 предложений.

Акцент на важной мысли и употребление цитат

Выделение ключевых моментов и цитат позволяет читателю сконцентрироваться на важнейших деталях. Выделить эти фрагменты можно при помощи следующих инструментов:

  • жирного или полужирного начертания. При этом использование жирного шрифта для выделения целых абзацев является дурным тоном. Это не понравится ни посетителям сайта, ни поисковикам;
  • курсива. Бумага любит удобный, привлекательный и ненавязчивый курсив. В то же время на экране компьютера эффект искажается не в лучшую сторону. Откажитесь от активного использования курсива, прибегая к его помощи при оформлении прямой речи и цитат;
  • нижнего подчеркивания. В большинстве случаев читатели видят в подчеркнутых словосочетаниях якоря ссылок. Доверьтесь интуиции и прибегайте к данному способу акцентирования в исключительных случаях.

Выделяя ключевые слова, учитывайте следующие нюансы:

  • поисковые системы анализируют количество ключевых слов в тексте, что прямым образом влияет на релевантность страницы. Этот важно учитывать SEO-копирайтерам;
  • простые читатели визуально концентрируются на основных моментах, не вдаваясь в подробности и не перечитывая текст полностью.

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

Использование списков

Благодаря спискам восприятие текстового материала существенно упрощается. Однако количество пунктов в списке не должно превышать семи. Это связано с тем, что человек способен концентрировать внимание не более чем на семи элементах одновременно. При большем числе пунктов информация будет восприниматься хуже.

Длина статьи

Слишком длинный и не разделенный на абзацы текст вряд ли вызовет желание его прочесть. В первые 1000 символов необходимо вместить краткую вступительную часть и ознакомить читателя с целью представленного материала, его актуальностью и возможностью применения в разных сферах жизни.
Для обычного текста, предназначенного для широкой аудитории, оптимальная величина составляет от 8000 до 10000 символов. Такой объем оптимален с точки зрения восприятия и анализа поисковыми системами.

Способ выравнивания

Чаще всего выравнивание текстового материала выполняется по левому краю. Недостатком выравнивания по ширине является невозможность визуально разграничить предыдущую и последующую строки. Благодаря неравномерному краю в правой стороне экрана чтение становится более комфортным. Удобочитаемость текстов, выровненных по центру либо ширине, поддается критике.

Подытожить сказанное

Заключительной частью любого текста должен стать вывод. В последних предложениях необходимо подвести итог каждой части текста. В конце статьи рекомендуется обобщить суть и сформулировать посыл на будущее.

Необходимость вычитки

После написания текста и окончательного форматирования следует оценить его читабельность в несколько этапов:

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

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

Тренируйтесь оценивать читабельность текстов, размещенных на сторонних интернет-ресурсах и в печатных СМИ. Проанализируйте привлекательный материал и постарайтесь отыскать особенности, позволившие сделать его таким. Восприятие текста зависит от множества параметров. На эмоциональную составляющую влияние оказывает не одно только содержание, но совокупность всех факторов.

При исследовании печатных материалов следуйте тринадцати правилам повышения читабельности. Интернет-издания уступают традиционным СМИ в качестве подачи информации.

Не игнорируйте на первый взгляд непривлекательный и скучный контент. Изучив принципы улучшения читабельности, вы определите недочеты конкретного текста.


Руководство по написанию чистого и читабельного кода для начинающих разработчиков. Часть 1

Часть 1, Часть 2

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

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

Теперь представьте, что в статье нет ни одного заголовка, а абзацы расположены в странном порядке. Чтобы понять о чем речь, придется внимательно прочитать каждое предложение.

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

  1. Целенаправленность — каждая функция, каждый класс и модуль выполняют определенное действие.
  2. Элегантность — чистый код легко прочитать, и он максимально понятен.
  3. Чистый код требует внимания. Для создания простоты и порядка нужно время и внимание к деталям.
  4. Чистый код проходит все тестирования. Плохой код не является чистым!

Главный вопрос заключается в том, как написать чистый код молодому разработчику. Рассмотрим основные советы для начинающих.

Используйте форматирование и отступы последовательно

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

Для создания чистого и читабельного кода необходима последовательность отступов, разрывов строки и форматирования. Рассмотрим два примера:

Хороший пример

  • С первого взгляда понятно, что заявление if/else находится в функции.
  • Благодаря скобкам и последовательным отступам видно, где начинаются и заканчиваются блоки кода.
  • Скобки последовательны — открывающие скобки для function и if находятся на одной линии.

Плохой пример

Кошмар! Практически все неправильно.

  • Повсюду отступы — невозможно определить, где заканчивается функция и начинается блок if/else (да, там есть блок if/else!).
  • Скобки расставлены непоследовательно.
  • Межстрочный интервал тоже непоследовательный.

Пример немного преувеличен, однако показывает преимущества использования последовательных отступов и форматирования. “Хороший” пример гораздо легче прочитать!

Приятные новости: есть множество плагинов для IDE, с помощью которых можно автоматически форматировать код.

Используйте понятные названия переменных и методов

Важную роль в читабельности кода играют выбранные названия. Рассмотрим пример с хорошими названиями:

Этот фрагмент кода хорош по следующим причинам:

  • Названия функций и аргументов максимально понятны. При прочтении кода становится ясно, что при вызове метода getStudentName() с studentId будет возвращено имя студента. В таком случае не придется переходить к методу getStudentName() без необходимости!
  • Названия вызовов переменных и методов в getStudentName() также максимально ясны — метод вызывает api , получает объект student и возвращает свойство name . Все просто!

При росте приложения используйте следующие советы для улучшения читабельности кода:

  • Выберите стиль названий и будьте последовательны. Либо camelCase , либо under_scores , но не оба!
  • Названия функций, методов и переменных должны соответствовать тому действию, которое они выполняют. Например, если метод получает что-либо, то используйте get в названии. Или если переменная хранит цвет машины, то назовите ее carColour .

БОНУС: если название функции или метода трудно подобрать, то она выполняет слишком много действий. Разделите ее на несколько функций! Например, если функция называется updateCarAndSave() , то создайте два метода: updateCar() и saveCar() .

При необходимости используйте комментарии

Есть поговорка: “код должен быть самодокументирующимся”. Это значит, что код должен быть читабельным и не требовать дополнительных комментариев. Веский аргумент, однако звучит разумно лишь в идеальном мире. На данный момент мир программирования далек от идеала, поэтому порой комментарии необходимы.

Комментарии используются для описания действий определенной функции или класса. При написании библиотеки они пригодятся разработчикам, использующим эту библиотеку. Рассмотрим пример из useJSDoc:

Пояснительные комментарии предназначены для тех, кто будет поддерживать, выполнять рефакторинг или расширять код. Чаще всего использования пояснительных комментариев можно избежать в пользу “самодокументируемого кода”. Пример пояснительного комментария:

Рассмотрим несколько примеров комментариев, которых стоит избегать.

Излишние комментарии, не добавляющие значения:

Как писать красивый код с PEP 8. Часть #1

Начинаю серию переводов с Real Python.


PEP 8 (иногда PEP8 или PEP-8) — документ, который содержит набор рекомендаций и практик, про то, как писать на Python. Написан в 2001 Гуидо ван Россумом, Барри Уорсо и Ником Когхланом. Основной целью PEP 8 является улучшение читаемости и согласованности кода.

PEP расшифровывается как Предложения по развитию Python и их огромное количество. PEP это документ, описывающий новые особенности предлагаемые для Python и документирует особенности Python, например, дизайн и стиль для сообщества.

В этом руководстве излагаются основные рекомендации, изложенные в PEP 8. Руководство предназначено для начинающих и программистов среднего уровня, и поэтому не затронуты некоторые из наиболее сложных тем. Вы можете узнать об этих темах, прочитав полную документацию по PEP 8 (англ и рус).

К концу этой статьи, вы сможете:

* Написать код Python, соответствующий PEP 8

* Понять обоснование руководящих принципов, изложенных в PEP 8

* Настроить среду разработки так, чтобы вы могли начинать писать Python код, совместимый с PEP 8

Читаемость имеет значение. (c) Дзен Python

PEP 8 существует для улучшения читабельности кода Python. Но почему так важна читабельность? Почему написание читаемого кода является одним из главных принципов языка Python?

Как сказал Гвидо ван Россум: «Код читается гораздо чаще, чем пишется». Вы можете потратить несколько минут или целый день на написание фрагмента кода для обработки аутентификации пользователя. После того, как вы написали, вы никогда не будете писать этот код снова. Однако вам определенно придется прочитать его заново. Этот фрагмент кода может остаться частью проекта, над которым вы работаете. Каждый раз, когда вы возвращаетесь к этому файлу, вы должны помнить, что делает этот код и почему вы его написали, поэтому читаемость имеет значение.

Если вы новичок в Python, то Вам будет трудно вспомнить, что делает фрагмент кода, через несколько дней или недель после его написания. Если вы будете следовать PEP 8, Вы можете быть уверены, что правильно назвали свои переменные. Вы будете знать, что добавили достаточно пробелов, чтобы легче было следовать логическим шагам в вашем коде. Вы также хорошо прокомментируете свой код. Все это будет означать, что Ваш код более читабелен и к нему легче вернуться. Как новичок, следование правилам PEP 8 может сделать изучение Python более приятной задачей.

Следование PEP 8 особенно важно, если вы ищете работу разработчиком. Написание четкого, читаемого кода демонстрирует профессионализм. Он скажет работодателю, что вы понимаете, как правильно структурировать свой код.

Если у вас большой опыт написания кода на Python, возможно, вам придется сотрудничать с другими разработчиками. Написание читаемого кода здесь имеет решающее значение. Другим людям, которые, возможно, никогда раньше не встречали вас и не видели ваш стиль кодирования, придется читать и понимать ваш код. Наличие руководств, которые вы соблюдаете и узнаёте, облегчит другим чтение вашего кода.

Явное лучше, чем неявное (с) Дзен Python

Когда вы пишете код на Python, вам нужно называть множество вещей: переменные, функции, классы, пакеты и так далее. Выбор правильных имен сэкономит ваше время и энергию. По названию вы сможете понять, что представляет собой определенная переменная, функция или класс. Вы также избежите использования неподходящих имен, которые могут привести к ошибкам, которые трудно отладить.

Примечание. Никогда не используйте однобуквенные имена l (прим: строчное L), O или I (прим: прописное i), поскольку их можно принять за 1 и 0, в зависимости от гарнитуры:

O = 2 # Это может выглядеть так, будто вы пытаетесь переопределить ноль, как число два

Функции — используйте строчное слово(-а). Разделяйте слова нижним подчеркиванием для улучшения читаемости. Например: function, my_function

Переменные — используйте строчную букву, слово или слова. Разделяйте слова нижним подчеркиванием, чтобы улучшить читаемость. Например: x, var, my_variable

Классы — начинайте каждое слово с заглавной буквы. Не разделяйте слова подчеркиванием. Этот стиль называется ВерблюжийРегистр (прим: чаще всего употребляется всё же английский вариант названия: кэмэл кейс). Например: Model, MyClass

Методы — используйте строчные слова или слова. Разделяйте слова нижним подчеркиванием, чтобы улучшить читаемость. Например: class_method, method

Константы — используйте заглавные буквы, слово или слова. Разделяйте слова подчеркиванием, чтобы улучшить читаемость. (прим: в Python нет отдельного типа для констант. А так как в Python существует благодаря тому, что есть много соглашений, которые должны соблюдаться разработчиками. Поэтому и используется данное обозначение для констант. ) Например: CONSTANT, MY_CONSTANT, MY_LONG_CONSTANT

Модули — используйте короткое строчное слово(-а). Разделяйте слова нижним подчеркиванием, чтобы улучшить читаемость. Например: module.py , my_ module.py

Пакеты — используйте короткое строчное слово(-а). Не разделяйте слова подчеркиванием. Например: package, mypackage

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

Как выбрать имена

Выбор имен для ваших переменных, функций, классов и т.д. может быть сложной задачей. При написании кода вы должны тщательно продумать свои варианты именования, так как это сделает ваш код более читабельным. Лучший способ назвать ваши объекты в Python — это использовать описательные имена, чтобы прояснить, что представляет собой объект.

При именовании переменных у вас может возникнуть желание выбрать простые однобуквенные строчные имена, например, x. Но, если вы не используете x в качестве аргумента математической функции, неясно, что представляет собой x. Представьте, что вы храните имя человека в виде строки и хотите использовать нарезку строк, чтобы по-разному форматировать его имя. Вы можете получить что-то вроде этого:

Это будет работать, но вы должны будете отслеживать, что представляют собой x, y и z. Это также может сбивать с толку соавторов. Более ясный выбор имен представляет из себя что-то вроде этого:

name = ‘John Smith’

first_name, last_name = name.split()

print(last_name, first_name, sep=’, ‘)

Точно так же, чтобы уменьшить количество набираемого текста, может возникнуть соблазн использовать сокращения при выборе имен. В приведенном ниже примере мы определили функцию db (), которая принимает один аргумент x и удваивает его:

На первый взгляд это может показаться разумным выбором. db () может легко быть сокращением для удвоения. Но представьте, что вы вернетесь к этому коду через несколько дней. Возможно, вы забудете, что хотели сделать с помощью этой функции, и это затруднило бы возможность понять, как вы сокращали ее.

Следующий пример понятнее. Если вы вернетесь к этому коду через пару дней после его написания, вы все равно сможете прочитать и понять назначение этой функции:

Та же философия применима ко всем другим типам данных и объектам в Python. Всегда старайтесь использовать максимально сжатые, но описательные имена.

Красиво лучше, чем некрасиво. (c) Дзен Python

То, как вы выкладываете свой код, играет огромную роль в его читабельности. В этом разделе вы узнаете, как добавить вертикальный пробел для улучшения читабельности вашего кода. Вы также узнаете, как обрабатывать ограничение в 79 символов, рекомендованное в PEP 8.

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

Окружите функции и классы верхнего уровня двумя пустыми строками. Функции и классы верхнего уровня должны быть достаточно автономными и обрабатывать отдельные функции. Имеет смысл разместить вокруг них дополнительное вертикальное пространство, чтобы было ясно, что они разделены:


Определения метода внутри классов с одной пустой строкой. Внутри класса все функции связаны друг с другом. Рекомендуется оставлять между ними только одну строчку:

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

В приведенном ниже примере есть функция для расчета дисперсии списка. Это двухэтапная проблема, поэтому я обозначил каждый шаг, оставив между ними пустую строку. Существует также пустая строка перед оператором возврата. Это помогает читателю ясно увидеть, что возвращается:

for number in number_list:

sum_list = sum_list + number

mean = sum_list / len(number_list)

for number in number_list:

sum_squares = sum_squares + number**2

mean_squares = sum_squares / len(number_list)

return mean_squares — mean**2

Максимальная длина линии и разрыв строки

PEP 8 предполагает, что строки должны быть ограничены 79 символами. Это позволяет открывать несколько файлов рядом друг с другом, а также избегать переноса строк.

Конечно, сохранение утверждений длиной до 79 символов не всегда возможно. В PEP 8 изложены способы, позволяющие операторам выполнять несколько строк.

Python примет продолжение строки, если код содержится в круглых, квадратных и фигурных скобках:

def function(arg_one, arg_two,

Если невозможно использовать подразумеваемое продолжение, то вместо него можно использовать обратную косую черту:

from mypkg import example1, \

Однако, если вы можете использовать подразумеваемое продолжение, то вам следует всё же использовать продолжение.

Если разрыв строки должен происходить вокруг бинарных операторов, таких как + и *, это должно происходить перед оператором. Это правило вытекает из математики. Математики сходятся во мнении, что разрыв перед двоичными операторами улучшает читаемость. Сравните следующие два примера.

Ниже приведен пример разрыва перед бинарным оператором:

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

Теперь давайте рассмотрим пример разрыва после бинарного оператора:

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

Прерывание перед бинарными операторами создает более читаемый код, поэтому PEP 8 поощряет это. Код, который постоянно ломается после бинарного оператора, по-прежнему соответствует PEP 8. Тем не менее, вам рекомендуется разрывать перед двоичным оператором.

В следующей части рассмотрим отступы и как правильно комментировать код.

Все права принадлежат авторам статьи (команде Real Python).
Мною лишь переведена и адаптирована статья.

Семь шагов к повышению читабельности вашего контента

Время чтения: 7 минут Нет времени читать? Нет времени?

Ваш контент не работает, если он нечитабелен. И это важнейший фактор успешного контент-маркетинга. В данной статье приводятся семь советов, которые помогут вам создать простой для восприятия контент.

Аудитория выбирает наиболее визуально привлекательные и легкочитаемые материалы в условиях огромного предложения онлайн- и офлайн-контента, существующего сегодня. Поэтому специалисты в сфере e-сommerce должны обеспечить потенциальным клиентам максимальное удобство при чтении текстов.

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

Ваши читатели не читают

Данное утверждение является отправной точкой пути к повышению читабельности контента. Интернет-пользователи в буквальном смысле сканируют содержание веб-страниц. Глаза человека быстро передвигаются по тексту, выхватывая знакомые визуальные формы слов.

Специалист Microsoft Билл Хилл описал данный нейрофизиологический феномен в исследовании «Магия чтения» еще в 1999 году. Компания Microsoft и господин Хилл потратили на изучение процесса чтения с экрана компьютеров более 15 лет. По их данным, люди читают тексты, распознавая серийные паттерны.

Например, чтобы прочитать данное предложение, ваш зрительный аппарат быстро сканирует визуальные кластеры, в которые входят три-четыре слова. Находя и распознавая знакомые формы, ваш мозг «переводит» их с языка образов на язык значений.

Мозг расшифровывает и переводит зрительные паттерны в смысловые, после чего переходит к следующей группе слов.

Это же происходит в тот момент, когда ваш зрительный аппарат сканирует отдельное слово, например, «Федерализация». Ваше сознание распознает контур, который образуют буквы, определяя по нему значение написанного. При этом мозг взрослого человека не читает слова по буквам.

Как отмечено выше, люди читают тексты, распознавая серийные паттерны. Поэтому специалисты по контент-маркетингу должны облегчить данный процесс, разрабатывая удобную визуальную структуру текста и дизайн страницы. Мало того, мы предсказываем бурное развитие такого направления как верстка текстово-графических материалов на сайт. Нюансы в подаче – как оказалось – чрезмерно важны. Первичное восприятие текста зависит от его визуализации, и только после прочтения материала у нас формируется эмоциональный отклик на «смысл».

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

Повышаем читабельность контента на практике


  1. Дайте вашему тексту возможность дышать — правильно выбирайте межстрочный интервал. Оставьте между строками достаточно места для того, чтобы ваши читатели легко сканировали и распознавали визуальные формы слов. Убедитесь в том, что в настройках по умолчанию в вашем текстовом редакторе или визуальном редакторе CMS установлен достаточный интервал. Обратите внимание на буквы, части которых выступают над или под строкой (к ним относятся все заглавные, б, у, ц, щ, р). Выступающие линии букв не должны наползать на соседние строки, чтобы читатель легко распознавал зрительные паттерны слов.
  2. Используйте заглавные буквы с осторожностью. Заголовки и подзаголовки, написанные ИСКЛЮЧИТЕЛЬНО ЗАГЛАВНЫМИ БУКВАМИ, уменьшают читабельность вашего текста. Дело в том, что все слова, написанные заглавными буквами, имеют одинаковый визуальный паттерн. Это заставляет читателя перестраиваться с распознавания образов на чтение слов по буквам. Кроме того, использование одних заглавных для написания заголовков и подзаголовков увеличивает площадь, занимаемую материалом, что неприемлемо для печатных изданий. Используйте комбинацию заглавных и прописных букв, создавая заголовки разного уровня. Оставьте слова только из заглавных букв для логотипов, а еще лучше – избавьтесь от таких слов вовсе.
  3. Избегайте длинных строк на странице. Строки, которые тянутся от левого до правого края страницы, утомляют читателя, так как его глаза вынуждены несколько раз «перепрыгивать» поперек страницы от одной группы слов к другой. Более того, слишком длинные строки могут обмануть зрение читателя, заставив его вернуться к уже прочитанному или вовсе «заблудиться» в тексте. Если мысль нельзя выразить коротко, старайтесь использовать сложноподчиненные предложения. Глаз читателя нуждается в смысловых паузах, проще читать от запятой до запятой, нежели текст целиком без смысловых пауз.
  4. Создайте контрасты между текстом и «пустотой» на каждой веб-странице. В онлайне тексты на всю ширину монитора читать неудобно. Пустое пространство слева и справа обеспечивает необходимый контраст, облегчающий восприятие контента. Также вы можете добиться контрастности с помощью заголовков и подзаголовков, которые выделяются жирным шрифтом и большим кеглем.
  5. При верстке страницы избегайте фотографий и инфографики, вставленных непосредственно в текст без окружного фона. Читатель сбивается с ритма, пытаясь распознать текст, обтекающий фотографии и прилегающий к иллюстрации максимально близко.
  6. Используйте короткие подзаголовки. Подзаголовок должен выступать в качестве тизера, который заставляет аудиторию прочитать нижеследующий абзац. Идеальный подзаголовок умещается на одной строке.
  7. Редактируйте текст, чтобы избежать появления в нем «вдов и сирот». Речь идет о ситуации, когда одно или несколько слов оказываются изолированными в верхней или нижней части страницы или колонки. Читатель прилагает дополнительные усилия, чтобы прочитать эти слова, что сбивает его с ритма. Иногда достаточно просто переставить несколько слов в предложении, чтобы его окончание не «вылазило» со строки. Во время верстки следите, чтобы названия компаний и имена располагались на одной строке. Достаточно поместить имя и фамилию человека на разных строчках, чтобы сбить читателя с ритма.

Станьте экспертом по читабельности контента

Приучите себя оценивать веб-страницы и печатные материалы с точки зрения читабельности. Если вы прочитали увлекательный материал на сайте, подумайте, какие факторы делают его читабельным, помимо содержания. Наше восприятие текста – это сумма различных факторов. Эмоциональный отклик – нравится или не нравится данный текст – учитывает все факторы, а не только содержание.

Анализируйте печатные издания в контексте семи шагов к повышению читабельности контента. Интернет-изданиям еще очень далеко до популярных оффлайновых СМИ с точки зрения верстки и визуализации информации.

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

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

10 способов сделать свой код более читаемым

Перевод статьи Джейсона МакКрири «10 practices for readable code».

Я занимаюсь программированием уже 20 лет. За это время я поработал с 17 командами и в ходе создания сотен проектов программировал на разных языках. Среди этих проектов были и простые сайты-блоги, и APIs с поддержкой 3 тыс. запросов в секунду, и топовые приложения для продаж товаров.

На основе своего опыта, а также прочитанных мною книг, я сумел определить, что в коде имеет самое больше значение: читаемость.

На первый взгляд, читаемость это понятие субъективное. Нечто, зависящее от языка, кодовой базы и команды. Но если копнуть глубже, мы увидим в коде основные элементы, делающие его читаемым.

Многие программисты чересчур близки к компьютерам. Для них важно только то, что код работает, а все остальное не имеет значения. Отсюда распространенные порывы удалить все «человеческие» элементы из нашей работы.

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

К сожалению, многие отбрасывают эти подходы как нечто тривиальное. Слишком базовое. Но я вас уверяю, в каждом кусочке плохого кода, который я встречал, эти подходы не применялись. И наоборот, в каждом хорошем коде можно проследить применение хотя бы одного из этих подходов (если не многих).

Форматирование

На форматирование идет так много энергии. Табы против пробелов. Олман против K&R. Но однажды вы достигнете понимания, что форматирование это не то, что имеет значение в программировании. Примите стандартный формат, примените его к кодовой базе и автоматизируйте. После этого вы сможете перенаправить свою энергию на написание самого кода.

Мертвый код

Все эти закомментированные блоки, неиспользуемые переменные и недостижимый код это гниль. Они прямо говорят читателю: «Мне плевать на этот код». Так и начинается цикл разрушения. Со временем этот мертвый код убьет вашу кодовую базу. Это классический случай теории разбитых окон.

Мертвый код нужно находить и уничтожать. И хотя это не должно быть вашим основным фокусом, руководствуйтесь принципом бойскаутов: «Оставь это в лучшем виде, чем оно было до тебя».

Вложенность кода

Основа практически всего кода это логика. Мы пишем код, чтобы принимать решения, производить итерации и вычисления. Часто это приводит к ветвлению циклов, что создает глубоко вложенные блоки кода. И хотя для компьютера не составляет труда понять этот код, человеку потребуется приложить значительные умственные усилия, чтобы его прочесть.

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

Использование объектов

Хотя у нас эра объектно-ориентированного программирования, у нас все еще есть одержимость элементарными типами. Мы обнаруживаем ее в длинных списках параметров, группах данных и пользовательских структурах массивов/словарей. Все это можно преобразовать в объекты. Это не только формализует структуру данных, но и предоставит дом для всей повторяющейся логики, которая сопутствует примитивным типам.

Большие блоки

Поскольку я не очень «дружу» с большими числами, просто скажу, что блоки кода могут достигать критической длины. Когда вы понимаете, что у вас есть большой блок кода, стоит заняться его перегруппированием и перепроектированием.

Этот простой процесс позволит вам определить контекст и уровень абстракции этого блока кода. Благодаря этому вы сможете правильно идентифицировать, что за что отвечает в этом коде и сделать рефакторинг, чтобы получить более читаемый и менее сложный блок.

Имена

Конечно, придумывать имена – сложное дело. Но только потому, что мы делаем его сложным. Есть небольшая уловка, хорошо работающая в отношении разных вещей в программировании, включая именование, – отсрочка. Не тормозите, пытаясь выдумать имя для чего-нибудь. Просто продолжайте программировать. Назовите переменную целым предложением, если нужно. И просто продолжайте писать код. Я гарантирую, что к тому времени, как вы закончите писать этот функционал, наилучшее имя для переменной всплывет в голове само.

Удаление комментариев

Эта простая практика для меня была оригинальной сменой правил игры. Именно это заставило меня сосредоточиться на читаемости.

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

Конечно, если телеметрическая система телескопа Хаббла должна взаимодействовать с устаревшим адаптером путем возврата 687 для неизвестных показаний, то, вероятно, потребуется коммуникация в виде комментария. Но что касается практически всего остального, вам стоит озадачиться и переписать код таким образом, чтобы он не нуждался в комментариях.


Разумные возвраты значений

Мы возвращаем самые странные значения вещей. Особенно это касается случаев связывания. Такие значения как -1, 687 или null. В свою очередь, для обработки этих значений пишется большое количество кода. На самом деле создатель null называет свое творение ошибкой стоимостью в миллиард долларов.

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

Правило трех

Подумайте о математической последовательности чисел. Я называю число 2 и спрашиваю: «Какое следующее?» Возможно, это 3 или 4, но может быть и 1, и 2,1. На самом деле вы понятия не имеете. Поэтому я называю еще одно число последовательности – 4 (теперь имеем 2, 4) и спрашиваю: «Какое следующее?» Вероятно, это 6 или 8, или 16. Опять же, несмотря на нашу растущую уверенность, на самом деле мы не знаем. Я выдаю еще одно число из серии, теперь это 2, 4, 16, и спрашиваю: «Какое следующее?» Имея три точки данных, мозг программиста видит последовательность квадратов и определяет, что следующее число – 256. Это правило трех.

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

Симметрия

И последний подход. Имеющий отношение к практически поэтической стороне читаемости – симметрии. Из «Implementation Patterns» Кента Бека:

Симметрия в коде это когда одна и та же идея выражается одинаково везде, где бы ни была.

Это легче сказать, чем сделать. Симметрия воплощает творческую сторону программирования. Она лежит в основе многих других подходов: именования, структуры, объектов, шаблонов. Симметрия может варьироваться в зависимости от языка, кодовой базы, команды. Поэтому на достижение симметрии может уйти вся жизнь. Кроме всего прочего, как только вы начинаете стремиться к симметрии в своем коде, в нем появляются более чистые формы и он быстрее принимает свои очертания.

Читабельность кода, как лучше?

1. 8640 0% (0)
3. Любое

  • С первого взгляда понятно, что заявление if/else находится в функции.
  • Благодаря скобкам и последовательным отступам видно, где начинаются и заканчиваются блоки кода.
  • Скобки последовательны — открывающие скобки для function и if находятся на одной линии.

Плохой пример

Кошмар! Практически все неправильно.

  • Повсюду отступы — невозможно определить, где заканчивается функция и начинается блок if/else (да, там есть блок if/else!).
  • Скобки расставлены непоследовательно.
  • Межстрочный интервал тоже непоследовательный.

Пример немного преувеличен, однако показывает преимущества использования последовательных отступов и форматирования. “Хороший” пример гораздо легче прочитать!

Приятные новости: есть множество плагинов для IDE, с помощью которых можно автоматически форматировать код.

Используйте понятные названия переменных и методов

Важную роль в читабельности кода играют выбранные названия. Рассмотрим пример с хорошими названиями:

Этот фрагмент кода хорош по следующим причинам:

  • Названия функций и аргументов максимально понятны. При прочтении кода становится ясно, что при вызове метода getStudentName() с studentId будет возвращено имя студента. В таком случае не придется переходить к методу getStudentName() без необходимости!
  • Названия вызовов переменных и методов в getStudentName() также максимально ясны — метод вызывает api , получает объект student и возвращает свойство name . Все просто!

При росте приложения используйте следующие советы для улучшения читабельности кода:

  • Выберите стиль названий и будьте последовательны. Либо camelCase , либо under_scores , но не оба!
  • Названия функций, методов и переменных должны соответствовать тому действию, которое они выполняют. Например, если метод получает что-либо, то используйте get в названии. Или если переменная хранит цвет машины, то назовите ее carColour .

БОНУС: если название функции или метода трудно подобрать, то она выполняет слишком много действий. Разделите ее на несколько функций! Например, если функция называется updateCarAndSave() , то создайте два метода: updateCar() и saveCar() .

При необходимости используйте комментарии

Есть поговорка: “код должен быть самодокументирующимся”. Это значит, что код должен быть читабельным и не требовать дополнительных комментариев. Веский аргумент, однако звучит разумно лишь в идеальном мире. На данный момент мир программирования далек от идеала, поэтому порой комментарии необходимы.

Комментарии используются для описания действий определенной функции или класса. При написании библиотеки они пригодятся разработчикам, использующим эту библиотеку. Рассмотрим пример из useJSDoc:

Пояснительные комментарии предназначены для тех, кто будет поддерживать, выполнять рефакторинг или расширять код. Чаще всего использования пояснительных комментариев можно избежать в пользу “самодокументируемого кода”. Пример пояснительного комментария:

Рассмотрим несколько примеров комментариев, которых стоит избегать.

Излишние комментарии, не добавляющие значения:

10 способов сделать свой код более читаемым

Перевод статьи Джейсона МакКрири «10 practices for readable code».

Я занимаюсь программированием уже 20 лет. За это время я поработал с 17 командами и в ходе создания сотен проектов программировал на разных языках. Среди этих проектов были и простые сайты-блоги, и APIs с поддержкой 3 тыс. запросов в секунду, и топовые приложения для продаж товаров.

На основе своего опыта, а также прочитанных мною книг, я сумел определить, что в коде имеет самое больше значение: читаемость.

На первый взгляд, читаемость это понятие субъективное. Нечто, зависящее от языка, кодовой базы и команды. Но если копнуть глубже, мы увидим в коде основные элементы, делающие его читаемым.

Многие программисты чересчур близки к компьютерам. Для них важно только то, что код работает, а все остальное не имеет значения. Отсюда распространенные порывы удалить все «человеческие» элементы из нашей работы.

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

К сожалению, многие отбрасывают эти подходы как нечто тривиальное. Слишком базовое. Но я вас уверяю, в каждом кусочке плохого кода, который я встречал, эти подходы не применялись. И наоборот, в каждом хорошем коде можно проследить применение хотя бы одного из этих подходов (если не многих).

Форматирование

На форматирование идет так много энергии. Табы против пробелов. Олман против K&R. Но однажды вы достигнете понимания, что форматирование это не то, что имеет значение в программировании. Примите стандартный формат, примените его к кодовой базе и автоматизируйте. После этого вы сможете перенаправить свою энергию на написание самого кода.

Мертвый код

Все эти закомментированные блоки, неиспользуемые переменные и недостижимый код это гниль. Они прямо говорят читателю: «Мне плевать на этот код». Так и начинается цикл разрушения. Со временем этот мертвый код убьет вашу кодовую базу. Это классический случай теории разбитых окон.

Мертвый код нужно находить и уничтожать. И хотя это не должно быть вашим основным фокусом, руководствуйтесь принципом бойскаутов: «Оставь это в лучшем виде, чем оно было до тебя».

Вложенность кода

Основа практически всего кода это логика. Мы пишем код, чтобы принимать решения, производить итерации и вычисления. Часто это приводит к ветвлению циклов, что создает глубоко вложенные блоки кода. И хотя для компьютера не составляет труда понять этот код, человеку потребуется приложить значительные умственные усилия, чтобы его прочесть.


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

Использование объектов

Хотя у нас эра объектно-ориентированного программирования, у нас все еще есть одержимость элементарными типами. Мы обнаруживаем ее в длинных списках параметров, группах данных и пользовательских структурах массивов/словарей. Все это можно преобразовать в объекты. Это не только формализует структуру данных, но и предоставит дом для всей повторяющейся логики, которая сопутствует примитивным типам.

Большие блоки

Поскольку я не очень «дружу» с большими числами, просто скажу, что блоки кода могут достигать критической длины. Когда вы понимаете, что у вас есть большой блок кода, стоит заняться его перегруппированием и перепроектированием.

Этот простой процесс позволит вам определить контекст и уровень абстракции этого блока кода. Благодаря этому вы сможете правильно идентифицировать, что за что отвечает в этом коде и сделать рефакторинг, чтобы получить более читаемый и менее сложный блок.

Имена

Конечно, придумывать имена – сложное дело. Но только потому, что мы делаем его сложным. Есть небольшая уловка, хорошо работающая в отношении разных вещей в программировании, включая именование, – отсрочка. Не тормозите, пытаясь выдумать имя для чего-нибудь. Просто продолжайте программировать. Назовите переменную целым предложением, если нужно. И просто продолжайте писать код. Я гарантирую, что к тому времени, как вы закончите писать этот функционал, наилучшее имя для переменной всплывет в голове само.

Удаление комментариев

Эта простая практика для меня была оригинальной сменой правил игры. Именно это заставило меня сосредоточиться на читаемости.

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

Конечно, если телеметрическая система телескопа Хаббла должна взаимодействовать с устаревшим адаптером путем возврата 687 для неизвестных показаний, то, вероятно, потребуется коммуникация в виде комментария. Но что касается практически всего остального, вам стоит озадачиться и переписать код таким образом, чтобы он не нуждался в комментариях.

Разумные возвраты значений

Мы возвращаем самые странные значения вещей. Особенно это касается случаев связывания. Такие значения как -1, 687 или null. В свою очередь, для обработки этих значений пишется большое количество кода. На самом деле создатель null называет свое творение ошибкой стоимостью в миллиард долларов.

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

Правило трех

Подумайте о математической последовательности чисел. Я называю число 2 и спрашиваю: «Какое следующее?» Возможно, это 3 или 4, но может быть и 1, и 2,1. На самом деле вы понятия не имеете. Поэтому я называю еще одно число последовательности – 4 (теперь имеем 2, 4) и спрашиваю: «Какое следующее?» Вероятно, это 6 или 8, или 16. Опять же, несмотря на нашу растущую уверенность, на самом деле мы не знаем. Я выдаю еще одно число из серии, теперь это 2, 4, 16, и спрашиваю: «Какое следующее?» Имея три точки данных, мозг программиста видит последовательность квадратов и определяет, что следующее число – 256. Это правило трех.

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

Симметрия

И последний подход. Имеющий отношение к практически поэтической стороне читаемости – симметрии. Из «Implementation Patterns» Кента Бека:

Симметрия в коде это когда одна и та же идея выражается одинаково везде, где бы ни была.

Это легче сказать, чем сделать. Симметрия воплощает творческую сторону программирования. Она лежит в основе многих других подходов: именования, структуры, объектов, шаблонов. Симметрия может варьироваться в зависимости от языка, кодовой базы, команды. Поэтому на достижение симметрии может уйти вся жизнь. Кроме всего прочего, как только вы начинаете стремиться к симметрии в своем коде, в нем появляются более чистые формы и он быстрее принимает свои очертания.

Что такое двоичный и шестнадцатеричный коды

В этой статье объясним вам что такое двоичный и шестнадцатеричный коды.

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

Ранее, в статье «Введение в информатику. Алгоритмы», я кратко пояснил, что любая цифровая техника от простейшего устройства автоматики до компьютера оперирует всего двумя логическими состояниями «ноль» и «единица». Информация хранится в ячейках памяти, которые могут быть «долговременными», а могут быть оперативными – «кратковременными». К долговременным относятся постоянные запоминающие устройства (ПЗУ) на микросхемах, магнитных лентах и дисках не требующие во время хранения информации питающего напряжения (флеш-карта, дискета, или жёсткий диск компьютера). Оперативные ячейки памяти хранят информацию в течение времени, необходимого для проведения вычислений и требуют постоянного питающего напряжения (оперативное запоминающее устройство компьютера, кэш-память микропроцессора). Минимальная ячейка памяти способна хранить единицу информации — один бит, который может принимать значение равное нулю, либо единице. Восемь битов – это уже байт. Если один бит информации может принимать два значения — от 0 до 1, то сочетание нулей и единиц одного байта может принимать 256 значений — от 0 до 255.

Говорят: компьютер имеет 64-х разрядную шину данных. Это означает, что одновременно его информационная шина способна передавать 64 бита информации от одного функционального узла (устройства) компьютера к другому. 64 / 8 бит = 8 байт . Нет смысла говорить о том какой это большой, или маленький объём информации, ведь всё в мире относительно. Следующая единица информации это килобайт – одна тысяча байт. Далее мегабайт – один миллион байт. Далее терабайт – один миллиард байт.

Мой первый компьютер в 1990 году имел оперативную память равную 16 килобайт, а в качестве ПЗУ использовалась магнитофонная кассета, на которой файлы размером больше 20 килобайт записывать не рекомендовалось (сбоили), на всю кассету помещалось не более 400 килобайт. В 1997-м году у меня был компьютер с оперативной памятью 16 мегабайт и 4-х гигабайтным жёстким диском, в 2002-м году — компьютер с оперативной памятью 256 мегабайт и 80-ти гигабайтным жёстким диском, а в 2014-м году у меня компьютер с оперативной памятью 4 гигабайт и жёстким диском (ПЗУ) в один терабайт. Время бежит вперёд, техника тоже прогрессирует. Скоро и эти объёмы памяти будут смешными.

Вернёмся к битам и байтам и определимся что такое двоичный код. Один байт – это 8 бит. Биты в байте располагаются в следующем порядке:

Как и в десятичной системе исчисления, в двоичной системе также принято делить числа на разряды. В десятичном представлении чисел принято писать слева направо — старшие разряды, потом младшие. Взглянув на число, по количеству символов, мы сначала определяем, к какому порядку число относится (единицы, десятки, сотни и т.д.). Потом посмотрев на впереди стоящую цифру, определяем размерность старших разрядов. Потом последовательно переходим на младшие числа (разряды). Это удобно для нашего восприятия. В двоичной системе абсолютно всё также, старший бит (разряд) располагается слева, правее располагается бит (разряд) по младше, и т.д. до самого младшего — первого.

А теперь попробуем понять определение из учебника информатики:

«За единицу количества информации принимается такое количество информации, которое содержится в информационном сообщении, уменьшающем неопределённость знания в 2 раза. Такая единица названа битом»

Бит – это единица информации. Информационное сообщение может состоять из одного бита, двух битов, трёх битов и т.д. до бесконечности.

Один бит информации может принимать 2 значения: 0, или 1. Второй бит информации также может принимать 2 значения: 0, или 1. Но когда биты объединены в одно сообщение, то это сообщение может иметь 4 различных значения – комбинаций состояния битов (значение равное 0, 1, 2 или 3). Третий бит информации также может принимать 2 значения: 0, или 1. В сумме три отдельных бита могут принимать 6 значений, но объединённые в одно информационное сообщение, в зависимости от состояния битов (комбинаций нулей и единиц), само сообщение может принимать 8 различных значений (от 0 до 7). Четвертый бит информации также может принимать 2 значения: 0, или 1. В сумме четыре отдельных бита могут принимать 8 значений, но объединённые в одно информационное сообщение, в зависимости от состояния битов (комбинаций нулей и единиц), само сообщение может принимать 16 значений (от 0 до 15).

Обратите внимание, что добавление каждого нового бита увеличивает варианты состояний (информации) в 2 раза. Как было написано ранее, один бит хранит информацию от 0 до 1 (два логических состояния). Если мы будем использовать 2 бита, то мы увеличим размерность хранящейся информации вдвое – от 0 до 3 (четыре логических состояния). Если мы будем использовать 3 бита, то размерность информации увеличится ещё в два раза – от 0 до 7 (восемь логических состояний). Используя 4 бита, мы увеличиваем размерность информации ещё в два раза – от 0 до 15 (шестнадцать логических состояний). Использование каждого последующего бита увеличивает размерность информации вдвое. Поэтому на многих схемах разрядность битов подписывают 1, 2, 4, 8, 16, 32, 64, и т.д. умножая на 2. Для объяснения описанного, приведена таблица для 4-х разрядов (полубайта):

Чтобы записать любое десятичное число в двоичной системе, или наоборот перевести из двоичной в десятичную, можно воспользоваться следующей табличкой:

Эта табличка используется для размерностей чисел в пределах 2-х байт – от 0 до 65 535. Если Вам необходимо пересчитывать более крупные числа, тогда можете продолжить табличку самостоятельно, учитывая закономерность, что каждый следующий бит, имеет разрядность в два раза больше предыдущего.

Например: Вы хотите определить, как будет выглядеть двоичный код числа 12 345. Берём табличку, добавляем ещё одну строку, назовём её «Состояние битов» и начнём вычислять:

Вычисление производится от старшего бита, старшего байта.

Находим в таблице старший бит (разрядность которого максимальна), но меньше, или равна этому числу. В нашем случае восьмой бит старшего байта имеет разрядность 32 768, это больше числа 12 345, поэтому ставим в табличку 8-го бита «0», тоже самое произойдёт и с 7-м битом. Разрядность 6-го бита 8 192 меньше числа 12 345, поэтому ставим в табличку «1».

После этого делаем вычисление — от искомого числа отнимаем значение 6-го бита: 12 345 – 8 192 = 4 153. Проверяем разрядность следующего пятого бита: 4 096 меньше значения 4 153, тогда ставим «1», и повторяем отнимание: 4 153 – 4 096 = 57. Мы получили число 57. Разрядность 1-4 бита старшего байта и 7-8 бита младшего байта больше числа 57, поэтому ставим в табличку этих битов значения «0». Разрядность 6-го бита – 32 меньше числа 57, поэтому ставим в табличку цифру 1 и производим очередное отнимание: 57 – 32 = 25.

Проверяем разрядность 5-го бита – 16 меньше числа 25, поэтому ставим в табличку цифру 1 и производим очередное отнимание: 25 – 16 = 9.

Проверяем разрядность 4-го бита – 8 меньше числа 9, поэтому ставим в табличку цифру 1 и производим очередное отнимание: 9 – 8 = 1. Разрядность 3-го и 2-го бита младшего байта больше числа 1, поэтому ставим в табличку этих битов значения «0». Разрядность 1-го бита младшего байта равна числу 1, поэтому ставим в табличку этого бита значение «1».

Итак, мы получили двоичный код числа 12 345, который выглядит: 00110000 00111001.

Теперь наоборот, из двоичного кода получим десятичное число. Это намного проще.

Например: у нас имеется двоичное двухбайтное число: 10101010 10101010. Запишем его в нашу таблицу под соответствующие биты:

Нам остается теперь только сложить разрядности всех битов, значение которых равно единице: 2 + 8 + 32 + 128 + 512 + 2 048 + 8 192 + 32 768 = 43 690.

Что же такое шестнадцатеричный код? Это представление двоичного кода десятичными символами и буквами, необходимое разработчику программ для сокращённой записи двоичного кода. Компьютер на нём не работает, люди вычислений не делают. Четыре бита которые в двоичном коде имеют четыре цифры-символа, в шестнадцатеричном коде обозначаются всего лишь одним символом, один байт – двумя символами, два байта – четырьмя символами и т.д. по четыре бита на символ. Таким образом, один байт обозначается двумя символами шестнадцатеричного кода.

Соответствие символов шестнадцатеричного кода двоичному коду приведено в таблице:

Например: десятичное число 12 345, которое мы преобразовали ранее в двоичный код 00110000 00111001, в шестнадцатеричной форме выглядит: 30 39.

Двоичное число 10101010 10101010, которое мы преобразовали ранее в десятичное 43 690, в шестнадцатеричной форме выглядит так: АА АА.

Некоторые недоучки могут сказать: «Как, ведь компьютер только и работает, что в шестнадцатеричном коде!» Ничего подобного. По проводнику адресной шины компьютера, или шины данных может идти «единичка» в виде напряжения, или «нолик» в виде отсутствия напряжения. Это двоичный код. Но в неё никак не загнать символы шестнадцатеричного кода. Это, в отличие от наличия, или отсутствия напряжения, которое можно «потрогать языком» как на батарейке, всего лишь символы, без специальных программ понятные только человеку, а не машине.

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

На первом своём компьютере, я писал маленькие программки в Ассемблере, вперемешку с Бейсиком, переводя в шестнадцатеричный код, после чего сохранял на внешнем носителе – магнитофоне, и лишь потом смотрел, что же получилось. Ассемблер – это язык программирования, который максимально близок к машинному коду ЭВМ. Для его перевода в «цифру», достаточно наименования команд программирования заменить на шестнадцатеричный код, который с помощью прошитого ПЗУ автоматически переводится в двоичный код. В настоящее время программы пишут на языках высокого уровня, которые сам компьютер не понимает без программ интерпретаторов, компиляторов и прочих других «буферных» программ и подпрограмм, которые в свою очередь перекладывают программы в шестнадцатеричный код, а потом аппаратными средствами – в двоичный код. Это является фактором, значительно снижающим быстродействие выполнения программ, так как компьютер выполняет «дополнительные» операции требующие затраты времени, но развитие компьютерной техники в настоящее время с её высокими скоростями обработки информации и обмена позволяет это делать. Как пример, приведу свой сайт, который вы сейчас читаете.

Все странички своего сайта я пишу в xml-овских тегах, с лёгкостью понятных для любых браузеров интернет-пользователей. Мои страницы занимают мизерный объём памяти и быстро открываются. Задержки могут возникать только в моменты обращения к серверу с открытием рисунков и рекламных тизеров. А многие другие владельцы сайтов пишут свои странички, используя шаблоны WordPress. При том же объёме информации, что и у меня, объём их страниц и время открывания браузером значительно больше. В данном случае, WordPress выполняя роль программы-компилятора замедляет работу. Кроме того, он может создавать «ненужные» теги и символы, которые не только замедляют работу браузеров, но и увеличивают размер файлов. Впрочем, если у вас «быстрый» интернет и «быстроходная машина», этого замедления вы и не заметите. Абсолютно также с замедлением работают все программы от операционных систем, до компьютерных игр. А побеждает по скорости та, которая в результате компиляции ближе к машинным кодам — преобразована с языка программирования высокого уровня в машинные коды с минимальными «ненужными» командами.

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

Тимеркаев Борис — 68-летний доктор физико-математических наук, профессор из России. Он является заведующим кафедрой общей физики в Казанском национальном исследовательском техническом университете имени А. Н. ТУПОЛЕВА — КАИ

Цукерберг рекомендует:  Android - Как заменить стандартную звонилку на Android
Понравилась статья? Поделиться с друзьями:
Все языки программирования для начинающих