Добавление параметра в интерфейс

Кнюпель
Дата: 25.06.2018 04:29:23
Скажем есть интерфейс:

public interface IStrategy
{
  void DoSomething(int a);
}


Часть классов используют эту реализацию. Теперь появился класс, которому надо этот-же функционал, но для его реализации нужен еще один параметр:

void DoSomething(int a, int b);


Как правильно в этом случае поступить? Добавить параметер в исходный интерфейс попутно изменив все ссылки на него, типа такого:

void DoSomething(int a, int b = null);


или создать вообще новый интерфейс?
kealon(Ruslan)
Дата: 25.06.2018 08:34:43
Кнюпель,
есть 3 варианта:
  • добавить параметр
  • добавить метод в текущий интерфейс
  • добавить интерфейс

    если вы "хакаете" и время критично, то выберете с самыми минимальными изменениями
    если занимаетесь рефакторингом, то надо думать, особенно над тем нужно ли оно вообще
  • hVostt
    Дата: 25.06.2018 08:43:13
    Кнюпель,

    Если параметры имеют тенденцию быть расширяемыми, значит параметры оформить в единый класс, который может иметь наследников с дополнительными полями.

    DoSomething(SomethingOptionsBase options);
    


    А так, выглядит, как неудачно спроектированный интерфейс.