アプリケーションコードはどのように見えますか?

プラットフォームを開発するとき、アプリケーションコードを操作する単純さ、わかりやすさ、便利さに特別な注意を払うことは非常に重要だと思います。 さまざまなアプローチを試したので、私の経験から便利なレシピを共有したいと思います。

アプリケーションコードとは、特定のアプリケーションのビジネスロジックに直接関連するコードを意味し、カーネル(フレームワーク、プラットフォーム)とは異なり、そのようなコードは可能な限り変更される可能性があり、大規模なプロジェクトではプロジェクトの大部分を占めることができます。 最も重要な方法での開発の速度と品質は、アプリケーション開発者の利便性に依存します。

たとえば、 Brainfuck Hello worldでは、次のようになります。
画像
そして、 私たちの便利な基準は次のとおりです。


適用されるタスクの典型的な例は、ボタンを押すことで何らかのアクションを行うボタンの開発です。 ボタンは、 フォーム上、グリッド上、またはシステムメニュー内にあります。 場所に応じて、利用可能な入力パラメーターのセット(どのようなフォームですか?どのようなグリッドですか?どのレコードが強調表示されますか?)そして可能なアクションのセット(更新、変更、開くなど)を組み合わせコンテキストと呼びます。

私たちのシステムでは、ボタンを作成するために、特別なインターフェース(IAction)を実装するこのボタンのクラスを開発する必要があります-それは外観と動作を記述します。

この例では、 前の記事のアプリケーション、つまり不動産会社を考えてみましょう。

ブックマークボタン


画像

コメント

クラスヘッダーにはXmlDocコメントがあり、2つの目的があります。
まず、これは古典的なコメントであるため、コードはこのアクションが何をするかを理解します
次に、ボタンのテキスト(最初の行)とツールチップ(後続の行)です。

インターフェイス実装

一見、 IAction<IItemContext<RentOfferBase>>は怖いかもしれませんが、それほど怖くはありません。

IAction-すべてのシステムアクションのインターフェイス。クラスをボタンにするには、このインターフェイスを実装する必要があります。

GenericパラメーターIItemContextはアクションのコンテキストです。この場合、ボタンの場所のエンティティ要素が必要です。 したがって、このようなコンテキストのボタンは次の場所に表示される場合があります。


RentOfferBase-このボタンが利用可能なエンティティ(貸手からのオファー)を示します。 継承の原則を考えると、ボタンは次の目的で使用できます。


属性

 [Icon(ExtIcon.BookmarkAdd)] 
ボタンが表示されるアイコンを示します。

方法

 public void Execute(IItemContext<RentOfferBase> context) 
ボタンを押すことで直接実行されるコード。
コンテキスト-これは、それが持つアクションのコンテキストです。

ExceptionHelper.Interactive- インタラクティブな例外
ParameterManager.GetParameter-クライアントからのパラメーターの要求(インタラクティブな例外に似ていますが、データを入力する機能があります)
context.ShowNotification()-クライアントと対話する方法。

ノポカ平均価格の計算


画像

属性

 [RequireRole(Role.Agent)] 
ユーザーがボタンを表示するためのエージェントロールを持つための要件を示します。

コンテキスト

このボタンは、フォームのコンテキストであるIFormContextを使用します。要素のコンテキストとは異なり、これらのボタンはコンテキストメニューでは使用できませんが、フォームの編集時には使用できます。
さらに、コンテキストには追加のパラメーターが含まれます。例えば
context.FormDataは、まだ保存されていないフォームデータと、フォームでのみ意味のある追加メソッドです。たとえば、次のとおりです。
context.ChangeFieldValue(a => a.Price、averagePrice)-フィールド値の変更(保存なし)

その他の機能


多くのコンテキストがあります

実際には、いくつかのコンテキストが使用されます。適切なコンテキストを使用すると、ボタンを適切な場所に配置し、必要なプロパティにアクセスして適切なメソッドを呼び出すことができます。

属性も

たとえば、削除ボタンで:
画像

彼女について既に知っているアイコンに加えて、次の属性も示します。


ボタンだけでなく

システムの他のアプリケーションオブジェクトにも同様のアプローチを適用します。


ディスカッショントピック


アプリケーションコードが好きなERP(またはその他の会計)システムの例はありますか?
1C-役割モデル?

Source: https://habr.com/ru/post/J143566/


All Articles