Ho letto " Clean Code " di Robert Martin per diventare un programmatore migliore. Sebbene finora nulla di tutto ciò sia stato davvero rivoluzionario, mi ha fatto riflettere diversamente sul modo in cui progetto applicazioni e scrivo codice.
C'è una parte del libro che non solo non sono d'accordo, ma non ha senso per me, in particolare per quanto riguarda le convenzioni di denominazione delle interfacce. Ecco il testo, preso direttamente dal libro. Ho audace l'aspetto di questo che trovo confuso e vorrei chiarimenti.
Preferisco lasciare le interfacce disadorno. L'I precedente, così comune nelle mazzette di oggi, è una distrazione nella migliore delle ipotesi e troppe informazioni nella peggiore. Non voglio che i miei utenti sappiano che sto consegnando loro un'interfaccia .
Forse è perché sono solo uno studente, o forse perché non ho mai fatto alcuna programmazione professionale o di gruppo, ma vorrei che l'utente sapesse che si tratta di un'interfaccia. C'è una grande differenza tra l'implementazione di un'interfaccia e l'estensione di una classe.
Quindi, la mia domanda si riduce a "Perché dovremmo nascondere il fatto che una parte del codice si aspetta un'interfaccia?"
modificare
In risposta a una risposta:
Se il tuo tipo è un'interfaccia o una classe è la tua attività, non l'attività di qualcuno che utilizza il tuo codice. Quindi non dovresti perdere i dettagli del tuo codice in questo codice di terze parti.
Perché non dovrei "trapelare" i dettagli se un determinato tipo è un'interfaccia o una classe in codice di terze parti? Non è importante per lo sviluppatore di terze parti che utilizza il mio codice sapere se implementeranno un'interfaccia o estenderanno una classe? Le differenze non sono così importanti come le sto immaginando di essere nella mia mente?
to know whether they will be implementing an interface or extending a class
: sì, ma la maggior parte degli utenti del tuo codice lo chiamerà, non lo implementerà o lo estenderà, e non gliene potrebbe fregare di che si tratta.