Seringkali, di perpustakaan khususnya, paket berisi kelas-kelas yang disusun berdasarkan konsep tunggal. Contoh: xml, sql, pengguna, konfigurasi, db . Saya pikir kita semua merasa cukup alami bahwa paket-paket ini benar dalam bentuk tunggal .
com.myproject. xml .Element
com.myproject. sql .Connection
com.myproject. pengguna. Pengguna
com.myproject. pengguna .UserFactory
Namun, jika saya memiliki paket yang benar-benar berisi kumpulan implementasi dari satu jenis - seperti tugas, aturan, penangan, model, dll. , Mana yang lebih disukai?
com.myproject. tugas .TakeOutGarbageTask
com.myproject. tugas .DoTheDishesTask
com.myproject. tugas. PaintTheHouseTask
atau
com.myproject. tugas .TakeOutGarbageTask
com.myproject. tugas .DoTheDishesTask
com.myproject. tugas .PaintTheHouseTask
sumber
Jawaban:
Gunakan bentuk jamak untuk paket dengan konten homogen dan tunggal untuk paket dengan konten heterogen.
Kelas mirip dengan relasi basis data. Relasi basis data harus dinamai dalam singular karena rekamannya dianggap sebagai instance relasi. Fungsi relasi adalah untuk menyusun catatan yang kompleks dari data sederhana.
Paket, di sisi lain, bukan abstraksi data. Ini membantu dengan pengaturan kode dan resolusi konflik penamaan. Jika sebuah paket dinamai dalam singular, itu tidak berarti bahwa setiap anggota paket adalah turunan dari paket tersebut; itu mengandung konsep-konsep yang terkait tetapi heterogen. Jika ini dinamai dalam bentuk jamak (seperti yang sering terjadi ), saya akan berharap bahwa paket berisi konsep-konsep yang homogen.
Sebagai contoh, suatu jenis harus dinamai
TaskCollection
bukanTasksCollection
, karena itu adalah kumpulan yang berisi instance dari aTask
. Paket bernamacom.myproject.task
tidak berarti bahwa setiap kelas yang ada adalah turunan dari tugas. Mungkin adaTaskHandler
, seorangTaskFactory
, dll paket bernamacom.myproject.tasks
, bagaimanapun, akan berisi berbagai jenis yang semua tugas:TakeOutGarbageTask
,DoTheDishesTask
, dllsumber
beans
jamak, namunjava.beans
berisi semua jenis kelas yang terkait dengan JavaBeans.java.beans
.Ini mungkin tergantung pada bahasa tertentu. Dalam .NET (C #) itu pasti harus jamak jika kemungkinan tabrakan nama-jenis namespace (
type name expected but namespace found
kesalahan). Saya sudah membahas hal ini, itu tidak menyenangkan dan menghasilkan nama tipe yang terlalu memenuhi syarat di seluruh kode. Contoh .sumber