Pertanyaan yang canggung dan terbuka, tapi ini masalah yang selalu saya lawan:
Perangkat lunak yang mudah dirawat dan digunakan adalah perangkat lunak yang dirancang dengan baik. Mencoba membuat desain yang intuitif berarti memberi nama komponen Anda sedemikian rupa sehingga pengembang berikutnya harus dapat menyimpulkan fungsi komponen. Inilah sebabnya kami tidak memberi nama kelas kami "Type1", "Type2", dll.
Saat Anda memodelkan konsep dunia nyata (mis. Pelanggan), ini umumnya sesederhana memberi nama tipe Anda setelah konsep dunia nyata dimodelkan. Tetapi ketika Anda sedang membangun hal-hal abstrak, yang lebih berorientasi sistem, sangat mudah kehabisan nama yang mudah dibaca dan mudah dicerna.
Semakin buruk (bagi saya) ketika mencoba untuk menamai keluarga jenis, dengan tipe-dasar atau antarmuka yang menggambarkan apa yang harus dilakukan komponen, tetapi tidak bagaimana mereka bekerja. Ini secara alami mengarah ke masing-masing jenis turunan yang mencoba menggambarkan rasa implementasi (misalnya IDataConnection
dan SqlConnection
dalam .NET Framework), tetapi bagaimana Anda mengekspresikan sesuatu yang rumit seperti "bekerja dengan refleksi dan mencari set atribut tertentu"?
Kemudian, ketika Anda akhirnya memilih nama untuk tipe yang menurut Anda menggambarkan apa yang ingin dilakukan, kolega Anda bertanya "WTF apakah ini DomainSecurityMetadataProvider
benar - benar dilakukan? "
Apakah ada teknik yang baik untuk memilih nama yang bermaksud baik untuk suatu komponen, atau bagaimana membangun kumpulan komponen tanpa mendapatkan nama yang kacau?
Apakah ada tes sederhana yang dapat saya terapkan pada nama untuk mendapatkan perasaan yang lebih baik untuk apakah nama itu "baik", dan harus lebih intuitif kepada orang lain?