ด้วยความช่วยเหลือของ 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 อันออกจากวิธีการ? วิธีปฏิบัติที่ดีที่สุดสำหรับสถานการณ์เช่นนี้คืออะไร?