[C#] ถ้า GroupBy แล้วห้ามใช้ตัวแปรชนิด var มารับหละ ?

หลายองค์กรมีตัว Coding Standard เพื่อเป็นแนวทางในการเขียน Code ให้มีระเบียบ ไปในทิศทางเดียวกันครับ ใครๆก็สามารถมาอ่าน Code นั้นได้ครับ แล้วที่นี้ ถ้ามีการประกาศว่า ถ้ามี List<Object> แล้ว GroupBy ห้ามใช้ตัวแปรขนิด var มารับ จะทำอย่างไรหละ ?

อ้าว Copy Pattern จาก Stack Overflow มา
ทำอย่างไรดี !!!

ทุกปัญหามีทางแก้ไขได้ครับ จากโจทย์ ถ้ามี List<Object> แล้ว GroupBy ห้ามใช้ตัวแปรขนิด var มารับ ลองมาดูตัวอย่าง Code กันก่อนครับ

  • ของเดิม : ใช้ตัวแปรขนิด var มารับผลลัพธ์ที่ได้จาก Group By ครับ
var bondTxGroupBySec = bondTxByPortList.GroupBy(x => x.SecurityId);
foreach (var bondTxBySec in bondTxGroupBySec)
{
   IList<FIBondARAPTxDSDTO> bondTxBySecList = bondTxBySec.Select(a =>a).ToList(); //มี Select(a =>a) ซ้อนเสียเวลา Loop 1 รอบ
   //...
}

จากตัวอย่างในส่วนของเดิม สามารถแปลง Code จากตัวแปรชนิด var ได้ ดังนี้ครับ โดยใช้ตัว IGrouping Key ที่ใช้แบ่ง / ข้อมูลแต่ละกลุ่ม ในที่นี้

  • Key - int ของ SecurityId
  • ข้อมูลแต่ละกลุ่ม - List หรือ IEnumerable ของ FIBondARAPTxDSDTO
IEnumerable<IGrouping<int, FIBondARAPTxDSDTO>> bondTxGroupBySec = bondTxByPortList.GroupBy(x => x.SecurityId);
foreach (IGrouping<int, FIBondARAPTxDSDTO> bondTxBySec in bondTxGroupBySec)
{
   IList<FIBondARAPTxDSDTO> bondTxBySecList = bondTxBySec.ToList();
   //...
}

ความเห็นส่วนตัว

  • หลังจากเปลี่ยนจากตัวแปร var มาเป็นชนิดข้อมูลที่ชัดเจนมาขึ้น ตัว Code ก็ดูยาวขึ้นด้วยครับ อาจจะทำให้ดูและลายตาได้ครับ แต่มีข้อดีสำหรับมือใหม่ จะดีตีความว่ากำลังทำอะไรได้ชัดเจนครับ
  • สุดท้ายแล้ว ทั้งการใช้ var หรือ กำหนดชนิดข้อมูลที่ชัดเจน ไม่มีอะไรที่ถูกและผิดนะครับขึ้นกับการตกลง ภายในทีม หรือองค์กรครับ ต้องการใช้แบบไหนครับ
  • ปิดท้าย จากตัวอย่างผมได้ยกตัวอย่าง กรณีที่ GroupBy โดยใช้ 1 property เท่านั้นครับ ถ้ามีหลาย Property หละครับ ? >> มาที่ Blog นี้ได้เลยครับ [C#] ถ้า GroupBy โดยใช้หลาย Property แล้วห้ามใช้ตัวแปรชนิด var หละ

Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts sent to your email.