Википедия говорит
«программные объекты (классы, модули, функции и т. д.) должны быть открыты для расширения, но закрыты для модификации»
Слово функции привлекло мое внимание, и теперь я задаюсь вопросом, можем ли мы предположить, что создание перегрузки для метода может рассматриваться как пример принципа Open / closed или нет?
Позвольте мне объяснить пример. Учтите, что у вас есть метод на уровне сервиса, который используется почти в 1000 местах. Метод получает userId и определяет, является ли пользователь администратором или нет:
bool IsAdmin(userId)
Теперь учтите, что где-то необходимо определить, является ли пользователь администратором или нет, основываясь на имени пользователя, а не userId. Если мы изменим сигнатуру вышеупомянутого метода, то мы разбили код на 1000 мест (функции должны быть закрыты для модификации). Таким образом, мы можем создать перегрузку, чтобы получить имя пользователя, найти userId на основе имени пользователя и оригинальный метод:
public bool IsAdmin(string username)
{
int userId = UserManager.GetUser(username).Id;
return IsAdmin(userId);
}
Таким образом, мы расширили нашу функцию, создав для нее перегрузку (функции должны быть открыты для расширения).
Это открытый / закрытый принцип?