1

私はモーションコントロールシステムに取り組んでおり、少なくとも5つのモーターがあり、それぞれに「ギアボックス比」、「回転あたりの目盛り」、「Kp」、「Ki」、「Kd」などのパラメーターがあります。モーターのインスタンスの構築時。

StackOverflowに対する私の質問は、これらの番号をどのように整理する必要があるかということです。これはおそらく優先的なことだと思いますが、コーディングに慣れていないので、あなたから良い意見を得ることができると思います。

私がすぐに目にする3つのアプローチは次のとおりです。

  1. 変数または数値のいずれかを介して、コンストラクターへの呼び出しを書き込みます-PROS:制限されたコーディングは、変更が簡単な方法で実装できますが、#defineよりも難しい可能性があります

  2. #defineを使用して、上記と同様のことを実行します-長所:コーディングが最小限で、変更が簡単です(ソースコードを見たいと仮定します)

  3. ファイル(「motorparameters.txt」という名前の可能性があります)をロードし、パラメーターを配列にロードして、その配列からデータを入力します。本当に必要な場合は、手動ではなく、このファイルを変更するためのGUIアプローチを追加できます。-長所:ソースコードに飛び込むことなく変更するのが最も簡単です。

これらのパラメーターは時間の経過とともに変化する可能性があります。会社には他のコーダーもいますが、構成しやすい方法で残したいと思います。#defineと変数の特別な利点を知っている人はいますか?#definesを簡単に追加できる「constants.h」ファイルがすでにあるか、コンストラクターの呼び出しの近くに変数を追加できます。

4

4 に答える 4

4

YAGNI(You Ai n't Gonna Need It)として知られている原則があります。これは、最初に最も単純なことを行い、要件が拡大したときにそれを変更するというものです。

于 2012-09-04T18:48:53.100 に答える
2

やるべきことのように私には聞こえます:

  • 現在気になっている値のセットが5つしかない場合でも、(理由の範囲内で)任意の値を処理できる柔軟なモータークラスを記述します。

  • システム内の5つのモーターの「正しい」値を返す(または「正しい値」を使用してシステムの5つのモーターを構築する)コンポーネントを定義します。

  • 最初にそのコンポーネントを実装して、ヘッダーファイルからハードコードされた値を使用します

  • 将来的にそのコンポーネントを同じAPIの実装に置き換えるオプションを保持しますが、ハードウェアにクエリを実行することにより、リソースファイル、テキストファイル、XMLファイル、ユーザーとのGUIインタラクションから値を読み取ります。どんなモーターを持っていると思うかを調べてください。

これは、必要と思われるカスタマイズ可能なポイントを配置することで予想される労力を最小限に抑えることに基づいて言いますが(後で変更するときに多くの作業を防ぐため)、現在の条件を満たす最も単純なものを使用して実装します特定の要件。

(a)コンポーネントを定義するために入力することは実際には価値がないと言う人もいるかもしれませんmain()。ヘッダーファイルから定数を使用するために、(b)で5つのモーターを構築するだけで、。に数値リテラルを入力するだけの方がよいでしょうmain()。(b)人々は「魔法の定数」の行商人として広く軽蔑されており(これは、実装者と将来のメンテナによる相対的な合計プログラミング時間について必ずしも間違っているという意味ではありません)、(a)人々は意見を分けています。このようなことを定義するには数分かかると思う傾向があるので、それが価値があるかどうかはあまり気にしません。ファイルから値をロードするには、実際に遭遇するとすぐに後悔する可能性のあるファイル形式を指定する必要がありますカスタマイズする理由があるので、個人的には、要件が発生するまでそれを気にすることはできません。

于 2012-09-04T19:05:37.083 に答える
0

一般的な考え方は、変更されるコードの部分と変更されない部分を分離することです。何かが変更される可能性が高いほど、変更を容易にする必要があります。

数百または数千のユーザーがさまざまなモーターを使用する商用アプリを構築している場合は、UIをコーディングして、データを構成ファイルに保存するのが理にかなっている場合があります。

これが開発コードであり、これらのパラメーターが変更される可能性が低い場合は、constants.hファイルの#definesにそれらを詰め込むのがおそらく道のりです。

于 2012-09-04T18:48:23.443 に答える
0

セキュリティやIPの懸念がない場合は、3番目が最適なオプションです。あなたや他の誰かがあなたのコードに触れるときはいつでも、あなたは退行の可能性をもたらします。パラメータをテキストファイルに保存することで、自分の生活を楽にするだけでなく、将来発生する可能性のあるエラーの範囲を減らすことができます。

于 2012-09-04T18:48:42.227 に答える