как сделать код читабельным

Как сделать код читабельным

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

Зачем нам писать хороший код, а не просто производительный код?

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

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

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

Наконец, давайте рассмотрим конкретный пример.

Часть 1: Как определить плохой код?

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

Например, взглянем на этот код:

Скриншот плохой версии функции «traverseUpUntil»

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

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

Не совсем очевидно, что возвращается из-за неправильного имени переменной.

Часть 2: Давайте отрефакторим

Скриншот хорошей версии функции «traverseUpUntil»

Затем мы переходим к именам переменных:

Давайте попробуем прочитать: «Присвоить родительский узел родителя родителю, пока у родителя есть родительский узел, а функция условия не возвращает true». Уже гораздо понятнее.

Часто разработчики предпочитают использовать какую-то общую переменную ret (или returnValue ), но это довольно плохая практика. Если вы правильно назовёте свои возвращаемые переменные, становится очевидным то, что возвращается. Однако иногда функции могут быть длинными и сложными, что приводит к большой путанице. В этом случае я бы предложил разделить вашу функцию на несколько функций, и если она всё ещё слишком сложна, то, возможно, добавление комментариев может помочь.

Часть 3: Упрощение кода

Я просто убрал первую строку и заменил «parent» на «node». Таким образом, я пропустил ненужный шаг создания «parent» и перешёл прямо в цикл.

Но что насчёт имени переменной?

Хотя «node» не лучшее описание для этой переменной, оно удовлетворительное. Но давайте не будем останавливаться на этом, давайте переименуем её. Как насчёт «currentNode»?

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

Источник

Как сделать код читабельным

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

Зачем нам писать хороший код, а не просто производительный код?

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

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

Читайте также:  штрих код 023 какая страна

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

Наконец, давайте рассмотрим конкретный пример.

Часть 1: Как определить плохой код?

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

Например, взглянем на этот код:

Скриншот плохой версии функции «traverseUpUntil»

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

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

Не совсем очевидно, что возвращается из-за неправильного имени переменной.

Часть 2: Давайте отрефакторим

Скриншот хорошей версии функции «traverseUpUntil»

Затем мы переходим к именам переменных:

Давайте попробуем прочитать: «Присвоить родительский узел родителя родителю, пока у родителя есть родительский узел, а функция условия не возвращает true». Уже гораздо понятнее.

Часто разработчики предпочитают использовать какую-то общую переменную ret (или returnValue ), но это довольно плохая практика. Если вы правильно назовёте свои возвращаемые переменные, становится очевидным то, что возвращается. Однако иногда функции могут быть длинными и сложными, что приводит к большой путанице. В этом случае я бы предложил разделить вашу функцию на несколько функций, и если она всё ещё слишком сложна, то, возможно, добавление комментариев может помочь.

Часть 3: Упрощение кода

Я просто убрал первую строку и заменил «parent» на «node». Таким образом, я пропустил ненужный шаг создания «parent» и перешёл прямо в цикл.

Но что насчёт имени переменной?

Хотя «node» не лучшее описание для этой переменной, оно удовлетворительное. Но давайте не будем останавливаться на этом, давайте переименуем её. Как насчёт «currentNode»?

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

Источник

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

May 25, 2019 · 4 min read

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

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

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

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

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

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

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

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

Читайте также:  элвес мф пробить чек по коду товара

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Источник

Как сделать код читабельным

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

Зачем нам писать хороший код, а не просто производительный код?

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

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

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

Наконец, давайте рассмотрим конкретный пример.

Часть 1: Как определить плохой код?

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

Например, взглянем на этот код:

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

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

Не совсем очевидно, что возвращается из-за неправильного имени переменной.

Часть 2: Давайте отрефакторим

Затем мы переходим к именам переменных:

Давайте попробуем прочитать: «Присвоить родительский узел родителя родителю, пока у родителя есть родительский узел, а функция условия не возвращает true». Уже гораздо понятнее.

Часто разработчики предпочитают использовать какую-то общую переменную ret (или returnValue ), но это довольно плохая практика. Если вы правильно назовёте свои возвращаемые переменные, становится очевидным то, что возвращается. Однако иногда функции могут быть длинными и сложными, что приводит к большой путанице. В этом случае я бы предложил разделить вашу функцию на несколько функций, и если она всё ещё слишком сложна, то, возможно, добавление комментариев может помочь.

Читайте также:  europa universalis 4 коды на отношения

Часть 3: Упрощение кода

Я просто убрал первую строку и заменил «parent» на «node». Таким образом, я пропустил ненужный шаг создания «parent» и перешёл прямо в цикл.

Но что насчёт имени переменной?

Хотя «node» не лучшее описание для этой переменной, оно удовлетворительное. Но давайте не будем останавливаться на этом, давайте переименуем её. Как насчёт «currentNode»?

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

Источник

Как сделать код читабельным

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

Зачем нам писать хороший код, а не просто производительный код?

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

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

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

Наконец, давайте рассмотрим конкретный пример.

Часть 1: Как определить плохой код?

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

Например, взглянем на этот код:

Скриншот плохой версии функции «traverseUpUntil»

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

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

Не совсем очевидно, что возвращается из-за неправильного имени переменной.

Часть 2: Давайте отрефакторим

Скриншот хорошей версии функции «traverseUpUntil»

Затем мы переходим к именам переменных:

Давайте попробуем прочитать: «Присвоить родительский узел родителя родителю, пока у родителя есть родительский узел, а функция условия не возвращает true». Уже гораздо понятнее.

Часто разработчики предпочитают использовать какую-то общую переменную ret (или returnValue ), но это довольно плохая практика. Если вы правильно назовёте свои возвращаемые переменные, становится очевидным то, что возвращается. Однако иногда функции могут быть длинными и сложными, что приводит к большой путанице. В этом случае я бы предложил разделить вашу функцию на несколько функций, и если она всё ещё слишком сложна, то, возможно, добавление комментариев может помочь.

Часть 3: Упрощение кода

Я просто убрал первую строку и заменил «parent» на «node». Таким образом, я пропустил ненужный шаг создания «parent» и перешёл прямо в цикл.

Но что насчёт имени переменной?

Хотя «node» не лучшее описание для этой переменной, оно удовлетворительное. Но давайте не будем останавливаться на этом, давайте переименуем её. Как насчёт «currentNode»?

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

Источник

Онлайн платформа