ในทีมของฉันเราทำงานอย่างใกล้ชิดกับสถาปนิกซอฟต์แวร์เพียงไม่กี่คน พวกเขาอนุมัติการตัดสินใจการออกแบบทั้งหมดของโครงการของเราทำการทบทวนโค้ด ฯลฯ
โครงการของเราประกอบด้วยฟังก์ชันแบ็คเอนด์ส่วนใหญ่ที่ใช้ใน PHP โดยใช้เฟรมเวิร์ก Symfony 2 ดังนั้น syntactically รหัส, การตั้งชื่อแบบแผนและโครงสร้างโครงการดูเหมือนเกือบจะเหมือนกับสิ่งที่ Java จะมีลักษณะ (Symfony 2 สนับสนุนโครงสร้างดังกล่าว) ฉันกำลังพูดถึงเรื่องนี้เพราะอนุสัญญาเฉพาะ Java ยังใช้ในกรณีของเรา (ถ้าเป็นไปได้)
เมื่อเร็ว ๆ นี้พวกเขาชี้ให้เห็นบางสิ่งบางอย่างที่ผมพบที่แปลกมาก: วิธีการทั้งหมดที่ควรจะมีในสันธานเช่นชื่อของพวกเขาgetEntityOrNull
, setValueOrException
ฯลฯ
การตั้งชื่อแบบนี้รู้สึกผิดกับฉันมาก แต่ฉันไม่สามารถหาข้อโต้แย้งที่เป็นรูปธรรมหรือบทความ / หน้าเว็บออนไลน์ที่ท้าทายเรื่องนี้โดยเฉพาะได้
สิ่งเดียวที่ฉันคิดไว้คือ:
- ข้อมูลดังกล่าวควรมีอยู่ในคำอธิบายประกอบของวิธีเช่น
@return
หรือ@throws
- การใช้คำสันธาน ("และ", "หรือ" ฯลฯ ) ในชื่อวิธีมักจะแนะนำว่าหลักการความรับผิดชอบเดี่ยวไม่ได้รับการเคารพอย่างเหมาะสม
อะไรคือข้อโต้แย้งที่เป็นรูปธรรมอื่น ๆ ต่ออนุสัญญาการตั้งชื่อนี้
the use of conjunctions ("and", "or" etc.) in method names usually suggest that the Single Responsibility Principle is not properly respected
นี่ไม่ใช่กรณีของตัวอย่างที่คุณระบุไว้เมื่อมีการใช้การรวมเพื่อชี้แจงกลไกที่ใช้ในการจัดการกับความล้มเหลวไม่ใช่เพื่อระบุว่ามันอาจทำสิ่งใดสิ่งหนึ่ง แม้แต่ฟังก์ชั่นที่แคบที่สุดที่กำหนดอาจมีเงื่อนไขความล้มเหลวที่ถูกต้องเช่นการเปิดสแต็กเปล่า
Int32.TryParse
และInt32.Parse
- ทั้งสองแยกสตริงเป็นจำนวนเต็ม แต่ก่อนส่งกลับบูลีนที่ระบุความสำเร็จและความล้มเหลวในภายหลัง
Try...
, ,...OrNull
...OrDefault
@EricLippert นั่นไม่ใช่เพียงการประชุมใน. net เท่านั้น พิจารณาSingle
เปรียบเทียบกับSingleOrDefault
ซึ่งใกล้เคียงกับOrNull
ข้อเสนอแนะของ OP มาก