Dynamics 365 Business Central: การใช้งาน Obsolete ใน AL Programming

ในภาษา AL ที่ใช้สำหรับการพัฒนา Microsoft Dynamics 365 Business Central เรามีคุณสมบัติที่เรียกว่า Obsolete ซึ่งใช้สำหรับการทำเครื่องหมาย (mark) ว่า object หรือ element ในโค้ดของเราไม่ควรถูกใช้งานอีกต่อไป เช่น table, field, หรือ procedure

ทำไมต้องใช้ Obsolete ?

เมื่อมีการพัฒนาและอัปเดตแอปพลิเคชัน เราอาจต้องการเลิกใช้งานบางส่วนของโค้ดที่ไม่จำเป็นหรือมีการเปลี่ยนแปลงทางธุรกิจ การใช้ Obsolete ช่วยให้เราสามารถ:

  • แจ้งเตือนนักพัฒนาว่าส่วนนี้จะถูกเลิกใช้งาน
  • ป้องกันการใช้งาน object ที่ไม่ต้องการ
  • จัดการกับการปรับปรุงเวอร์ชันในอนาคตอย่างมีประสิทธิภาพ

การใช้งาน Obsolete

Obsolete Attribute ประกอบด้วยสอง property หลัก

  1. ObsoleteState: กำหนดสถานะของการเลิกใช้งาน ซึ่งมีค่าสองค่า:
    • Pending: แสดงคำเตือน (warning) เมื่อมีการใช้งาน
    • Removed: แสดงข้อผิดพลาด (error) เมื่อมีการใช้งาน
  2. 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 ในโค้ดของเรา ช่วยให้นักพัฒนาสามารถรับรู้และปรับปรุงโค้ดตามการเปลี่ยนแปลงได้อย่างรวดเร็ว

Leave a comment