ในภาษา AL ที่ใช้สำหรับการพัฒนา Microsoft Dynamics 365 Business Central เรามีคุณสมบัติที่เรียกว่า Obsolete ซึ่งใช้สำหรับการทำเครื่องหมาย (mark) ว่า object หรือ element ในโค้ดของเราไม่ควรถูกใช้งานอีกต่อไป เช่น table, field, หรือ procedure
ทำไมต้องใช้ Obsolete ?
เมื่อมีการพัฒนาและอัปเดตแอปพลิเคชัน เราอาจต้องการเลิกใช้งานบางส่วนของโค้ดที่ไม่จำเป็นหรือมีการเปลี่ยนแปลงทางธุรกิจ การใช้ Obsolete ช่วยให้เราสามารถ:
- แจ้งเตือนนักพัฒนาว่าส่วนนี้จะถูกเลิกใช้งาน
- ป้องกันการใช้งาน object ที่ไม่ต้องการ
- จัดการกับการปรับปรุงเวอร์ชันในอนาคตอย่างมีประสิทธิภาพ
การใช้งาน Obsolete
Obsolete Attribute ประกอบด้วยสอง property หลัก
- ObsoleteState: กำหนดสถานะของการเลิกใช้งาน ซึ่งมีค่าสองค่า:
Pending: แสดงคำเตือน (warning) เมื่อมีการใช้งานRemoved: แสดงข้อผิดพลาด (error) เมื่อมีการใช้งาน
- ObsoleteReason: ข้อความที่อธิบายเหตุผลของการเลิกใช้งาน
รูปแบบการใช้งาน
ObsoleteState = Pending|Removed;
ObsoleteReason = 'เหตุผลในการเลิกใช้งาน';
ตัวอย่างการใช้งานใน Procedure
สมมติว่าเรามี procedure ที่ต้องการเลิกใช้งาน
procedure CalculateDiscount(amount: Decimal): Decimal
var
discountRate: Decimal;
begin
// การคำนวณส่วนลดแบบเก่า
discountRate := 0.1;
exit(amount * discountRate);
end;
เราสามารถทำให้ procedure นี้ obsolete ได้ดังนี้
[Obsolete('This method is obsolete. Use NewCalculateDiscount instead.', '24.0')]
procedure CalculateDiscount(amount: Decimal): Decimal
var
discountRate: Decimal;
begin
discountRate := 0.1;
exit(amount * discountRate);
end;
ในตัวอย่างนี้
- เราใช้
[Obsolete()]attribute เพื่อทำให้ procedure นี้ obsolete - ข้อความ
'This method is obsolete. Use NewCalculateDiscount instead.'จะปรากฏเมื่อมีการใช้งาน procedure นี้ '24.0'ระบุว่า procedure นี้จะถูกเลิกใช้งานในเวอร์ชัน 24.0
ตัวอย่างการใช้งานใน Field
ถ้าเรามี field ใน table ที่ต้องการเลิกใช้งาน
fields
{
field(1000; "Old Field"; Text[50])
{
ObsoleteState = Removed;
ObsoleteReason = 'This field is no longer used.';
}
}
ในกรณีนี้
- เมื่อ
ObsoleteStateถูกตั้งเป็นRemovedการใช้งาน field นี้จะทำให้เกิด error ObsoleteReasonให้ข้อมูลเพิ่มเติมแก่นักพัฒนาเกี่ยวกับเหตุผลในการเลิกใช้งาน
การจัดการกับ Obsolete Object
เมื่อ object ถูกทำเครื่องหมายเป็น obsolete
- หยุดการใช้งานในโค้ดใหม่
- อัปเดตโค้ดเก่าที่เรียกใช้งาน object นั้น
- เตรียมการสำหรับการลบ object นั้นในเวอร์ชันอนาคต
สรุป
การใช้ Obsolete ในภาษา AL เป็นวิธีที่มีประสิทธิภาพในการจัดการกับการเลิกใช้งาน object หรือ element ในโค้ดของเรา ช่วยให้นักพัฒนาสามารถรับรู้และปรับปรุงโค้ดตามการเปลี่ยนแปลงได้อย่างรวดเร็ว
