Domanda

Ho sviluppato un interprete in C ++ per il mio (esoterica, se si vuole) la programmazione lingua po 'di tempo. Una delle cose principali che ho notato:. Parto da un concetto flessibile, e l'ulteriore codice che (Tokenizer-> Parser-> Interprete) il meno flessibile l'intero sistema viene

Ad esempio: non ho implementare una funzione include in un primo momento, ma l'interprete era già installato e funzionante - ho avuto estrema difficoltà di attuazione ed era proprio come "patch qualcosa" in seguito. Il mio sistema aveva perso la flessibilità molto rapidamente.

  • Come posso imparare a tenere relativamente piccoli progetti C ++ come flessibile ed estensibile possibile durante lo sviluppo?
È stato utile?

Soluzione

  1. Definire la struttura del progetto prima di iniziare la codifica. Delineare i vostri principali obiettivi e pensare a come si può raggiungere questo obiettivo.

  2. Codice le intestazioni.

  3. Guardate se è possibile implementare ogni caratteristica di utilizzare questo insieme di interfacce

  4. Se no -> tornare a (2)

  5. Se sì -> file cpp codice

  6. Enjoy.

Naturalmente, questo non si applica ai progetti di grandi dimensioni davvero. Ma se il vostro progetto è modulare, non ci dovrebbero essere problemi a dividere il progetto in parti separate.

Altri suggerimenti

Se è necessario mantenere

  

progetti C ++ come flessibile ed estensibile possibile durante lo sviluppo

, allora non avete ottenuto un disciplinare di produzione, non si ha vero obiettivo e non c'è modo di definire un prodotto finito.

Per un prodotto commerciale questa è la situazione peggiore di essere in. Parafrasando un noto blogger (non ricordo chi) "non hai un prodotto fino a quando si definisce ciò che non si ha intenzione di fare."

Per i progetti personali questo potrebbe non essere un problema. Gesso fino a esperienza e ricordare per riferimento futuro. Refactor e andare avanti.

Non temere Evolution (refactoring).

Se ci sono molti di classe che si adattano un tema, creare una classe base comune.

Invece di codifica membri duri dati, utilizzare puntatori a una classe base astratta.
Ad esempio, invece di utilizzare uso std::ifstream std::istream.

Nel mio progetto, ho le classi astratte per leggere e scrivere. Classi che supportano la lettura e la scrittura di utilizzo queste interfacce. Posso passare i lettori specializzati a queste classi senza modificare il codice. Un lettore banca dati avrebbe ereditato dalla classe Reader di base, e quindi può essere utilizzato ovunque un lettore viene utilizzato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top