2

テンプレートから電子メールを生成するシステムに取り組んでいます。企業から提供されたテンプレートには、次のようなコード行が含まれています。

Thank you for your payment of @((decimal.Parse(Model.PaymentAmount)/100).ToString("C"))

この場合、PaymentAmount は整数の文字列表現として期待されます (たとえば、必要な出力 £5.54 は "554" として提供されます)。

さて、私は、プレゼンテーション レイヤーには計算を含めるべきではないと考えています。この場合、/100 の計算と解析があります。私はこれに対していくつかの代替案を提案しました。そこでは、テンプレートの前にコードで変換が実行され、次のような変更されたビューが提供されます。

Thank you for your payment of @Model.PaymentAmount.ToString("C")

このプロジェクトにはかなり有能なテクニカル アーキテクトが一組いますが、彼らに正当な理由を納得させるのに苦労しています。

後者のコード断片を前者の上に実装する際に機能するアーキテクトに提示する議論を手伝ってくれる人はいますか?または、このアプローチに同意しない場合は、その理由は?

4

2 に答える 2

1

最初の解決策よりも解決策 2 を好む理由の 1 つは、何らかの理由で誰かが 10 進数に解析できないテキストをテンプレートに渡した場合に問題が発生することです。いくつかの可能性があります:

  1. 数値以外のテキスト。
  2. 異なるカルチャ用に書式設定された数値。

したがって、アプローチ #2 では型安全性がはるかに優れています。アーキテクチャの観点から、テンプレートを埋める人は実装の詳細を知る必要はありませんが、アプローチ 1 では、特定の方法でフォーマットされた文字列を提供する必要があることを知る必要があります。

于 2013-10-28T10:30:02.027 に答える
1

私にとっては 2 番目のアプローチの方が優れており、それをお勧めします。なぜなら、ソフトウェア エンジニアリング パターンで学ぶ主なことは、物事を分離して献身的にしようとすることです。十分に分離されたものは維持するのが簡単ですが、サイズが小さい場合や個人的な使用の場合、これはただの練習になります.

于 2013-10-28T10:24:36.507 に答える