Справочник программиста-практика
Я написал книгу Принципы и шаблоны чистого кода: руководство программиста, которая доступна на Amazon.
Принципы и шаблоны чистого кода – это одно из самых полных и понятных руководств для разработчиков программного обеспечения, помогающее им писать чистый код каждый день. Книга наполнена принципами и шаблонами, которые помогают разработчикам, от новичков и юниоров до пожилых людей и экспертов, писать более чистый код. Принципы и шаблоны, представленные в книге, сопровождаются реалистичными, но простыми примерами, чтобы помочь читателю лучше их понять. Примеры написаны на Java, JavaScript/TypeScript и C++. Большинство примеров напрямую применимы и к другим языкам программирования. Читатель должен иметь базовые знания одного объектно-ориентированного языка программирования, чтобы получить полную пользу от этой книги.
Книга разделена на десять глав:
- Принципы архитектурного проектирования
- Принципы объектно-ориентированного проектирования
- Принципы кодирования
- Принципы тестирования
- Принципы безопасности
- Принципы разработки API
- Типы баз данных и связанные с ними принципы
- Принципы параллельного программирования
- Принципы работы в команде
- 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)