ฉันจะอ้างอิงข้อความบางส่วนจากรูปแบบการใช้งานโดย Kent Beck:
ชื่อ Superclass แบบง่าย
"[... ] ชื่อควรสั้นและเจาะลึกอย่างไรก็ตามในการทำให้ชื่อแม่นยำบางครั้งดูเหมือนจะต้องใช้คำหลายคำทางออกจากภาวะที่กลืนไม่เข้าคายไม่ออกนี้คือการเลือกคำอุปมาที่ชัดเจนสำหรับการคำนวณโดยมีอุปมาอุปไมยในใจแม้กระทั่ง คำเดียวทำให้เกิดการเชื่อมโยงการเชื่อมต่อและความหมายที่หลากหลายตัวอย่างเช่นในเฟรมเวิร์กการวาดภาพ HotDraw ชื่อแรกของฉันสำหรับวัตถุในรูปวาดคือ
DrawingObject Ward Cunningham มาพร้อมกับอุปมาอุปมัยการพิมพ์: ภาพวาดก็เหมือน หน้าจัดวางที่พิมพ์ออกมารายการกราฟิกในหน้าเป็นตัวเลขดังนั้นคลาสจึงกลายเป็นรูปในบริบทของการเปรียบเทียบFigure
จะสั้นกว่าสมบูรณ์กว่าและแม่นยำกว่าDrawingObject ในเวลาเดียวกัน "
ชื่อคลาสย่อยที่ผ่านการรับรอง
"ชื่อของคลาสย่อยมีสองงานพวกเขาจำเป็นต้องสื่อสารว่าคลาสนั้นเป็นอย่างไรและแตกต่างกันอย่างไร [... ] ไม่เหมือนกับชื่อที่อยู่ที่รากของลำดับชั้นชื่อคลาสย่อยจะไม่ได้ใช้บ่อยเท่าในการสนทนา เพื่อให้สามารถแสดงออกได้ในราคาที่รัดกุม [... ]
กำหนดคลาสย่อยที่ทำหน้าที่เป็นรากของลำดับชั้นชื่อง่ายๆของตนเอง ตัวอย่างเช่นHotDrawมีHandleคลาสซึ่งนำเสนอการแก้ไขตัวเลขเมื่อเลือกรูป มันถูกเรียกว่าเพียงแค่จับ
ทั้งๆที่มีการขยายรูป มีทั้งครอบครัวของจับและพวกเขาเหมาะสมที่สุดมีชื่อเช่น
StretchyHandleและTransparencyHandle เนื่องจากHandleเป็นรากของลำดับชั้นของตัวมันเองจึงสมควรได้รับชื่อ superclass ที่เรียบง่ายมากกว่าชื่อคลาสย่อยที่ผ่านการรับรอง
ริ้วรอยอีกอย่างในการตั้งชื่อคลาสย่อยคือลำดับชั้นหลายระดับ [... ] แทนที่จะนำหน้าโมดิฟายเออร์ไปยังซูเปอร์คลาสในทันทีให้นึกถึงชื่อจากมุมมองของผู้อ่าน เขาต้องรู้ว่าคลาสนี้เป็นอย่างไร ใช้ซูเปอร์คลาสนั้นเป็นพื้นฐานสำหรับชื่อคลาสย่อย "
อินเตอร์เฟซ
อินเทอร์เฟซการตั้งชื่อสองรูปแบบขึ้นอยู่กับว่าคุณคิดอย่างไรกับอินเทอร์เฟซ ควรตั้งชื่ออินเทอร์เฟซเป็นคลาสที่ไม่มีการนำไปใช้ราวกับว่าเป็นคลาส ( Simple Superclass Name , Qualified Subclass Name ) ปัญหาอย่างหนึ่งของการตั้งชื่อสไตล์นี้คือชื่อที่ดีจะถูกใช้หมดก่อนที่คุณจะเข้าสู่คลาสการตั้งชื่อ อินเทอร์เฟซที่เรียกว่าFileต้องการคลาสการใช้งานที่เรียกว่า
ActualFile , ConcreteFileหรือ (yuck!) FileImpl(ทั้งคำต่อท้ายและตัวย่อ) โดยทั่วไปการสื่อสารว่าใครกำลังจัดการกับวัตถุที่เป็นรูปธรรมหรือนามธรรมเป็นสิ่งสำคัญไม่ว่าจะนำวัตถุนามธรรมมาใช้เป็นอินเทอร์เฟซหรือซูเปอร์คลาสมีความสำคัญน้อยกว่า การชะลอความแตกต่างระหว่างอินเทอร์เฟซและซูเปอร์คลาสเป็นสิ่งที่ดี> รองรับโดยรูปแบบการตั้งชื่อนี้ทำให้คุณมีอิสระที่จะเปลี่ยนใจในภายหลังหากจำเป็น
บางครั้งการตั้งชื่อคลาสที่เป็นรูปธรรมก็มีความสำคัญต่อการสื่อสารมากกว่าการซ่อนการใช้อินเทอร์เฟซ ในกรณีนี้ให้นำหน้าชื่ออินเทอร์เฟซด้วย“ I” ถ้าอินเตอร์เฟซที่เรียกว่าiFileชั้นสามารถเรียกได้ว่าเพียงแค่ไฟล์
สำหรับรายละเอียดเพิ่มเติมซื้อหนังสือเล่มนี้! มันคุ้มค่า! :)