Saya menarik istilah penamaan smurf dari sini (nomor 21). Untuk menyelamatkan siapa pun yang tidak mengenal masalahnya, penamaan Smurf adalah tindakan prefixing sekelompok kelas terkait, variabel, dll dengan awalan umum sehingga Anda berakhir dengan "a SmurfAccountView
pass a SmurfAccountDTO
to the SmurfAccountController
", dll.
Solusi yang umumnya saya dengar adalah membuat namespace smurf dan meletakkan awalan smurf. Ini umumnya bermanfaat bagi saya, tetapi saya mengalami dua masalah.
Saya bekerja dengan perpustakaan dengan
Configuration
kelas. Itu bisa saja dipanggilWartmongerConfiguration
tapi ada di namespace Wartmonger, jadi baru saja dipanggilConfiguration
. Saya juga memilikiConfiguration
kelas yang bisa dipanggilSmurfConfiguration
, tetapi berada di namespace Smurf sehingga akan menjadi berlebihan. Ada tempat di kode saya di manaSmurf.Configuration
muncul di sampingWartmonger.Configuration
dan mengetik nama yang sepenuhnya memenuhi syarat adalah kikuk dan membuat kode kurang dapat dibaca. Akan lebih baik untuk berurusan denganSmurfConfiguration
dan (jika itu kode saya dan bukan perpustakaan)WartmongerConfiguration
.Saya memiliki kelas yang dipanggil
Service
dalam namespace Smurf saya yang bisa dipanggilSmurfService
.Service
adalah fasad di atas perpustakaan Smurf yang kompleks yang menjalankan pekerjaan Smurf.SmurfService
sepertinya nama yang lebih baik karenaService
tanpa awalan Smurf sangat luar biasa. Saya dapat menerima bahwaSmurfService
itu sudah generik, nama yang tidak berguna dan menghapus smurf hanya membuat ini lebih jelas. Tapi itu bisa saja dinamaiRunner
,,Launcher
dll dan itu akan tetap "terasa lebih baik" bagi sayaSmurfLauncher
karena saya tidak tahu apa yangLauncher
dilakukan, tetapi saya tahu apa yangSmurfLauncher
tidak. Anda bisa berargumen bahwa apa yangSmurf.Launcher
dilakukan harus sejelas aSmurf.SmurfLauncher
, tapi saya bisa melihat `Smurf.Launcher menjadi semacam kelas yang terkait dengan pengaturan daripada kelas yang meluncurkan smurf.
Jika ada cara terbuka dan tertutup untuk menangani salah satu dari ini, itu akan menjadi hebat. Jika tidak, apa sajakah praktik umum untuk mengurangi gangguan mereka?
SmurfJob
s, atau secara teknis menjalankannya agar konsisten dengan bahasa dokumentasi Smurf. Mengingat itu dan jawaban lainnya, saya akan mengganti nama SmurfService
menjadi SmurfJobRunner
. Tampaknya nomor 1 tidak memiliki resolusi agnostik bahasa terbaik seperti yang saya harapkan. Saya dapat melihat contoh di mana pergi dengan SmurfConfiguration
akan menjadi panggilan yang tepat, tetapi dalam kasus saya, saya pikir Configuration
yang terbaik bahkan dengan kerumitan Wartmonger.Configuration
.
Smurf.Configuration
dan SmurfConfiguration
terasa berbeda? Tentunya itu bukan char ekstra, kan? (Lebih Config
pendek jika panjang masalahnya). Apakah Smurf.Configuration
ada masalah yang SmurfConfiguration
tidak?
Smurf.Launcher
meluncurkan smurf, atau meluncurkanSmurfJob
? Mungkin itu bisa disebutSmurf.JobLauncher
?