Documentazione del mio codice utilizzando interfacce di modelli di progettazione generici

0

Sfondo

Ho pensato di documentare i modelli di progettazione nel nostro codice impostando le interfacce per i modelli di progettazione comuni in modo che quando le persone leggono il mio codice sia chiaro che sto usando un modello di progettazione.

Lo farei creando un progetto, nella nostra soluzione, chiamato Design Patterns, quindi era chiaro che doveva essere una terminologia comune, al contrario di business / organizzazione specifica. Forse anche trasformandolo in un pacchetto open source per distinguerlo ulteriormente dalla logica di business nel nostro progetto.

Il progetto consisterebbe in sole interfacce per tutte le classi utilizzate per diversi modelli di progettazione, che sarebbero estese / implementate quando si implementa un modello.

Domande

Ci sono problemi funzionali nelle interfacce di piegatura in uno strumento per documentare qualcosa che non è intrinsecamente funzionante?

In altre parole, quali sono le conseguenze dell'utilizzo di un'interfaccia come strumento di documentazione, in cui l'interfaccia è strettamente superficiale?

A meno che le prime due domande non presentino problemi, utilizzeresti questo "strumento" con schemi di progettazione comuni?

Riesci a pensare a qualche motivo per non farlo?

    
posta Devin Gleason Lambert 22.01.2018 - 19:50
fonte

3 risposte

8

Can you think of any reasons why you would not do this?

Questa è una pessima idea perché è retrocedere in tutti i modi. Il tuo problema determina la tua soluzione, non i modelli estratti da un libro. Le tue classi descrivono ciò che fanno , non quale riquadro rappresentano in un diagramma. La tua implementazione potrebbe seguire uno schema, ma verranno sempre adattati al problema in questione. E dal momento che le varie implementazioni possono variare, provare a forzarle in un'interfaccia standardizzata è sconsiderato.

    
risposta data 22.01.2018 - 21:06
fonte
3

Questo non è possibile. Un modello di progettazione non può essere catturato in un'interfaccia o in una libreria. Per citare wikipedia :

It is not a finished design that can be transformed directly into source or machine code. It is a description or template for how to solve a problem that can be used in many different situations.

Un tipico esempio di modello di progettazione è Pattern adattatore . L'intento del modello dell'adattatore è di convertire un'interfaccia in un'altra interfaccia. Come potrebbe quel modello essere rappresentato come un'interfaccia stessa? Non è possibile.

Se un pattern può essere catturato in una libreria, non sarebbe un pattern. Sarebbe solo un componente riutilizzabile come qualsiasi altro.

Se vuoi documentare che una classe è un adattatore, lo chiami esplicitamente FooAdapter , o scrivi nei commenti di origine che si tratta di un adattatore.

    
risposta data 22.01.2018 - 22:17
fonte
-2

Un problema che ho con una soluzione alternativa, incluso lo schema di progettazione nel nome. EG WidgetFactory, CutCommand, PasteCommand.

Questo è FactoryPattern, è il nome del modello di progettazione generale, e di tutti i membri in gioco?

Ad esempio:

L'Abstract Factory Pattern ha i seguenti membri, AbstractFactory, ConcreteFactory, AbstractProduct, ConcreteProduct.

Il modello di comando ha i seguenti membri, Comando, ConcreteCommand, Invoker, Receiver.

Il problema qui è che se sei abbastanza fortunato da conoscere gli schemi di progettazione, è meno probabile che riconoscerai i nomi dei componenti che costituiscono quel modello di progettazione. Inoltre, se uno dei vantaggi dell'uso di modelli di progettazione è la maggiore riconoscibilità, ritengo che l'utilizzo di questo metodo non favorisca.

    
risposta data 22.01.2018 - 22:00
fonte