อย่าใช้คำยาว ๆ เมื่อคำสั่งจิ๋วจะทำ
ฉันไม่คิดว่าวิทยานิพนธ์ของคุณ "ความยาวของชื่อวิธีเป็นสัดส่วนกับความยาวของวิธีการ" ถือน้ำจริงๆ
นำตัวอย่างที่คุณให้: "getNumberOfSkinCareEligibleItemsWithinTransaction" ฟังดูเหมือนว่าฉันจะทำสิ่งเดียว: นับจำนวนรายการในธุรกรรมที่ตกอยู่ในหมวดหมู่ที่แน่นอน แน่นอนว่าฉันไม่สามารถตัดสินได้โดยไม่เห็นรหัสที่แท้จริงสำหรับวิธีการ แต่ดูเหมือนว่าเป็นวิธีที่ดีสำหรับฉัน
ในทางกลับกันฉันได้เห็นวิธีการมากมายที่มีชื่อที่สั้นและกระชับซึ่งทำให้วิธีการทำงานมากมายเช่น "processSale" หรือ "doStuff" ที่เป็นที่นิยม
ฉันคิดว่ามันคงเป็นเรื่องยากที่จะกำหนดกฎอย่างหนักและรวดเร็วเกี่ยวกับความยาวชื่อเมธอด แต่เป้าหมายควรยาวพอที่จะถ่ายทอดสิ่งที่ฟังก์ชั่นสั้นพอที่จะอ่านได้ ในตัวอย่างนี้ฉันคิดว่า "getSkinCareCount" น่าจะเพียงพอแล้ว คำถามคือสิ่งที่คุณต้องการแยกแยะ หากคุณมีฟังก์ชั่นหนึ่งที่นับรายการที่มีสิทธิ์ดูแลผิวในการทำธุรกรรมและอีกรายการหนึ่งที่นับรายการที่มีสิทธิ์ดูแลผิวในสิ่งอื่นแล้ว "ภายในธุรกรรม" เพิ่มมูลค่า แต่ถ้ามันไม่ได้มีความหมายอะไรที่จะพูดคุยเกี่ยวกับรายการดังกล่าวนอกเหนือจากการทำธุรกรรมแล้วไม่มีจุดถ่วงชื่อด้วยข้อมูลที่ฟุ่มเฟือยดังกล่าว
สองฉันคิดว่ามันไม่สมจริงอย่างที่คิดว่าชื่อของความยาวที่สามารถจัดการได้จะบอกคุณว่าฟังก์ชั่นนี้ทำอะไรได้บ้าง แต่เป็นกรณีที่น่ารำคาญที่สุด เป้าหมายที่สมจริงคือสร้างชื่อที่ให้เบาะแสผู้อ่านและสามารถจดจำได้ในภายหลัง เช่นถ้าฉันพยายามหารหัสที่คำนวณว่าปฏิสสารที่เราต้องใช้เพื่อให้ได้ความเร็ววาร์ปถ้าฉันดูชื่อฟังก์ชั่นและดู "calibrateTransporter", "firePhasers" และ "calcAntimatterBurn" มันค่อนข้างชัดเจนว่า สองอันแรกไม่ใช่มัน แต่อันที่สามอาจเป็น ถ้าฉันตรวจสอบและพบว่าเป็นสิ่งที่ฉันกำลังมองหามันจะเป็นการง่ายที่จะจำได้ว่าเมื่อฉันกลับมาพรุ่งนี้เพื่อแก้ไขปัญหานี้อีก นั่นดีพอ
ชื่อยาวสามชื่อที่คล้ายกันทำให้สับสนมากกว่าชื่อสั้น ๆ หากฉันมีฟังก์ชั่นสองอย่างที่เรียกว่า "calcSalesmanPay" และ "calcGeekPay" ฉันสามารถคาดเดาได้อย่างรวดเร็วว่าเป็นแบบไหน แต่ถ้าพวกเขาถูกเรียกว่า "calculMonthlyCheckAmountForSalesmanForExportToAccountingSystemAndReconciliation" และ "calculMonthlyCheckAmountForProgrammersForExportToAccountingSystemAndReconciliation" (ฉันต้องศึกษาชื่อเพื่อดูว่าตัวไหนเป็นแบบไหน ข้อมูลเพิ่มเติมในชื่อนั้นอาจมีผลในกรณีดังกล่าว เปลี่ยนความคิดครึ่งวินาทีเป็นความคิด 30 วินาที