[C#] ตั้งชื่อเล่นของ Class (Alias) ให้เรียกใช้งานได้ง่าย

เวลาเราพัฒนาระบบที่มันซับซ้อนๆมากๆ ปัญหาที่ปวดหัวที่สุดเลย คือ การตั้งชื่อ บางทีชื่อตัวแปรยาวๆ ถ้าย่อไป อาจจะงงได้ Dev เลยใช้ชื่อเต็มไป พอลองเอาตัวแปรเหล่านี้มาใช้ มันดูเกะกะรกตามากครับ กว่าจะรู้ว่า ตั้งชื่อเล่นของ Class (Alias) ให้เรียกใช้งานได้ง่ายกันดีกว่า โดย C# มันมีวิธีในการการตั้งชื่อเล่น(Alias) กันนะ มาดู Code เดิมกันดีกว่า

public partial class RebalanceEqForm : RepositoryForm
{
   //Do some method
   
   private void InitialGridColumn(IList<RebalanceEQAfterDSDTO> pDtos)
   {
      //Do something
      
      GridBand common = GridHelper.CreateGridBand("");
      GridColumn col;
      col = GridHelper.CreateCheckBoxBandedGridColumn(_rebalanceBandedGridView, common, "", RebalanceProcessExtensions.Col_Selected, true);
      SetColumn(col, ls);
      col = GridHelper.CreateBandedGridColumn(_rebalanceBandedGridView, common, "Portfolio", RebalanceProcessExtensions.Col_Portfolio, DevExpress.Utils.FormatType.None, -1, false);
      SetColumn(col, ls);
      col = GridHelper.CreateBandedGridColumn(_rebalanceBandedGridView, common, "Original NAV", RebalanceProcessExtensions.Col_OriginalNAV, DevExpress.Utils.FormatType.Numeric, FORMAT_PATTERN.CURRENCY_CODE, false, true);
      SetColumn(col, ls);
      col = GridHelper.CreateBandedGridColumn(_rebalanceBandedGridView, common, "NAV", RebalanceProcessExtensions.Col_NAV, DevExpress.Utils.FormatType.Numeric, FORMAT_PATTERN.CURRENCY_CODE, false);
      SetColumn(col, ls);
      col = GridHelper.CreateBandedGridColumn(_rebalanceBandedGridView, common, "% EQ Policy", RebalanceProcessExtensions.Col_PercentEQPolicy, DevExpress.Utils.FormatType.Numeric, FORMAT_PATTERN.CURRENCY_CODE, false);
      SetColumn(col, ls);
   }
}

ถ้าสังเกตุใน Code พบว่า RebalanceProcessExtensions.Col_OriginalNAV ชื่อ Class RebalanceProcessExtensions มันยาวมากๆ ครับ ถ้าทำไปนานๆ Code ตรึมครับ ดูยาก ที่นี้มาลองใช้ตัวช่วยกันดีกว่า ลองใช้ Class Alias โดยการย่อชื่อ Class ไว้ช่วง using ครับ โดย Code ที่ได้จะเป็นประมาณนี้

using RBExt = Sample.Invest.Operation.DTO.Master.Rebalance.RebalanceProcessExtensions;

public partial class RebalanceEqForm : RepositoryForm
{
   //Do some method
   
   private void InitialGridColumn(IList<RebalanceEQAfterDSDTO> pDtos)
   {
      //Do something
      
      GridBand common = GridHelper.CreateGridBand("");
      GridColumn col;
      col = GridHelper.CreateCheckBoxBandedGridColumn(_rebalanceBandedGridView, common, "", RBExt.Col_Selected, true);
      SetColumn(col, ls);
      col = GridHelper.CreateBandedGridColumn(_rebalanceBandedGridView, common, "Portfolio", RBExt.Col_Portfolio, DevExpress.Utils.FormatType.None, -1, false);
      SetColumn(col, ls);
      col = GridHelper.CreateBandedGridColumn(_rebalanceBandedGridView, common, "Original NAV", RBExt.Col_OriginalNAV, DevExpress.Utils.FormatType.Numeric, FORMAT_PATTERN.CURRENCY_CODE, false, true);
      SetColumn(col, ls);
      col = GridHelper.CreateBandedGridColumn(_rebalanceBandedGridView, common, "NAV", RBExt.Col_NAV, DevExpress.Utils.FormatType.Numeric, FORMAT_PATTERN.CURRENCY_CODE, false);
      SetColumn(col, ls);
      col = GridHelper.CreateBandedGridColumn(_rebalanceBandedGridView, common, "% EQ Policy", RBExt.Col_PercentEQPolicy, DevExpress.Utils.FormatType.Numeric, FORMAT_PATTERN.CURRENCY_CODE, false);
      SetColumn(col, ls);
   }
}

จาก Code ใหม่ ย่อจาก RebalanceProcessExtensions ไปเป็น RBExt แล้ว Code ที่เขียนออกมา สั้นลง และดูสบายตาขึ้น ครับ