質問

私は今、私の(難解であれば)プログラミング言語のためにC ++で通訳を開発してきました。私が気づいた主なことの1つは、柔軟なコンセプトから始め、さらに私がコード(トークン化装置 - >パーサー - >インタープリター)をコードするほど、システム全体の柔軟性が低くなります。

たとえば、実装しませんでした include 最初は機能しましたが、通訳はすでに稼働していました - 私はそれを実装するのに極端な困難があり、それは後で「何かをパッチする」ようなものでした。私のシステムは非常に迅速に柔軟性を失いました。

  • 開発中に比較的小さなC ++プロジェクトを柔軟で拡張可能に保つことをどのように学ぶことができますか?
役に立ちましたか?

解決

  1. コーディングを開始する前に、プロジェクトの構造を定義します。主な目的の概要を説明し、それをどのように達成できるかを考えてください。

  2. ヘッダーをコーディングします。

  3. このインターフェイスのセットを使用してすべての機能を実装できるかどうかを確認します

  4. いいえの場合 - >(2)に戻る

  5. はい - > code .cppファイル

  6. 楽しみ。

もちろん、これは本当に大きなプロジェクトには当てはまりません。ただし、設計がモジュール式である場合、プロジェクトを別々のパーツに分割する問題はありません。

他のヒント

保持する必要がある場合

開発中に可能な限り柔軟で拡張可能なC ++プロジェクト

その後、製品仕様はありません。実際の目標はなく、完成品を定義する方法もありません。

商業製品の場合、これは最悪の状況です。有名なブロガーを言い換えると(誰が覚えていません)、「あなたがやろうとしていないことを定義するまで製品を手に入れていません。」

個人的なプロジェクトでは、これは問題ではないかもしれません。将来の参照のために経験し、覚えておくためにそれをチョークアップしてください。リファクタリングして先に進みます。

進化を恐れないでください(リファクタリング)。

テーマに合った多くのクラスがある場合は、共通のベースクラスを作成します。

ハードコーディングデータメンバーの代わりに、ポインターを抽象的なベースクラスに使用します。
たとえば、使用する代わりに std::ifstream 使用する std::istream.

私のプロジェクトでは、読み書きのための抽象クラスがあります。読み書きをサポートするクラスは、これらのインターフェイスを使用します。コードを変更せずに、専門の読者をこれらのクラスに渡すことができます。データベースリーダーは、ベースリーダークラスから継承するため、リーダーが使用される場所で使用できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top