Frage

Ich habe meinen Dolmetscher in C ++ Entwicklung für (esoterisch, wenn Sie wollen) Programmiersprache jetzt einige Zeit. Eines der wichtigsten Dinge, die ich bemerkt habe. Ich mit einem flexiblen Konzept beginnen, und je weiter ich Code (Tokenizer-> Parser-> Interpreter) die weniger flexibel das ganze System bekommt

Zum Beispiel: Ich habe keine include Funktion zunächst implementieren, doch der Dolmetscher war bereits aktiv - ich hatte extreme Schwierigkeiten es umzusetzen und es war wie später „etwas aus Patchen“. Mein System Flexibilität sehr schnell verloren hatte.

  • Wie kann ich lernen, relativ kleine C ++ Projekte flexibel und erweiterbar wie möglich während der Entwicklung zu halten?
War es hilfreich?

Lösung

  1. Definieren Sie die Struktur des Projekts, bevor Sie Codierung beginnen. Skizzieren Sie Ihre wichtigsten Ziele und darüber nachdenken, wie kann man das erreichen.

  2. -Code der Header.

  3. Schauen Sie, ob es möglich, jede Funktion mit diesem Satz von Schnittstellen

  4. implementieren
  5. Wenn nein -> zurück zu (2)

  6. Wenn ja -> Code CPP-Dateien

  7. Genießen.

Natürlich gilt dies nicht, um wirklich große Projekte. Aber wenn Ihr modular aufgebaut ist, sollte es keine Probleme geben, das Projekt in einzelne Teile zu teilen.

Andere Tipps

Wenn Sie halten

C ++ Projekte flexibel und erweiterbar wie möglich während der Entwicklung

, dann haben Sie keine Produktspezifikation bekommen, haben Sie kein wirkliches Ziel und keine Möglichkeit, ein fertiges Produkt zu definieren.

Für ein kommerzielles Produkt ist dies die schlimmste Situation zu sein. Ein gut bekannter Blogger paraphrasieren (kann mich nicht erinnern, wer) „Sie haben kein Produkt erhielt, bis Sie definieren, was Sie wollen dies nicht tun.“

Für persönliche Projekte könnte dies kein Problem sein. Chalk es Erfahrung und für die Zukunft erinnern. Umgestalten und zieht weiter.

keine Angst Evolution (Refactoring).

Wenn es viele Klassen sind, die ein Thema passen, eine gemeinsame Basisklasse erstellen.

Statt harter Kodierung Datenelemente, die Verwendung Zeiger auf eine abstrakte Basisklasse.
Zum Beispiel, statt std::ifstream Verwendung std::istream verwenden.

In meinem Projekt habe ich abstrakte Klassen zum Lesen und Schreiben. Klassen, die Unterstützung Lesen und Schreiben Nutzung dieser Schnittstellen. Ich kann Fach Leser zu diesen Klassen passieren, ohne Code zu ändern. Eine Datenbank Leser würden von der Basis Reader-Klasse erben, und können somit überall ein Leser wird verwendet, verwendet werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top