Con l'aiuto di AOP, posso rimuovere il codice di registrazione dalla mia logica aziendale. Ma penso che possa essere utilizzato solo per registrare cose semplici (ad es. Immissione / uscita del metodo di registrazione e valori dei parametri).
Tuttavia, cosa succede se devo registrare qualcosa nella mia logica aziendale? per esempio
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
}
Il metodo di esempio sopra potrebbe non essere abbastanza chiaro, quello che voglio mostrare qui è che il metodo dovrebbe essere trattato come la più piccola unità dal punto di vista del dominio. Non dovrebbe essere diviso in pezzi più piccoli.
È possibile spostare oltre il codice di registrazione 3 fuori dal metodo? Qual è la migliore pratica per tale situazione?