«Десять программистов» — хорошая привычка писать на JAVA

Java спецификация кода
«Десять программистов» — хорошая привычка писать на JAVA

"Это 4-й день моего участия в ноябрьском испытании обновлений, ознакомьтесь с подробностями события:Вызов последнего обновления 2021 г.".

предисловие

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

спецификация кода

  • После написания кода проверьте себя
  • Входные параметры метода максимально проверяются
  • Для сложной логики кода добавьте четкие комментарии
  • После использования потока ресурсов ввода-вывода его необходимо закрыть
  • Код предпринимает шаги, чтобы избежать ошибок во время выполнения (таких как переполнение границ массива, деление на ноль и т. д.).
  • Старайтесь не выполнять удаленные вызовы или операции с базой данных в цикле и отдавать приоритет пакетам.
  • Получите свойства объекта, сначала определите, является ли объект пустым
  • Если ключ в коллекции Set или коллекции Map является настраиваемым объектом, переопределите методы equals и hashCode объекта.
  • 避免使用双括号New Person{{setName("xxx")}} используется для создания экземпляров объектов. Хотя этот метод является кратким, он будет генерировать анонимные внутренние классы, которые легко могут вызвать утечку памяти.
  • Не пишите сложные выражения в условных суждениях
  • Использование условного суждениязаявление охраны, для повышения удобочитаемости и надежности кода
  • При использовании метода equals() константа (с определенным значением) ставится первой
  • Spring официально рекомендует использовать构造器注入
  • Старайтесь не использовать try-catch в цикле, он должен быть размещен в самом внешнем слое.
  • Константы объявляются static final и называются в верхнем регистре.
  • Не создавайте неиспользуемые объекты, не импортируйте неиспользуемые классы
  • Не приводить к примитивным типам данных вне области видимости

Оптимизация кода

  • Попробуйте указать модификаторы final для классов, методов и переменных.
  • Максимально возможное повторное использование объектов
  • По возможности используйте локальные переменные
  • Минимизируйте двойной подсчет переменных
  • Попробуйте использовать стратегию ленивой загрузки
  • Если длину содержимого массива и коллекции можно оценить, длину следует указать при создании
  • При копировании больших объемов данных используйте System.arraycopy()
  • Умножение и деление с использованием операций сдвига
  • Массивы имеют приоритет перед списками
  • Попробуйте использовать синглтоны там, где это уместно.
  • Старайтесь избегать использования статических переменных
  • Старайтесь избегать использования отражения
  • использовать как можно больше池化技术(пул соединений с базой данных, пул потоков)
  • Операции ввода-вывода с использованием буферизованных входных и выходных потоков
  • Не используйте слишком много параметров в общедоступных методах.
  • Используйте наиболее эффективный способ обхода карты (рекомендуется использовать обход entrySet())

спецификация интерфейса

  • Интерфейсы должны учитывать идемпотентность
  • Входные параметры интерфейса необходимо проверить, рекомендуется использовать фреймворк проверки @valid или @validated.
  • Параметр интерфейса не может быть значением перечисления или любым объектом pojo, содержащим значение перечисления.
  • При модификации старого интерфейса учитывайте совместимость интерфейса
  • При вызове стороннего интерфейса необходимо учитывать обработку исключений, безопасность и повторные попытки с течением времени.

параллельное программирование

  • В случае многопоточности рассмотрим линейную задачу безопасности
  • После написания кода подумайте, что происходит при многопоточном выполнении, и обратите внимание на проблему параллелизма и согласованности.
  • Многопоточный асинхронный отдает приоритет соответствующему пулу потоков вместо нового потока и учитывает, изолирован ли пул потоков.
  • использоватьThreadPoolExecutor构造器创建线程池, чтобы избежать создания пулов потоков с использованием статических методов Executors
  • Попробуйте синхронизировать блоки кода при использовании синхронизированных
  • Минимизируйте область блокировки при использовании блокировки

Кэш (редис)

  • При использовании кеша учитывайте согласованность между кешем и БД.
  • Учитывайте проникновение в кеш, лавину кеша, поломку кеша и проблемы с горячими точками кеша.
  • Избегайте использования функции транзакций redis
  • Использование в Интернете запрещеноkeys, flushhall, flushdb и т. д., отключите команду через механизм переименования redis или используйте метод сканирования для прогрессивной обработки
  • Используйте команды пакетной обработки для повышения эффективности
  • Отклонить большой ключ (разделить ключ, использовать соответствующий тип данных)
  • Контролировать жизненный цикл ключа (децентрализованная настройка срока действия)
  • Дизайн имени ключа должен быть читабельным, управляемым, кратким и не должен содержать специальных символов.
  • Установите соответствующую стратегию вывода из эксплуатации памяти

база данных

  • После того, как вручную напишете SQL бизнес-кода, отнесите его в базу данных и запустите, а также объясните план выполнения.
  • Учитывать проблему задержки master-slave базы данных (при необходимости принудительно читать базу данных master)
  • Избегайте выполнения операций с базой данных в циклах