В последнее время я играюсь с функциональным программированием, и есть довольно хорошие трактовки на тему побочных эффектов, почему их нужно сдерживать и т. д. В проектах, где используется ООП, я ищу некоторые ресурсы, которые излагают некоторые стратегии для сведение к минимуму побочных эффектов и/или состояний.
Хорошим примером этого является книга Веб-службы RESTful, в которой описаны стратегии минимизации состояния в веб-приложении. Какие другие существуют?
Помните, что я не ищу еще одну книгу по аналитике ООП/паттернам проектирования (хотя хорошая инкапсуляция и слабая связанность помогают избежать побочных эффектов), а скорее ресурс, где сама тема посвящена состоянию/побочным эффектам.
Некоторые собранные ответы
- Программисты ООП, которые в основном заботятся о состоянии, делают это из-за параллелизма, поэтому прочитайте Java Concurrency на практике. [именно то, что я искал]
- Используйте TDD, чтобы сделать побочные эффекты более заметными [Мне нравится, например: чем больше ваши настройки, тем больше состояний вам нужно для запуска тестов = хорошее предупреждение]
- Разделение команд и запросов [Хорошая вещь, предотвращает побочный эффект изменения аргумента функции, что обычно сбивает с толку]
- Методы делают только одну вещь, возможно, используют описательные имена, если они изменяют состояние своего объекта, чтобы оно было простым и понятным.
- Сделать объекты неизменяемыми [Мне это очень нравится]
- Передавайте значения в качестве параметров, а не сохраняйте их в переменных-членах. [Я не связываю это; он загромождает прототип функции и активно не рекомендуется в «Чистом коде» и других книгах, хотя я признаю, что это помогает решить проблему с состоянием]
- Пересчитывайте значения вместо их сохранения и обновления [Мне это тоже очень нравится; в приложениях, над которыми я работаю, производительность не вызывает особого беспокойства]
- Точно так же не копируйте состояние, если можете этого избежать. Сделайте один объект ответственным за его хранение и разрешите другим получить к нему доступ. [Основной принцип ООП, хороший совет]