Question

J'ai développé un interprète en langage C ++ pour mon (ésotérique, si vous voulez) langage de programmation un certain temps. L'une des principales choses que je l'ai remarqué. Je commence par un concept flexible et le plus code I (Tokenizer-> Parser-> Interprète) moins souple le système obtient

Par exemple: Je n'ai pas mettre en œuvre une fonction include au début, mais l'interprète était déjà en marche - j'ai eu des difficultés extrêmes de mise en œuvre et il était comme « patcher quelque chose » plus tard. Mon système avait perdu la flexibilité très rapidement.

  • Comment puis-je apprendre à garder relativement petits projets C ++ comme flexible et extensible que possible au cours du développement?
Était-ce utile?

La solution

  1. Définir la structure du projet avant de commencer à coder. Décrivez vos principaux objectifs et de réfléchir à la façon dont vous pouvez y parvenir.

  2. Coder les en-têtes.

  3. Regardez s'il est possible de mettre en œuvre toutes les fonctionnalités en utilisant cet ensemble d'interfaces

  4. Si non -> revenir à (2)

  5. Si oui -> Code fichiers .cpp

  6. Profitez.

Bien sûr, cela ne concerne pas les projets vraiment grands. Mais si votre conception est modulaire, il ne devrait pas y avoir de problèmes de diviser le projet en plusieurs parties.

Autres conseils

Si vous devez garder

  

C de projets comme flexible et extensible possible au cours du développement

alors vous n'avez pas un cahier des charges, vous avez pas d'objectif réel et aucun moyen de définir un produit fini.

Pour un produit commercial c'est la pire situation d'être. Pour paraphraser un blogueur bien connu (ne me souviens pas qui) « vous avez pas un produit jusqu'à ce que vous définir ce que vous n'allez pas faire. »

Pour les projets personnels cela pourrait ne pas être un problème. Craie jusqu'à l'expérience et de se souvenir pour référence future. Refactoring et passer.

Ne pas peur Evolution (Refonte).

S'il y a beaucoup de classe qui correspondent à un thème, créer une classe de base commune.

Au lieu des membres de données de codage dur, utiliser des pointeurs vers une classe de base abstraite.
Par exemple, au lieu d'utiliser std::ifstream l'utilisation des std::istream.

Dans mon projet, j'ai des classes abstraites pour lire et écrire. Les classes support de lecture et d'écriture utiliser ces interfaces. Je peux passer des lecteurs spécialisés à ces classes sans changer de code. Un lecteur de base de données hérite de la base de classe Reader et peut donc être utilisé partout où un lecteur est utilisé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top