Aynı ada sahip Sınıflarla nasıl başa çıkılır (farklı paketler)


9

Ben ve Ar-Ge ekibim büyük bir kod tabanına sahibiz. İş mantığımızı birden fazla pakete böldük. bazıları aynı isimlere sahip sınıflara sahiptir .

Tahmin edebileceğiniz gibi, her iki sınıfa da aynı Java dosyasında başvurulduğunda adlar çakışıyor.


Örneğin:

com.myapp.model (package)
 - Device (class)
 - ...

com.myapp.data (package)
 - Device (class)
 - ...

Bu vakaları tedavi etmek için en iyi uygulamanın ne olduğu hakkında bir tartışma yaptık ve aşağıdaki seçenekler ortaya çıktı:

1. Seçenek

  • Sınıfı yeniden adlandırma, bir önek ekleme

    ModelDevice
    DataDevice

2. Seçenek

  • Her ikisine de başvurulduğunda tam paket + sınıf adını kullanma

    com.myapp.model.Device
    com.myapp.data.Device

Kod yönetimi ve ölçeklenebilirlik açısından daha doğru olan nedir?

şu anda her iki yaklaşımı da karıştırıyoruz ve tutarsızlık göstermeye başlıyoruz


Eğer zaman zaman önemli değil - eğer tekrar eden bir modelse, muhtemelen karışıklık olmasını önlemek için sınıfları daha kesin olarak adlandırırdım.
16:39

Ne kadar nefret edeceğime dair hiçbir fikriniz yok - java.util.Dateve java.sql.Dateözellikle java.sql.Datede bir alt sınıf java.util.Dateve çok güzel veri katmanlarından kayıyor (ve JSON'a seri hale gelmiyor).

Seçenek 2.1
Diğerine

Yanıtlar:


18

Paket adını kullanın. Bu tür bir sorun, Java'nın neden paket adlandırma kuralını kullanmasından kaynaklanmaktadır. İster aynı şirkette iki takım, ister dünyanın karşı tarafında iki takım olsun, bu tür sorunları önler.


1

Şu an itibariyle bir ModelDevice sınıfınız var (model paketindeki Cihaz). Farklı bir sınıflandırma için böyle bir ModelDevice'iniz varsa ne olur? Sorun hala devam edebilir ve genel giderler de artmaya devam edecektir.

Şimdilik, yeniden adlandırma sınıflarının iyi bir yardımcı olduğunu görebilirsiniz, ancak uzun bir süre için önerilen alternatif, Endüstri Standardı olan paket adlarının önekini eklemektir.


0

Henüz belirtilmemiş bir yönü eklemek için:

Kullanım şekillerine, yani bir veya iki sınıfa başvuran Java kaynaklarına bir göz atın.

IMHO, çoğu durumda, kaynak dosyalar çakışan sınıflardan sadece birine başvurmalıdır ve bağlamdan model veya veri dünyasıyla ilgilenip ilgilenmedikleri açık olmalıdır. Herhangi bir nedenle bu zorsa, genellikle kaynak kodda paket ön ekli sınıf adlarını sevmiyorum çünkü sınıfları yeniden adlandırırdım (okunabilirliği bozar).

Her iki dünyayla ilgilenen kaynak dosyalarınız varsa, bunlar dünyanın iki farklı görünümü arasında çeviri yapabilmeniz için sınıfları köprüleyebilir ve burada paket ön ekli sınıf adları bulmayı tercih ederim.

Ancak her iki Aygıt sınıfını tek bir kaynakta görmek, kaynağın modelden ve veri dünyasından görevleri karıştırarak tek sorumluluk ilkesini ihlal ettiğine dair bir ipucu olabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.