Я читал « Чистый код » Роберта Мартина, чтобы, надеюсь, стать лучшим программистом. Хотя до сих пор ни один из них не был действительно новаторским, это заставило меня по-другому думать о том, как я проектирую приложения и пишу код.
Есть одна часть книги, с которой я не только не согласен, но и не имеет смысла, особенно в отношении соглашений об именах интерфейсов. Вот текст, взятый прямо из книги. Я обдумал этот аспект, который меня смущает, и хотел бы получить разъяснения.
Я предпочитаю оставлять интерфейсы без украшений. Предыдущее «я», столь распространенное в сегодняшних устаревших пачках, в лучшем случае отвлекает, а в худшем - слишком много информации. Я не хочу, чтобы мои пользователи знали, что я передаю им интерфейс .
Возможно, это потому, что я всего лишь студент, или, может быть, потому что я никогда не занимался профессиональным или командным программированием, но я бы хотел, чтобы пользователь знал, что это интерфейс. Существует большая разница между реализацией интерфейса и расширением класса.
Итак, мой вопрос сводится к следующему: «Почему мы должны скрывать тот факт, что некоторая часть кода ожидает интерфейс?»
редактировать
В ответ на ответ:
Если ваш тип - это интерфейс или класс - это ваше дело, а не бизнес того, кто использует ваш код. Так что вы не должны пропускать детали своего кода в этот сторонний код.
Почему я не должен «утекать» детали того, является ли данный тип интерфейсом или классом для стороннего кода? Разве не важно, чтобы сторонний разработчик, использующий мой код, знал, будут ли они реализовывать интерфейс или расширять класс? Разве различия не так важны, как я их представляю?
to know whether they will be implementing an interface or extending a class
: да, но большинство пользователей вашего кода будут называть его, а не реализовывать или расширять его, и им действительно было все равно, что это.