Penamaan kelas dan antarmuka terkait

9

Saya telah membuat ObjectParserkelas yang mem-parsing data menjadi objek yang sangat diketik menggunakan IObjectParserDataSourcesumber data (data bisa berupa file Excel, file teks, array, string kueri, dll).

Contoh implementasi saya IObjectParserDataSourceadalah:

  • TextFileObjectParserDataSource
  • ExcelFileObjectParserDataSource

Nama-nama kelas ini terasa sangat panjang dan berbelit-belit bagi saya.

Saya bisa memberi nama mereka:

  • TextFileDataSource
  • ExcelFileDataSource

Tapi ini menimbulkan tingkat ambiguitas dan mereka tidak menjadi sejelas terkait dengan IObjectParserDataSourcepandangan pertama. Ini menjadi penting karena mendefinisikan sumber data ini akan terjadi dalam kode klien dan saya ingin meminimalkan potensi kebingungan dan ketidakpastian.

Bagaimana Anda memberi nama kelas-kelas ini dalam skenario seperti itu?

Dave New
sumber
1
Saya tidak berpikir nama Anda saat ini terlalu panjang dan berbelit-belit.
AakashM
Saya melemparkan ide ini di luar sana, tetapi saya tidak merekomendasikannya: Jika Anda menggunakan string yang sama (seperti "ObjectParserDataSource") banyak dalam penamaan Anda, akronimlah. ExcelFileOPDS, TextFileOPDS. Ini menghemat sedikit pada pengetikan dan ruang layar, tapi itu buram bagi seseorang yang tidak terbiasa dengan kode.
Bobson

Jawaban:

22

Saya biasanya mencoba untuk mengatasi masalah ini dengan menempelkan semua objek serupa ke dalam satu namespace dan menyederhanakan nama mereka (jika saya bisa melakukannya).

Misalnya, mau

namespace ObjectParserDataSources
|
| -> kelas TextFileSource
| -> kelas ExcelFileSource

Atau, jika koleksi benda-benda bekerja dengan / servis ObjectParsermenjadi cukup besar, aku akan membuat pohon folder terpisah atau proyek yang ditujukan hanya untuk ObjectParser:

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

Dalam setiap file yang diberikan, laporan impor dan konteks kode biasanya akan membuatnya cukup jelas bahwa TextFileSourceadalah ObjectParsersumber data. Jika ada beberapa kelas dengan nama yang sama di bagian kode yang sama, Anda dapat merujuk TextFileSourcedengan nama lengkapnya:

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

Ini biasanya terjadi sangat jarang dan saya tidak keberatan mengetik beberapa kata tambahan.

ikh
sumber
1
Anda menyelamatkan saya saat mengetik jawaban yang sama :)
Michael Brown
1
+1. Solusi ini meningkatkan keterbacaan tanpa mengurangi kejelasan.
John Cartwright