Справочник программиста-практика

Я написал книгу Принципы и шаблоны чистого кода: руководство программиста, которая доступна на Amazon.

Принципы и шаблоны чистого кода – это одно из самых полных и понятных руководств для разработчиков программного обеспечения, помогающее им писать чистый код каждый день. Книга наполнена принципами и шаблонами, которые помогают разработчикам, от новичков и юниоров до пожилых людей и экспертов, писать более чистый код. Принципы и шаблоны, представленные в книге, сопровождаются реалистичными, но простыми примерами, чтобы помочь читателю лучше их понять. Примеры написаны на Java, JavaScript/TypeScript и C++. Большинство примеров напрямую применимы и к другим языкам программирования. Читатель должен иметь базовые знания одного объектно-ориентированного языка программирования, чтобы получить полную пользу от этой книги.

Книга разделена на десять глав:

  1. Принципы архитектурного проектирования
  2. Принципы объектно-ориентированного проектирования
  3. Принципы кодирования
  4. Принципы тестирования
  5. Принципы безопасности
  6. Принципы разработки API
  7. Типы баз данных и связанные с ними принципы
  8. Принципы параллельного программирования
  9. Принципы работы в команде
  10. DevSecOps

Прочитав эту книгу, вы узнаете следующее и многое другое:

  • Как проектировать современные облачные микросервисы
  • Что такое микросервисы автопилота
  • Что такое источник событий, CQRS, распределенные транзакции, шаблон оркестровки саги и шаблон хореографии саги
  • Каковы пять принципов SOLID и как их использовать в реальном коде
  • Что такое 25 шаблонов проектирования и как их использовать
  • Что такое шаблон MVC и чем MVP и MVVM отличаются друг от друга
  • Как добиться чистого дизайна для микросервиса
  • Зачем и как использовать внедрение зависимостей
  • Подробные инструкции с конкретными примерами о том, как единообразно именовать различные объекты программного обеспечения, такие как классы, функции и переменные.
  • Почему вы должны предпочесть композицию наследованию
  • Как разделить программную систему на домены с помощью доменно-ориентированного дизайна
  • Как организовать репозиторий исходного кода
  • Как организовать код в каталоги
  • Конкретные способы избежать написания комментариев и провести рефакторинг комментариев
  • Какие наиболее распространенные проблемы обнаруживают статические анализаторы кода и как их исправить
  • Наиболее важные методы рефакторинга для повседневного использования
  • Почему вы должны использовать язык со статической типизацией
  • Как правильно обрабатывать ошибки и исключения
  • Как не забыть обрабатывать ошибки и исключения
  • Почему вы никогда не должны передавать или возвращать нулевое значение
  • Как эффективно избежать случайных ошибок
  • Что следует помнить при использовании поиска Google для получения ответов
  • Когда и как оптимизировать код
  • TDD, модульное тестирование, имитация, интеграционное тестирование, E2E-тестирование и нефункциональное тестирование
  • Что такое моделирование угроз и как его проводить
  • Аутентификация и авторизация с использованием OpenID Connect и OAuth2
  • Какие основные функции безопасности необходимо реализовать в приложении
  • Как разрабатывать API с использованием таких технологий, как JSON-RPC, REST, GraphQL, SSE, WebSocket, gRPC и сервисы, управляемые событиями.
  • Когда и как использовать реляционную базу данных, базу данных документов, хранилище ключей и значений или базу данных с широким столбцом
  • Как избежать атак SQL-инъекций с использованием ORM или параметризованных SQL-запросов
  • Когда использовать многопоточность или параллельные алгоритмы и как обеспечить потокобезопасность
  • Каких принципов придерживаться при работе в команде разработчиков программного обеспечения
  • Что такое DevOps, SecOps и непрерывная интеграция (CI), а также в чем разница между непрерывной доставкой (CD) и непрерывным развертыванием (CD)