ฉันดึงคำว่า smurf ตั้งชื่อจากที่นี่ (หมายเลข 21) ในการบันทึกทุกคนที่ไม่คุ้นเคยปัญหาที่ Smurf การตั้งชื่อคือการกระทำของ prefixing พวงของการเรียนที่เกี่ยวข้องกับตัวแปรอื่น ๆ ที่มีคำนำหน้าร่วมกันเพื่อให้คุณจบลงด้วยการที่ " SmurfAccountView
ผ่านSmurfAccountDTO
ไปSmurfAccountController
" ฯลฯ
วิธีแก้ปัญหาที่ฉันเคยได้ยินโดยทั่วไปคือการสร้าง smurf namespace และวางคำนำหน้า smurf โดยทั่วไปฉันใช้งานได้ดี แต่ฉันพบปัญหาสองอย่าง
ฉันทำงานกับห้องสมุดที่มี
Configuration
ชั้นเรียน มันอาจจะได้รับการเรียกWartmongerConfiguration
แต่ก็ใน namespace WartmongerConfiguration
จึงเรียกว่าเพียงแค่ ฉันก็มีConfiguration
คลาสที่สามารถเรียกSmurfConfiguration
ได้ แต่มันอยู่ในเนมสเปซ Smurf เพื่อที่จะซ้ำซ้อน มีสถานที่ในรหัสของฉันที่Smurf.Configuration
ปรากฏอยู่ด้านข้างWartmonger.Configuration
และพิมพ์ชื่อที่ผ่านการรับรองครบถ้วนแล้วเป็น clunky และทำให้โค้ดอ่านน้อยลง มันจะดีกว่าที่จะจัดการกับSmurfConfiguration
และWartmongerConfiguration
(ถ้ามันเป็นรหัสและไม่ห้องสมุดของฉัน)ฉันมีคลาสที่เรียกว่า
Service
ในเนมสเปซ Smurf ซึ่งอาจเรียกได้ว่าSmurfService
เป็นService
เป็นส่วนหน้าของห้องสมุด Smurf ที่ซับซ้อนซึ่งดำเนินงาน SmurfSmurfService
ดูเหมือนชื่อที่ดีกว่าเพราะService
ไม่มีคำนำหน้า Smurf เป็นเรื่องธรรมดาอย่างไม่น่าเชื่อ ฉันยอมรับได้ว่าSmurfService
ชื่อสามัญไร้ประโยชน์อยู่แล้วและการกำจัด smurf ทำให้สิ่งนี้ชัดเจนยิ่งขึ้น แต่มันจะได้รับการตั้งชื่อRunner
,Launcher
ฯลฯ และมันจะยังคงเป็น "รู้สึกดี" ให้ฉันเป็นSmurfLauncher
เพราะผมไม่ได้รู้ว่าสิ่งที่Launcher
ไม่ แต่ฉันรู้ว่าสิ่งที่SmurfLauncher
ทำ คุณสามารถยืนยันว่าสิ่งที่Smurf.Launcher
ควรจะชัดเจนพอ ๆ กับSmurf.SmurfLauncher
แต่ฉันเห็น `Smurf.Launcher เป็นคลาสที่เกี่ยวข้องกับการตั้งค่ามากกว่าคลาสที่เปิดตัวสเมิร์ฟ
หากมีวิธีการเปิดและปิดเพื่อจัดการกับทั้งสองอย่างนี้จะดี ถ้าไม่เป็นเช่นนั้นมีวิธีปฏิบัติทั่วไปอะไรบ้างที่จะลดความน่ารำคาญของพวกเขา?
SmurfJob
หรือเรียกใช้พวกเขาทางเทคนิคเพื่อให้สอดคล้องกับภาษาของเอกสาร Smurf ในแง่ของการที่และคำตอบอื่น ๆ ฉันจะเปลี่ยนชื่อไปSmurfService
SmurfJobRunner
ดูเหมือนว่าหมายเลข 1 ไม่มีความละเอียดภาษาที่ดีที่สุดที่ฉันคาดหวัง ฉันสามารถดูกรณีที่จะมีSmurfConfiguration
จะมีการโทรที่ถูกต้อง แต่ในกรณีของฉันฉันคิดว่าดีที่สุดคือแม้จะมีความยุ่งยากของConfiguration
Wartmonger.Configuration
Smurf.Configuration
และSmurfConfiguration
รู้สึกแตกต่าง แน่นอนมันไม่ใช่ตัวละครพิเศษใช่ไหม? (ย่อให้สั้นลงConfig
หากความยาวเป็นปัญหา) Smurf.Configuration
มีปัญหาใด ๆ ที่SmurfConfiguration
ไม่มีหรือไม่
Smurf.Launcher
สเมิร์ฟเปิดตัวหรือไม่ก็เปิดSmurfJob
หรือไม่? บางทีมันอาจจะถูกเรียกว่าSmurf.JobLauncher
?