私はASP.NET MVCアプリに取り組んでおり、便利で便利なゲッターをモデル/エンティティクラスに入れる習慣を身につけています。
例えば:
public class Member
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string PhoneNumber { get; set; }
public string FullName
{
get { return FirstName + " " + LastName; }
}
public string FormattedPhoneNumber
{
get { return "(" + PhoneNumber.Substring(0, 3) + ") " + PhoneNumber.Substring(3, 3) + "-" + PhoneNumber.Substring(6); }
}
}
FullName
とFormattedPhoneNumber
ゲッターについて人々が考えるのだろうか。
アプリ全体で標準化されたデータ形式を非常に簡単に作成でき、繰り返しコードを大量に保存するように見えますが、データ形式はモデルからビューモデルへのマッピングで処理されるべきものであると断言できます。
実際、私は元々、これらのデータ形式をマッピングを行うサービスレイヤーに適用していましたが、フォーマッタを絶えず書き、それをさまざまな場所に適用しなければならないのは負担になりました。例えば、私はほとんどのビューで「フルネーム」を使用model.FullName = MappingUtilities.GetFullName(entity.FirstName, entity.LastName);
し、model.FullName = entity.FullName
あちこちに何かを入力しなければならないことは、単に入力するよりもはるかにエレガントではないように見えました(または、AutoMapperのようなものを使用すると、何も入力しない可能性があります)。
それで、データのフォーマットに関してはどこで線を引きますか。モデルでデータのフォーマットを行うのは「大丈夫」ですか、それとも「パターンの匂い」ですか?
注:私のモデルにはHTMLが含まれていません。そのためにhtmlヘルパーを使用します。データ(特に頻繁に使用されるデータ)のフォーマットまたは結合について厳密に説明しています。
PhoneNumber
おそらく独自のクラスに属します(現在実装しています)。しかし、FullName
本当に私が質問を書くように動機付けたものでした。しかし、一般的に、アプリ全体に適用されるもののモデルにデータのフォーマット/コーミングなどを入れることが理にかなっているかどうかを調べることに興味があります。以下の回答から、これはアンチパターンではないと思われますが、慎重に決定する必要があります。