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