Я использовал эти 10 приемов, чтобы уменьшить 80% ошибок
Я использовал эти 10 приемов, чтобы уменьшить 80% ошибок

Привет всем, я Су Сан, снова встречаюсь с вами.

Предисловие

Для большинства программистов основное время работы — разработка и исправление ошибок.

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

Итак, есть ли способ уменьшить количество ошибок, обеспечить качество кода и повысить эффективность работы?

Ответ: да.

Если мы сможем это сделать, разве не было бы здорово, если бы у нас было больше времени ловить рыбу и заниматься тем, что нам нравится?

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

1 Найдите полезные инструменты разработки

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

Это не только может повысить эффективность разработки, но, что более важно, поможет нам уменьшить количество ошибок.

Несколько хороших инструментов разработки,например:ideaсередина,Не импортируется для пакета,Это будет в соответствующем классеОтмечено красным

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

2. Знакомство с плагином Findbugs

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

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

Вы можете установить плагин FindBugs прямо в idea:

Затем вы можете выбрать, какой код анализировать:

Результаты анализа:

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

Количество детекторов Findbugs увеличилось до более чем 300, которые делятся на разные типы. Распространенные типы следующие:

  • Корректность: проблемы этой классификации могут привести к ошибкам при определенных обстоятельствах, например, при неправильном приведении типов и т. д.
  • Плохая практика: код этой категории нарушает признанные стандарты передовой практики. Например, класс реализует метод равенства, но не реализует метод hashCode и т. д.
  • Многопоточная корректность: обратите внимание на проблемы синхронизации и многопоточности.
  • Производительность: потенциальные проблемы с производительностью.
  • Безопасность: Связано с безопасностью.
  • Хитрость: Команда Findbugs считает, что этот тип проблемного кода с высокой вероятностью может вызвать ошибки.

3 Представляем плагин CheckStyle

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

В настоящее время спецификации разработки кода Alibaba в основном используются в Китае. Мы можем напрямую загрузить плагин через idea:

Если вы хотите обнаружить файл:

Вы можете увидеть результаты:

Сканирование протокола Alibaba включает в себя:

  1. спецификация ООП
  2. Параллельная обработка
  3. контрольное заявление
  4. соглашение об именах
  5. постоянное определение
  6. Спецификации аннотаций

Руководство Alibaba по кодированию Java фокусируется на спецификациях кода Java и призвано облегчить и ускорить разработчикам стандартизацию форматов кода.

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

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

4 Сканируйте код с помощью SonarQube

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

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

SonarQube анализирует проекты с точки зрения надежности, безопасности, ремонтопригодности, покрытия, уровня дублирования и т. д. посредством настроенных правил анализа кода. Уровень риска разделен на 5 уровней от A до E;

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

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

5 Сканируйте код с помощью Fortify

Fortify — широко используемый инструмент статического тестирования безопасности приложений (SAST).

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

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

Основные возможности Fortify:

  • Статический анализ кода: выполняет статический анализ исходного кода.,Определите фрагменты кода, которые могут привести к проблемам безопасности. Он может распознавать многие виды охранных лазейок.,нравиться SQL Внедрение, межсайтовый скриптинг (XSS), переполнение буфера и т. д.
  • Анализ потока данных: он не просто анализирует один файл кода.,Также проследите поток данных приложения. Это помогает находить более сложные лазейки.,Например, путь распространения непроверенных пользовательских данных в приложении.
  • Предложения по исправлению лазейки: При обнаружении потенциально безопасной лазейки для усовершенствованного персонала предоставляются предложения по исправлению.
  • Поддержка интеграции: работает с несколькими инструментами непрерывной интеграции (CI), такими как Jenkins) и инструменты управления жизненным циклом приложений (ALM), такие как Jira) интеграция,Включите автоматическое сканирование кода илазейкиотслеживать。
  • Отчетность и метрики: предоставляет широкие возможности отчетности.,Помогите команде понять состояние безопасности и тенденции проекта.

Результаты сканирования кода с помощью Fortify:

Обычно рекомендуется интегрировать его с Jenkins и регулярно сканировать проблемы безопасности кода в тестовой ветке проекта.

6. Написание модульных тестов

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

Ответ: да.

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

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

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

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

Это может помочь вам уменьшить количество ошибок.

7 Функция самотестирования

Функция самотестирования является основным требованием для программистов.

Однако у некоторых программистов после самотестирования все еще остается много ОШИБОК, а у некоторых после самотестирования их очень мало. В чем причина?

Возможно, некоторые люди более небрежны, а некоторые более осторожны.

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

Некоторым людям нравится разрабатывать все связанные функции, а затем тестировать их вместе.

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

Этот подход предполагает прямое интеграционное тестирование без модульного тестирования.

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

Более рекомендуемый способ самооценки: шаг за шагом.

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

Это позволяет писать код с меньшим количеством ошибок.

8 Автоматизированное тестирование

Некоторые компании внедрили возможности автоматического тестирования.

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

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

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

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

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

Автоматизированное тестирование может эффективно уменьшить количество корректировок основных процессов или ошибок при рефакторинге кода.

9 проверок кода

Многие компании имеют механизмы проверки кода.

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

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

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

Некоторые крупные зарубежные производители,использоватьпарное программированиережим。

Два человека А и Б в одной группе разрабатывают вместе. После разработки А повторно просматривает код Б, а Б просматривает код А.

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

Может эффективно уменьшить некоторые ошибки.

10 Узнайте больше об ошибках других людей и поделитесь ими

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

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

В Интернете есть много блоггеров, которые написали о своих ошибках. Вы можете поискать в Интернете.

Вы также можете посмотреть мое собственное резюме《100 самых частых вопросов, которые задают программисты》,Внутри очень подробные записи,Много полезной информации,Все равно очень стоит посмотреть.

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

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода