これは完全に合理的な質問であり、少し注意を払えば、保守が容易な GUI コードを作成することができます。いくつかの提案:
GUI レイアウト コードと「ビジネス ロジック」を別の m ファイルに入れます。(コード例については、この FileExchange 提出物を参照してください)。関連して、setappdata および getappdata を使用したり、構造体を渡したりする代わりに、ネストされた関数を使用して GUI の状態を維持します。
一般に、コールバックにはネストされた匿名関数を使用します。ネストされた関数は Java の内部クラスに似ており、無名関数は (Ruby のブロックのような) レキシカル クロージャーを実装します。
例外を使用して、エラーを適切に処理します。
各 GUI オブジェクト (スライダー、軸など) に一意で意味のあるタグを付けます。たとえば、「frequencySlider」や「dataAxes」などです。これにより、GUI レイアウトとロジックの分離が強化されます。
GUIDE が提供する GUI コントロールはかなり低レベルですが、さまざまなコントロールに体系的なタグ名を選択することで、再利用可能な高レベル コンポーネントを実装できます (たとえば、スライダーには「frequencySlider」、関連するテキスト ラベルには「frequencyLabel」)。 . コンポーネントの初期化ルーチンは、findobj を使用してコンポーネントのさまざまな部分を検索し、それらを初期化できます。例えば
関数 myComponent(図、ベース名)
SliderHandle = findobj(fig, 'tag', [basename 'Slider']);
textHandle = findobj(fig, 'タグ', [ベース名 'ラベル']);
% 初期化 ...
set(sliderHandle, 'Callback', @sliderCallback);
% コールバックのネストされた関数; スライダーハンドルの使用に注意してください
関数 SliderCallback(h,e)
fprintf('現在の値は %g\n, get(sliderHandle,'Value'));
終わり
終わり
- R2008a 以降を使用している場合は、OO 開発のための追加サポートが多数あります。