Kita semua akrab dengan konvensi nama paket Java untuk mengubah nama domain. Yaitu www.evilcorp.com
, dengan konvensi, memilih untuk memiliki paket java mereka com.evilcorp.stuff
.
Semakin saya muak dengan ini. Sebagai seorang programmer komersial, saya menemukan berkali-kali bahwa nama paket perangkat lunak sama sekali tidak relevan karena beberapa mengubah citra, akuisisi atau serupa.
Di dunia opensource ada sedikit perubahan nama jadi itu masuk akal. Namun menurut saya umur simpan banyak perangkat lunak (komersial / internal) jauh lebih lama daripada yang dibuat oleh organisasi.
Masalahnya sering diperburuk oleh proyek-proyek perangkat lunak yang mengambil pimpinan departemen pemasaran untuk menggunakan nama du jour yang mereka gunakan merujuk pada proyek tertentu. Sebuah nama yang, tanpa gagal, akan berubah 3 bulan ke depan untuk membuat pakaian baru sang kaisar terasa segar dan baru.
Karena itu, saya sering berhenti menggunakan domain terbalik sebagai nama paket. Memang, jika ini dilakukan dalam skala besar, ada risiko tabrakan nama, tetapi pasti ini dikurangi dengan menggunakan nama perangkat lunak "unik", menghindari kata-kata umum, atau menggunakan domain terbalik untuk proyek yang dimaksudkan untuk dijual / dirilis sebagai perpustakaan. .
Pikiran lain?
We're all familiar with the Java package name convention of turning the domain name around.
- um..tidak kita bukan ... :)com.java.etc.etc
. Apache (di situs Apache.org) memberi nama paket merekaorg.apache.etc.etc
. Anda melihat polanya.Jawaban:
Saya akan mengutip saran yang diberikan Microsoft untuk ruang nama (paket .NET), yang tidak memiliki konvensi nama domain. Saya pikir itu saran yang baik untuk paket Java juga, karena saya tidak percaya bahwa nama domain mewakili identitas yang solid dan stabil.
Jika bahkan nama perusahaan Anda tidak stabil, Anda mungkin ingin memulai dengan nama produk.
sumber
Anda mencari solusi untuk masalah yang berbeda, yaitu bagaimana kita menghindari programmer X dan programmer Y saling menginjak jari kaki dengan meletakkan file dalam paket yang sama.
"Just reverse your domain name" selesaikan ini dengan cara yang elegan, karena Anda cukup yakin bahwa jika X dan Y tidak terkait, mereka tidak akan memilih ruang nama paket yang sama.
sumber
Konvensi ini tidak cacat. Orang-orang cacat, seperti yang telah Anda gambarkan dengan baik.
Saya dapat memikirkan 2 manfaat:
sumber
Nama domain terbalik digunakan untuk menghindari benturan nama jika organisasi yang berbeda menggunakan nama kelas yang sama di perpustakaan mereka. Ini adalah solusi yang sederhana dan off cource memiliki beberapa kekurangan (misalnya bagaimana dengan tabrakan nama untuk kelas di organisasi yang sama?).
Anda tidak diwajibkan untuk menggunakannya, itu adalah konvensi bukan aturan do or die. Sebagai contoh, beberapa programmer Java tidak menghormati Konvensi Kode Java .
Tetapi pertimbangkan alternatifnya. Bagaimana Anda, misalnya, menyukai dua nama kelas yang sepenuhnya memenuhi syarat untuk LogFactory:
atau
Jadi, menurut saya, gunakan apa pun yang Anda suka asalkan termasuk akal sehat dan pertimbangan untuk pengguna perpustakaan Anda.
sumber
Ketika saya memulai proyek baru, saya selalu menekankan nama internal dan tidak dapat diubah yang mungkin atau tidak diketahui oleh orang-orang pemasaran, karena hanya akan disebut dalam kode sumber. Dengan begitu, saya tidak perlu khawatir tentang perubahan nama proyek dan polusi namespace.
Skenario ini cocok untuk saya, karena kode sumber biasanya bukan merupakan bagian penting dari produk, yaitu proyek biasanya merupakan sumber tertutup, sistem berpemilik. Namun, dalam proyek open-source di mana kode sumbernya adalah produk, ini mungkin tidak layak.
sumber