ต้องจำเป็น!!
สรุป: ฟังก์ชันที่มีชื่อไม่ชัดเจนนั้นซ่อนเจตนาและทำให้ผู้อ่านสับสน ควรใช้ชื่อที่อธิบายและเน้นการกระทำ
https://hackernoon.com/improving-the-code-one-line-at-a-time
ฟังก์ชันที่มีชื่อด้วยเงื่อนไขทั่วไปจะบังคับให้ผู้อ่านต้องลงลึกในการใช้งานเพื่อทำความเข้าใจพฤติกรรมของฟังก์ชันเหล่านั้น
การทำเช่นนี้เป็นการเสียเวลาและเพิ่มโอกาสเกิดข้อผิดพลาด
การตั้งชื่อกลาย เป็นสิ่งสำคัญยิ่งขึ้นเมื่อทำงานกับฟังก์ชันแบบสแตนด์อโลน โดยที่ชื่อคลาสไม่ได้ให้บริบทเพิ่มเติม
ประเด็นนี้เกี่ยวข้องโดยตรงกับ หลักการบอกอย่าถาม
แทนที่จะเปิดเผยพฤติกรรมที่คลุมเครือซึ่งบังคับให้ผู้เรียกอนุมานฟังก์ชัน ชื่อที่จำเป็นจะสื่อถึงการดำเนินการที่ชัดเจน โดยช่วยแนะนำผู้อ่านโดยไม่จำเป็นต้องตรวจสอบโค้ด
เมื่อคุณตั้งชื่อฟังก์ชันอย่างมีคำอธิบาย คุณสามารถลดการคาดเดาที่ไม่จำเป็นได้และสอดคล้องกับหลักการนี้
public String dateFormatting(Date date) { return new SimpleDateFormat("yyyy-MM-dd").format(date); } public void load() { System.out.println("Loading..."); }
public String formatDate(Date date) { return new SimpleDateFormat("yyyy-MM-dd").format(date); } public void loadUserPreferences() { System.out.println("Loading user preferences..."); }
คุณสามารถตรวจจับกลิ่นนี้ได้โดยการตรวจสอบชื่อฟังก์ชันที่ใช้คำคลุมเครือ เช่น do , run , process , load เป็นต้น
ลินเตอร์อัตโนมัติสามารถทำเครื่องหมายรูปแบบเหล่านี้หรือเน้นฟังก์ชันที่มีชื่อทั่วไปมากเกินไป
ชื่อฟังก์ชันควรสร้าง ความสอดคล้องแบบหนึ่งต่อหนึ่ง ที่ชัดเจนระหว่างชื่อและฟังก์ชันการทำงาน
การทำลาย Bijection นี้บังคับให้ผู้พัฒนาต้องตรวจสอบรายละเอียดของโค้ดเพื่อดูบริบท ทำให้การดีบัก การตรวจสอบ และการขยายผลดำเนินไปช้าลง
บางครั้งเครื่องมือ AI สร้างชื่อฟังก์ชันทั่วไปโดยไม่เข้าใจโดเมนของคุณ
เมื่อใช้ AI ให้ระบุว่าชื่อฟังก์ชันจะต้องอธิบายและเน้นการกระทำ
โมเดล AI ช่วยตรวจจับชื่อที่คลุมเครือได้โดยการเปรียบเทียบลายเซ็นฟังก์ชันกับแนวทางปฏิบัติที่ดีที่สุดในการตั้งชื่อที่กำหนดไว้ล่วงหน้า
การผสมผสาน AI เข้ากับการตรวจสอบโค้ดด้วยตนเองทำให้ได้ผลลัพธ์ที่ดีที่สุด
จำไว้ว่า: ผู้ช่วย AI ทำผิดพลาดมากมาย
โดยไม่มีคำแนะนำที่เหมาะสม | พร้อมคำแนะนำเฉพาะ |
---|---|
ชื่อฟังก์ชันไม่ใช่แค่ป้ายกำกับ แต่เป็นสัญญากับผู้อ่าน
การใช้ชื่อที่ไม่ชัดเจนถือ เป็นการทำลายสัญญานี้และทำให้เกิดความสับสน
ชื่อที่บรรยายและเน้นการกระทำจะทำให้การสื่อสารง่ายขึ้นและทำให้โค้ดของคุณง่ายต่อการดูแลรักษาและขยายเพิ่มเติม
Code Smells เป็น ความคิดเห็น ของฉัน
ภาพถ่ายโดย britishlibrary บน Unsplash
ชื่อฟังก์ชันควรเป็นกริยาหรือวลีกริยา และต้องมีความหมาย
โรเบิร์ต ซี. มาร์ติน
บทความนี้เป็นส่วนหนึ่งของซีรีส์ CodeSmell