Với sự giúp đỡ của AOP, tôi có thể xóa mã đăng nhập khỏi logic kinh doanh của mình. Nhưng tôi nghĩ rằng nó chỉ có thể được sử dụng để ghi lại những điều đơn giản (ví dụ: nhập / thoát phương thức và các giá trị tham số).
Tuy nhiên, điều gì sẽ xảy ra nếu tôi cần đăng nhập một cái gì đó trong logic kinh doanh của mình? ví dụ
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
}
Phương pháp mẫu ở trên có thể không đủ rõ ràng, điều tôi muốn trình bày ở đây là phương thức này nên được coi là đơn vị nhỏ nhất theo quan điểm tên miền. Nó không nên được chia thành các phần nhỏ hơn.
Có thể di chuyển trên 3 mã đăng nhập ra khỏi phương thức? Thực hành tốt nhất cho tình huống như vậy là gì?