Za pomocą AOP mogę usunąć kod logowania z logiki biznesowej. Ale myślę, że można go używać tylko do rejestrowania prostych rzeczy (tj. Rejestrowania metody wejścia / wyjścia i wartości parametrów).
A jeśli jednak muszę coś zalogować w logice biznesowej? na przykład
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
}
Powyższa przykładowa metoda może nie być wystarczająco jasna, co chcę tutaj pokazać, że metodę należy traktować jako najmniejszą jednostkę z punktu widzenia domeny. Nie należy go dzielić na mniejsze części.
Czy można wyjść z metody powyżej 3 kodów logowania? Jakie są najlepsze praktyki w takiej sytuacji?