การตั้งชื่อคลาสและอินเตอร์เฟสที่เกี่ยวข้อง


9

ฉันได้สร้างObjectParserคลาสที่แยกวิเคราะห์ข้อมูลเป็นวัตถุที่พิมพ์อย่างยิ่งโดยใช้IObjectParserDataSourceเป็นแหล่งข้อมูล (ข้อมูลอาจเป็นไฟล์ Excel, ไฟล์ข้อความ, อาเรย์, สตริงการสืบค้น ฯลฯ )

ตัวอย่างของการใช้งานของฉันIObjectParserDataSourceคือ:

  • TextFileObjectParserDataSource
  • ExcelFileObjectParserDataSource

ชื่อชั้นเหล่านี้ให้ความรู้สึกยาวและโน้มน้าวใจฉัน

ฉันชื่อพวกเขาได้:

  • TextFileDataSource
  • ExcelFileDataSource

แต่สิ่งนี้นำเสนอระดับความคลุมเครือและพวกเขาก็ไม่ได้เกี่ยวข้องอย่างชัดเจนกับการIObjectParserDataSourceมองแวบแรก สิ่งนี้กลายเป็นสิ่งสำคัญเนื่องจากการกำหนดแหล่งข้อมูลเหล่านี้จะเกิดขึ้นในรหัสลูกค้าและฉันต้องการลดความสับสนและความไม่แน่นอนที่อาจเกิดขึ้น

คุณจะตั้งชื่อคลาสเหล่านี้ในสถานการณ์จำลองได้อย่างไร?


1
ฉันไม่คิดว่าชื่อปัจจุบันของคุณยาวเกินไปและซับซ้อนเกินไป
AakashM

ฉันกำลังโยนความคิดนี้ออกไป แต่ฉันไม่แนะนำ: ถ้าคุณใช้สตริงเดียวกัน (เช่น "ObjectParserDataSource") ในการตั้งชื่อของคุณมีจำนวนมาก ExcelFileOPDS, TextFileOPDS. มันช่วยประหยัดพื้นที่ในการพิมพ์และหน้าจอเล็กน้อย แต่มันเป็นสิ่งที่ไม่ชัดเจนสำหรับคนที่ไม่คุ้นเคยกับรหัส
Bobson

คำตอบ:


22

ฉันมักจะพยายามแก้ไขปัญหานี้โดยติดวัตถุที่คล้ายกันทั้งหมดไว้ในเนมสเปซเดียวและทำให้ชื่อของมันง่ายขึ้น (ถ้าฉันสามารถทำได้)

ตัวอย่างเช่นจะมี

ObjectParserDataSources namespace
|
| -> คลาส TextFileSource
| -> คลาส ExcelFileSource

หรือถ้าคอลเลกชันของวัตถุที่ทำงานกับ / บริการObjectParserมีขนาดใหญ่พอฉันจะสร้างแผนผังโฟลเดอร์แยกต่างหากหรือโครงการที่อุทิศให้กับ ObjectParser:

namespace ObjectParser
|
|-> class ObjectParser
|-> interface IObjectParserDataSource
|
|-> namespace DataSources
|   |
|   |-> class TextFileSource
|   |-> class ExcelFileSource
|
|-> other stuff...

ภายในไฟล์ที่กำหนดคำสั่งนำเข้าและบริบทรหัสมักจะทำให้ชัดเจนว่าTextFileSourceเป็นObjectParserแหล่งข้อมูล หากมีคลาสที่มีชื่อคล้ายกันหลายตัวในรหัสเดียวกันคุณสามารถอ้างอิงTextFileSourceโดยใช้ชื่อเต็มของมัน:

var parserSource = new ObjectParser.DataSources.TextFileSource(/*...*/);

มันมักจะเกิดขึ้นน้อยมากและฉันก็ไม่สนใจที่จะพิมพ์คำสองสามคำเพิ่มเติม


1
คุณบันทึกฉันเวลาในการพิมพ์คำตอบเดียวกันกับที่ :)
ไมเคิลบราวน์

1
+1 โซลูชันนี้ปรับปรุงความสามารถในการอ่านโดยไม่ลดความคมชัด
John Cartwright
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.