Konvensi penamaan paket apa yang Anda gunakan untuk proyek pribadi / hobi di Jawa?


143

Saya sudah terbiasa dengan konvensi penamaan paket Java standar menggunakan nama domain untuk membuat nama paket yang unik (yaitu paket com.stackoverflow.widgets). Namun, saya belum pernah melihat rekomendasi untuk bagaimana memilih nama paket untuk proyek pribadi. Saya berasumsi karena ini karena ini benar-benar masalah selera pribadi.

Jadi, bagaimana Anda memilih nama paket untuk proyek pribadi yang tidak akan pernah membuatnya menjadi produksi (Anda mungkin bereksperimen dengan kerangka kerja baru di waktu luang Anda). Dengan asumsi Anda tidak memiliki situs web pribadi yang domainnya dapat Anda gunakan untuk membuat struktur paket Anda, apa yang akan (atau akan) Anda lakukan? Apakah Anda memiliki sistem logis untuk menghasilkan nama paket baru untuk proyek hobi, atau apakah Anda hanya menggunakan nama paket yang mudah dibuang seperti mypackage?

Karena saya hanya ingin tahu apa pendapat orang-orang tentang hal ini, saya menjadikannya sebagai wiki komunitas.

Bagi saya pribadi, saya tidak pernah terlalu memikirkannya, tetapi saya ingin bermain-main dengan Wicket malam ini dan terlintas di benak saya bahwa saya tidak memiliki ide yang jelas tentang bagaimana saya ingin mengatur proyek hobi saya. Konvensi penamaan paket yang terpisah dan berbeda untuk proyek hobi (dalam pikiran saya, setidaknya) akan berfungsi sebagai cara yang baik untuk menjaga kode pribadi dan yang terkait dengan pekerjaan jelas terpisah satu sama lain.

Saya sedang memikirkan konvensi penamaan hierarki sederhana, untuk menjaga sumber proyek pribadi saya dalam satu folder root:

  • Gunakan myprojectssebagai folder root
  • Tambahkan nama proyek
  • Tambahkan nama sub-paket tambahan

Jadi, proyek Wicket saya akan ada dalam paket myprojects.learningwicketdan tes unit akan ada dalam paket myprojects.learningwicket.tests(misalnya).


1
Umum, dapatkan sendiri domain pribadi (firstname-lastname.net) dan gunakan sebagai nama paket. Tujuan paket adalah untuk menjadi unik secara global, sehingga proyek-proyek kecil tidak benar-benar memotongnya.
Vladimir Dyuzhev

5
Menggunakan domain .onion juga merupakan opsi (seperti onion.duskgytldkxiuqc6.packagename). Selama kunci pribadi tetap rahasia, Anda mengendalikan nama domain. Jadi gratis untuk mendaftar (menghasilkan), dan itu permanen (tidak seperti domain konvensional). Itu sesuai dengan surat konvensi Java, dan itu mengidentifikasi Anda secara unik.
sastanin

14
Anda selalu dapat membuat akun GitHub dan menggunakan io.github.username. *.
Bardi Harborow

2
@BardiHarborow terima kasih, saya menggunakan saran Anda.
Nick Volynkin

3
@GabrielBB, GitHub Pages memungkinkan Anda untuk meng-host situs HTML dan Jekyll di yourusername.github.io, dan karenanya subdomain github.io lebih "dijamin" sesuai dengan pengguna GitHub daripada subdomain github.com (yang mungkin digunakan untuk internal Proyek GitHub kapan saja).
Bardi Harborow

Jawaban:


49

Jika Anda hanya melakukan proyek pribadi di mana tidak ada orang lain yang akan menggunakan kode, maka Anda dapat membuat nama paket yang Anda sukai. Jangan membuat sesuatu yang dimulai dengan com.atau net.atau domain tingkat atas lainnya, karena itu akan menyiratkan bahwa Anda memiliki nama domain (mis. Menggunakan com.johnsebagai nama paket Anda hanya karena nama Anda kebetulan John bukan ide yang baik) .

