AOPを利用して、ビジネスロジックからロギングコードを削除できます。しかし、それは単純なもの(つまり、メソッドの入り口/出口およびパラメーター値のロギング)をログに記録するためにのみ使用できると思います。
ただし、ビジネスロジックに何かを記録する必要がある場合はどうなりますか?例えば
public void SomeDomainMethod(string id)
{
//Get user by Id
User user = Users.Get(id);
if (user == null)
{
Log.Warn("user is not existed"); //<----------------- Log A
throw new InvalidOperationException("user is not existed");
}
//Step 1
while(true)
{
//do something
}
Log.Info("Step 1 is completed"); //<----------------- Log B
//Step 2
while(true)
{
//do something
}
Log.Info("Step 2 is completed"); //<----------------- Log C
}
上記のサンプルメソッドは十分に明確ではない場合があります。ここで説明したいのは、メソッドをドメインの観点から最小単位として扱う必要があることです。小さな部分に分割しないでください。
メソッドから3つ以上のロギングコードを移動することは可能ですか?そのような状況のベストプラクティスは何ですか?