Genellikle, özellikle kütüphanelerde, paketler tek bir kavram etrafında düzenlenmiş sınıflar içerir. Örnekler: xml, sql, kullanıcı, config, db. Sanırım hepimiz bu paketler tekil doğru olduğunu doğal olarak hissediyorum.
com.myproject .xml. Eleman
Com.myproject .SQL. Bağlantı
Com.myproject .kullanıcı. Kullanıcı
Com.myproject .kullanım. UserFactory
Ancak, aslında tek bir türden uygulamalar koleksiyon - görevler, kurallar, işleyiciler, modeller vb. gibi bir paketim varsa, hangisi tercih edilir?
com.myproject .görevler. TakeOutGarbageTask
Com.myproject .görevler. DoTheDishesTask
Com.myproject .görevler. PaintTheHouseTask
veya
com.myproject .görev. TakeOutGarbageTask
Com.myproject .görevi. DoTheDishesTask
Com.myproject .görevi. PaintTheHouseTask
Çoğulluğu homojen içerikli paketler için ve tekil içeriği heterojen içerikli paketler için kullanın.
Sınıf, veritabanı ilişkisine benzer. Kayıtları ilişkinin örnekleri olarak kabul edildiğinden, bir veritabanı ilişkisi tekil olarak adlandırılmalıdır. Bir ilişkinin işlevi, basit verilerden karmaşık bir kayıt oluşturmaktır.
Öte yandan bir paket veri soyutlaması değildir. Kod düzenlemesine ve adlandırma çatışmalarının çözümlenmesine yardımcı olur. Bir paket tekil olarak adlandırılmışsa, paketin her üyesinin paketin bir örneği olduğu anlamına gelmez; ilgili fakat heterojen kavramları içerir. Çoğul olarak adlandırılmışsa ( genellikleare ), paketin homojen kavramlar içermesini beklerim.
Örneğin, TaskCollection
örneklerini içeren bir koleksiyon olduğu için, bir tür TasksCollection
yerine Task
olarak adlandırılmalıdır. com.myproject.task
Adlı bir paket, içerilen her sınıfın bir görev örneği olduğu anlamına gelmez. TaskHandler
, TaskFactory
vb. Olabilir. Ancak com.myproject.tasks
Adlı bir paket, tüm görevler için farklı türler içerecektir: TakeOutGarbageTask
, DoTheDishesTask
vb.
Bu muhtemelen belirli bir dile bağlıdır. .NET (C #) 'de, ad alanı türü bir ad çakışması olasılığı varsa kesinlikle çoğul olmalıdır (type name expected but namespace found
hata). Ben bununla uğraştım, hoş değil ve kodun her yerinde aşırı niteleyici tip isimleri ile sonuçlanır. Örnek .