สำหรับฉันการหาชื่อที่ดีสำหรับบางสิ่งบางอย่างกลับมาอยู่ในความคิดของมันในฐานะวัตถุที่ต้องแสดงให้เห็นถึงการมีอยู่ ถามตัวเอง:
- class / method / variable ทำอะไรเช่นอะไรคือจุดประสงค์ที่กว้างกว่าและมันมีไว้เพื่ออะไร?
- มันเกี่ยวกับจุดประสงค์ของมันโดยเฉพาะในการสื่อสารคืออะไรคือส่วนสำคัญที่ชื่อต้องมีในมันคืออะไร?
นักพัฒนาส่วนใหญ่ยอมรับว่าการอ่านมีความสำคัญยิ่งเสมอเมื่อพูดถึงการตั้งชื่อ อย่าเพิ่งเขียนโค้ดเพื่อให้คุณรู้ว่าคุณหมายถึงอะไรในขณะที่กำลังเขียนอยู่ให้เขียนเพื่อให้บางคนกำลังดูรหัสเป็นครั้งแรก ณ จุดหนึ่งในอนาคตรู้ว่าคุณหมายถึงอะไรโดยไม่ต้องคิดมาก คุณจะเขียนโค้ดเพียงครั้งเดียว แต่ในช่วงอายุการใช้งานมันจะต้องแก้ไขหลายครั้งและอ่านมากขึ้น
รหัสควรเป็น เอกสารด้วยตนเองนั่นคือการตั้งชื่อของคุณควรทำให้ชัดเจนว่ามีอะไรเกิดขึ้นบ้าง หากคุณจำเป็นต้องอธิบายว่าบรรทัดของโค้ดทำอะไรในความคิดเห็นและการเปลี่ยนชื่อสิ่งต่าง ๆ ไม่ได้ปรับปรุงให้ดีพอคุณควรพิจารณาการเปลี่ยนบรรทัดนั้นเป็นวิธีการใหม่อย่างจริงจังด้วยชื่อที่อธิบายอย่างเหมาะสมเพื่อให้การอ่านวิธีดั้งเดิม การเรียกใช้เมธอดใหม่จะอธิบายสิ่งที่เกิดขึ้น อย่ากลัวที่จะมีชื่อยาว แน่นอนว่าคุณไม่ควรเขียนนวนิยายในชื่อ class / method / variable แต่ฉันควรมีชื่อยาวเกินไปและอธิบายสั้นเกินไปและฉันต้องหาว่ามันทำอะไรโดยดูจากกระโปรงหน้ารถ ยกเว้นบางข้อยกเว้นที่ชัดเจนเช่นพิกัด x / y และตัวย่อที่ใช้กันทั่วไปหลีกเลี่ยงชื่อตัวอักษรและตัวย่อ เรียกบางอย่าง "bkBtn" แทน "backButton"
เท่าที่ภาษาของคุณอนุญาตให้ทำให้โค้ดของคุณอ่านเหมือนประโยคภาษาอังกฤษ วัตถุใช้คำนามวิธีการใช้คำกริยา โดยทั่วไปแล้ววิธีการบูลีนเริ่มต้นด้วย "คือ" แต่มีตัวเลือกอื่น ๆ อีกมากมายที่ถ่ายทอดความหมายได้ดียิ่งขึ้นทั้งนี้ขึ้นอยู่กับกรณีการใช้งานเช่น "สามารถ", "ควร" หรือ "ไม่" แน่นอนว่าไม่ใช่ทุกภาษาที่สามารถทำได้ดีเท่ากับสมอลล์ทอล์คในเรื่องนี้ แต่โดยทั่วไปสัญลักษณ์บางอย่างก็เป็นที่เข้าใจกันว่าเป็นส่วนหนึ่งของประโยค ข้อตกลง Smalltalk สองประการที่ฉันชอบที่จะนำไปใช้กับภาษาอื่น ๆ ให้มากที่สุดเท่าที่จะทำได้คือการใส่คำนำหน้าชื่อของพารามิเตอร์แบบวนรอบด้วย "แต่ละ" และวิธีนำหน้าพารามิเตอร์ด้วยบทความ "a" (หรือ "เป็น" หรือ "บางส่วน") . นี่อาจไม่ใช่มาตรฐานทั่วไปใน Java และทุกคนยินดีที่จะละเว้นบิตนี้ แต่ฉันพบว่าสิ่งนี้ช่วยเพิ่มความสามารถในการอ่านรหัสอย่างมาก ตัวอย่าง (ตัวอย่างใน Java):
public boolean shouldConsiderAbbreviating(List<String> someNames) {
for (String eachName : someNames) {
if (isTooLong(eachName)) {
return true;
}
}
return false;
}
สิ่งนี้ควรอ่านได้สำหรับผู้ที่มีความรู้เกี่ยวกับ Java เล็กน้อยเช่นนี้:
ในการตรวจสอบว่าคุณควรพิจารณาตัวย่อของรายชื่อบางชื่อ (ซึ่งเป็นสตริง) ย้ำผ่านบางชื่อและสำหรับแต่ละชื่อพิจารณาว่ายาวเกินไปหรือไม่ ถ้าเป็นเช่นนั้นกลับมาtrue
; false
ถ้าไม่มียาวเกินไปกลับ
ตัดกันโค้ดด้านบนด้วยการตั้งชื่ออาร์กิวเมนต์strings
และตัวแปรลูปstring
โดยเฉพาะอย่างยิ่งในวิธีการที่ซับซ้อนมากขึ้น คุณต้องมองอย่างใกล้ชิดเพื่อดูความแตกต่างแทนที่จะเห็นได้ชัดเจนจากการใช้ชื่อ