Используя исключительно приведенный вами пример, нет никакой разницы между этими двумя методологиями. Вы можете экстраполировать, чтобы найти различия, но на самом деле их нет.
Я предполагаю, что вы пытаетесь реализовать класс без предварительного его проектирования. Поскольку картина не полная, нет очевидных причин выбирать одну методологию из другой.
Когда вы начнете конкретизировать, что именно вы хотите сделать, вы, вероятно, обнаружите, что первый метод привязывает подпрограмму фильтрации к классу, тогда как второй метод поощряет отделение подпрограммы от класса.
Способ первый
- Работает на побочные эффекты
- Перезаписывает исходные данные
- Не может быть повторно использован для других данных
Второй способ
- В то время как метод 1 можно легко изменить, чтобы он помнил, что он уже выполнил фильтрацию, метод 2 будет особенно трудным, если попытаться сохранить его абстрактным
- Из-за своей абстракции
filterResults
больше не является логическим именем, а, скорее, чем-то вроде applyXyzFilter
, что трудно оправдать в классе