Jika Anda akan memberikan kode kepada orang lain, Anda harus menggunakan nama paket yang unik secara global, yang menurut konvensi Java berarti Anda harus mendaftar dan menggunakan nama domain.


1
Jadi, jika saya ingin membahas nama paket, com.xyzapakah nama paket ini harus terdaftar di suatu tempat ?? PS xyzadalah klien saya.
Prasad

9
Saya ingin tahu apakah saya dapat menggunakan id github saya untuk itu dan domain github? Misalnya com.github.mygithubid.myproject?
Kirill G.

2
@ KirillG. Saya akan merekomendasikan untuk tidak melakukannya, karena ID GitHub dapat diubah kapan saja, berapa kali. Memang, domain apa pun dapat berubah, tetapi tidak dengan mudah atau sering (biasanya tidak pula). Meskipun saya kira tidak apa-apa untuk proyek hobi.
sara

26

Saya hanya menggunakan inisial saya: fg.nameofproject.etc

Ini mengurangi mengetik. Itu bisa diawali kapan saja dengan sf.net atau com. atau org. atau com.google ..

Karena proyek ini memperlakukan pribadi itu istimewa seperti halnya kemeja hadiah yang baru saja dipersonalisasi - itu akan terasa enak.


42
bond.james.007
Klik Suara positif

19
@ klik sesuai dengan pedoman yang akan bond.james._007- tidak memiliki cincin yang sama untuk itu ...: - {
corsiKa

20
pmurray_at_bigpond_dot_com.project.package

2
+1. Pintar. Ini memberi Anda nama paket unik dan mengidentifikasi penulis sekaligus.
Mike Spross

19

<sarcasm>Bah Setiap programmer yang menghargai diri sendiri akan memiliki nama domain sendiri. Ini jelas pertanyaan jebakan. Setiap orang memiliki nama domain pribadi mereka sendiri! </sarcasm>:-)

Oke, dalam semua keseriusan, membeli nama domain khusus mungkin merupakan opsi termudah. Untuk sekitar $ 10 per tahun, Anda dapat menemukan penyedia terkemuka untuk meng-host domain dan meneruskan email.


18
Anehnya, ini akan meningkatkan kepercayaan diri Anda juga.
jamesh

26
Jawaban yang bagus, tetapi programmer pemula mungkin tidak mau membeli situs web hanya untuk mengikuti beberapa situs web tutorial atau video tentang cara membuat GUI dengan tombol tutup.
Jochem Kuijpers

17

Saya menyimpan sebagian besar proyek-proyek hobi saya di Google Code, jadi saya hanya menggunakan lokasi proyek sebagai nama paket: com.googlecode.donkirkby.someproject.


8
Bagaimana kita bisa buta untuk tidak melihat kebodohan dari tindakan kita ?!
Joey Sabey

1
Anda merindukan Google Code, @ Joey? Saya sebagian besar menggunakan GitHub selama beberapa tahun terakhir, jadi saya hanya perlu memindahkan beberapa proyek lama saya dari Google Code sebelum ditutup.
Don Kirkby

Jadi, apakah Anda mengganti nama paket, menyimpan nama googlecode, atau ...?
serv-inc

1
Saya belum menggunakan salah satu kode lama sejak saya memindahkannya, @ serv-inc. Pilihan mana pun akan berhasil.
Don Kirkby

3

nama saya anjan

biasanya, saya menggunakan com.anjan

Saya memiliki perusahaan fantasi sendiri - kadang-kadang saya menggunakannya

tradisi dengan sourceforge (seperti yang ditunjukkan oleh hibernate dan paket lainnya) adalah net.sf. *

jadi, tergantung pada suasana hati Anda, Anda bisa melakukannya.


13
Kecuali Anda juga memiliki anjan.com, saya pikir Anda salah besar dalam melakukannya.
Fredrik

7
@Fredrick untungnya, sepertinya anjan.com tidak akan merilis perpustakaan dalam waktu dekat.
corsiKa

1
@corsiKa: Anda benar, selama saya tidak melepaskan apa pun, saya baik-baik saja. :-)
anjanb

