Я использовал эти 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
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose