Когда именно метод имеет побочные эффекты?
Как я всегда понимал, любое изменение состояния программ (или что-либо, связанное с IO) является побочным эффектом. Не имеет значения, происходит ли изменение в глобальной переменной или в закрытом поле объекта, к которому вызывается метод. Отсюда следует, что все методы, которые ничего не возвращают, либо вообще ничего не делают, либо имеют побочный эффект.
Мое замешательство происходит от одного из преподавателей нашего университета (который еще студент и, следовательно, еще не всеведущий;)), говорящего мне, что сеттеры не имеют побочных эффектов.