Я читав " Чистий код " Роберта Мартіна, щоб сподіватися, що став кращим програмістом. Хоча жоден з них поки що не був переломним, це змусило мене думати інакше про те, як я розробляю програми та пишуть код.
Є одна частина книги, з якою я не тільки не згоден, але й не має для мене сенсу, зокрема, стосовно конвенцій про іменування інтерфейсів. Ось текст, узятий безпосередньо з книги. Я підкреслив аспект цього, який мені здається заплутаним, і я хотів би пояснити його.
Я вважаю за краще залишати інтерфейси без нагляду. Попередній я, настільки поширений у сьогоднішніх спадщинах, - це відволікання в кращому випадку і занадто багато інформації в гіршому випадку. Я не хочу, щоб мої користувачі знали, що я передаю їм інтерфейс .
Можливо, це тому, що я лише студент, а може тому, що я ніколи не займався професійним чи командним програмуванням, але хотів би, щоб користувач знав, що це інтерфейс. Існує велика різниця між реалізацією інтерфейсу та розширенням класу.
Отже, моє запитання зводиться до "Чому ми повинні приховувати той факт, що якась частина коду очікує інтерфейс?"
Редагувати
У відповідь на відповідь:
Якщо ваш тип інтерфейсу або клас - це ваш бізнес, а не бізнес того, хто використовує ваш код. Тож не слід просочувати деталі свого коду в цьому третьому коді партії.
Чому я не повинен "просочувати" дані про те, чи є даний тип інтерфейсом чи класом до сторонніх кодів? Чи не важливо сторонній розробник, який використовує мій код, знати, чи будуть вони реалізовувати інтерфейс чи розширювати клас? Чи різниці просто не такі важливі, як я їх вигадую, щоб бути у мене на думці?
to know whether they will be implementing an interface or extending a class
: так, але більшість користувачів вашого коду буде називати його, а не реалізовувати його чи розширювати, і їм справді було неважливо, що це таке.