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 .