3
@anjanb Yah, saya pergi ke situs web mereka. Mereka melakukan makanan hewan. Saya bukan ahli, tetapi kebanyakan perusahaan makanan hewan tidak merilis banyak perpustakaan perangkat lunak =)
corsiKa

3

Saya pikir Anda sudah berhasil. Godaan untuk menghindari di sini adalah untuk tidak repot-repot dengan nama paket sama sekali. Sangat mudah untuk menyimpan beberapa penekanan tombol karena "Saya hanya menulis beberapa kode uji." Tetapi kemudian kode itu menjadi bagus dan bermanfaat dan besar, dan kemudian Anda menyadari bahwa Anda memiliki awal yang kuat untuk apa yang mungkin menjadi perpustakaan atau aplikasi yang berumur panjang. Mungkin bukan perpustakaan atau aplikasi yang pernah meninggalkan jaringan rumah Anda, tetapi intinya adalah, Anda tidak berpikir ke depan. Itulah hantu Denmark dalam ilmu komputer - selalu berpikir ke depan, jika hanya sedikit.

Konvensi penamaan yang saya gunakan untuk kode hobi saya sangat mirip dengan Anda. Saya memiliki direktori tingkat atas bernama "futura" (panjang, alasan yang membosankan mengapa nama itu muncul) dimana semua kode saya hang off. Saya mencoba dan mengatur kode saya ke pustaka paket, bahkan jika itu mungkin kelas atau paket yang saya tidak pernah gunakan untuk proyek lain. Saya menempatkan semua aplikasi (yaitu, apa pun yang memiliki void main (String [] args) di kelas) di folder futura.app. *. Saya juga mencoba untuk meniru nama paket perpustakaan Java standar untuk kode saya sendiri, meskipun dalam beberapa kasus saya melanggar konvensi karena selera saya sendiri (yaitu futura.inet untuk Internet, bukan hanya soket, kode, dan futura. Koleksi untuk non hal-hal sepele.) Mengutip David Mamet: Selalu bersikap generik. Selalu generik!

Dari perawatan yang Anda gunakan untuk mengirim pertanyaan, saya curiga Anda setuju dengan poin terakhir saya juga: Anda tidak harus memperlakukan peretasan hobi sebagai proyek tingkat perusahaan, tetapi jika Anda membawa sebagian dari disiplin itu ke pertandingan kandang, hobi itu semakin bermanfaat.


2

Saya menggunakan URL OpenID saya dan kemudian saya tambahkan nama proyek saya. misalnya, com.myopenid.cd1.twitteradalah paket root dari klien Twitter yang telah saya kembangkan.


Saya suka ini, tetapi kemudian saya menyadari itu tidak ada lagi. :( janrain.com/myopenid-service-ends "Pada 1 Februari 2014, layanan MyOpenID telah dimatikan."
successhawk


1

Saya hanya menggunakan nama saya: surname.initials.xxx, sebagai kompromi yang bagus antara keringkasan dan penghindaran tabrakan. Saya pikir itu akan memberikan tabrakan namespace gratis yang masuk akal jika saya pernah memilih untuk mempublikasikan kode secara publik. Saya juga punya sedikit program yang saya tulis yang dapat mengemas ulang seluruh pohon direktori jadi saya pikir saya harus membungkus ulang untuk penerbitan itu tidak menyakitkan ... karena itu saya tidak kehilangan terlalu banyak tidur di atasnya.

Setelah nama keluarga.initials.xxx, saya menggunakan aplikasi untuk paket aplikasi, lib untuk paket perpustakaan, dan untuk hal-hal yang saya murni coba-coba.


1

apa pendapat Anda tentang lastname.firstname.project ??? seperti luz.marlon.project?


16
Itu mungkin bekerja untuk Anda, tetapi John Smith dan Bob Jones mungkin mengalami konflik ketika mereka ingin merilis kode mereka suatu hari nanti.
Bill the Lizard

0

Saya berpikir tentang mengajukan pertanyaan yang sama. Sejauh ini saya telah menggunakan awalan com.tehvan, meskipun saya sebenarnya tidak memiliki perusahaan.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.