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

Что такое чистый код? 

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

С чистым кодом задачи легко решаются. Каждое решение проблемы начинается с алгоритма. Алгоритм — это план, переведенный в шаблон проектирования. Эффективным шаблоном является Page Object Model, который определяет каждую веб-страницу как файл класса. 

Целью файла класса является инкапсуляция данных и поведения модели. Page Object Model инкапсулирует данные, создав репозиторий для хранения полей. Он моделирует поведение, определяя действия для этих полей. Например, на изображениях ниже показана страница поиска Google, 2 файла классов и страница результатов Google. 

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

Файл 1-го класса представляет собой шаблон проектирования Page Object Model. 

  • searchField и searchButton инкапсулированы с помощью модификатора частного доступа 

  • setSearchField и clickSearchButton моделируют поведение, выполняемое на веб-странице. Метод setSearchField() выполняет действие, позволяющее пользователю вводить текст. В этом файле класса метод clickSearchButton() выполняет действие нажатия кнопки поиска Google. 

Файл второго класса служит в качестве тестового файла. Он проверяет домашнюю страницу Google. 

  • Первый шаг вызывает метод setSearchField() и устанавливает поле поиска в “ACCELQ Automation Tool - Web и API Automation” 

  • Второй шаг вызывает метод clickSearchButton() и нажимает кнопку поиска Google 

После нажатия на кнопку поиска Google, на следующей странице отображаются результаты для ACCELQ: 

Зачем нужен чистый код? 

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

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

  • Насколько легко будет поддерживать этот код? 

  • Сложно ли обновлять этот код в случае изменения тестируемого приложения? 

  • Может ли другой инженер просмотреть этот код и разобраться в сценарии тестирования? 

Советы по написанию чистого кода 

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

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

Что означает слово totpt? Это переменная для общей суммы цены и налога. Ценное описательное название для того же упоминания - totalPriceTax. 

Код гораздо легче читать, если мы пишем полное имя. Нет смысла писать полное имя во время объявления, так как в IDE есть встроенная система завершения кода. Переменные должны точно определять, какие данные они хранят. Имя, которое мы определяем для классов и методов/функций, должно раскрывать их назначение, выполняя две задачи: 

  1. Что оно делает в программе? 

  2. Как оно будет применяться в программе? 

Конвенция о написании констант, классов и методов/функций включает в себя следующее: 

  • Константы должны быть написаны в верхнем регистре, слова разделяются подчеркиванием (_). 

  • Классы должны быть существительными.

  • Методы/функции должны быть глаголами. 

Описательное имя является подробным и конкретным. Например, в приложении есть названия продуктов и имена клиентов. Конкретное имя метода/функции - getProductName(), а не getName(). Метод getName() не является конкретным или подробным, потому что трудно понять, извлекает ли код продукты или клиентов. 

Реализуйте одно действие для каждого метода/функции 

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

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

Если метод/функция содержит 'And' в своем имени, то, вероятно, лучше всего сократить метод/функцию, чтобы они выполняли свою собственную задачу. Однако есть исключение для удобного метода/функции. Удобные методы/функции достигают одной цели, но содержат более одного шага. 

В качестве примера можно привести вход в приложение. Он выполняет только одно действие, но включает в себя ввод имени пользователя, ввод пароля и нажатие кнопки входа. Все три действия могут быть объединены в logIntoApplication() и/или выделены в отдельные шаги. 

Принцип DRY  

DRY — это аббревиатура от Don't Repeat Yourself. Если в нашем проекте есть один и тот же код в разных местах, то мы можем рассмотреть возможность создания метода/функции для этого кода. Разработка метода/функции помогает нашему коду стать многократно используемым и избежать повторений.

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

Рефакторинг и удаление ненужного кода 

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

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

Пишите хорошие комментарии 

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

Если мы пишем чистый код, то код должен говорить сам за себя. Он объясняет, почему код был написан, чтобы пролить свет на его замысел. Примером уместного комментария может служить объяснение стороннего API разработчика, чтобы вы и ваша команда могли получить разъяснения. Вот пример некоторых неактуальных комментариев: 

  • Введите имя пользователя 

  • Введите пароль 

  • Нажмите кнопку входа 

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

Комментарии (7)


  1. askolo4ek
    18.04.2023 13:08
    +1

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


    1. VladimirFarshatov
      18.04.2023 13:08

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


      1. askolo4ek
        18.04.2023 13:08
        +1

        А ещё в "Чистом коде" дядька говорил, что надо выделять 4 строчки на функцию. И вот спрашивается, как такое сделать с таким запросом)) Загадка от Жака Фреско


        1. VladimirFarshatov
          18.04.2023 13:08

          А ещё три года назад, когда взялся за Go, слышал что "Компилятор все простое заинлайнит".. тестирование однако показало, что инлайнит он не более сложности в 80 каких-то своих попугаев, что часто менее 3-х операторов, даже если функция вызывается однократно! ;)

          "Если на клетке со слоном прочтешь надпись Буйвол, не верь глазам своим" (с) Козьма Прутков.


          1. gev
            18.04.2023 13:08

            возьмите, например, хаскель, он все заинлайнит и не только =)


            1. VladimirFarshatov
              18.04.2023 13:08

              Может быть, но не сейчас. Пока что тут "кровавый энтерпрайз на Го".


  1. SergeyTatevosyan
    18.04.2023 13:08

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