Снова и снова это случилось со мной: у нас есть класс CLS
с init
способом, как это:Не переписывать метод только для добавления одной строки кода?
init {
// do A
// do B
// do C
}
Теперь, в определенном случае, нам нужно сделать X
точно между B
и C
. Создание подкласса CLS
и переписывание всего метода init
с вставленным там X
не представляется мне хорошим решением (это противоположность DRY). Есть ли лучшее решение, которое мне не пришло в голову?
Пожалуйста, обратите внимание, что A
, B
и C
небольшие фрагменты кода делает маленькие хитрости, как настройки пользовательского интерфейса, так что, вероятно, не очень хорошая идея, чтобы поместить их в отдельных методах. Я в настоящее время кодирую в JavaScript, но я думаю, что этот вопрос относится и к другим PL.
Ницца. Но я не вижу способа доступа к локальным переменным 'init' внутри' doX'. Есть идеи по этому поводу? (передача в качестве параметров и 'return' ограничена, и вам необходимо обновить суперкласс для подкласса« каждая новая потребность ») – user3702014
@ user3702014 Вы можете передать соответствующие переменные doX, но вы не можете их модифицировать таким образом. Если у вас есть такая сложная функция, я бы рассмотрел возможность извлечь всю функциональность в новый класс (с полями, являющимися текущими локальными переменными). Если вы дадите нам больше возможностей, мы можем предложить решения, которые лучше всего соответствуют вашим потребностям –