Yardımcı ve Yardımcı sınıflar arasındaki farklar nelerdir?


116

XHelper veya XUtils sınıfının nasıl çağrılacağı nasıl belirlenir?

Bana göre :

Yardımcı sınıf , örneklenebilen ve bazı iş çalışmaları yapabilen bir sınıftır.

Utils sınıfı , bir tür örnekte küçük ve tekrarlayan işlemler gerçekleştiren statik bir sınıftır (Apache'den ArrayUtils veya IOUtils utils sınıfları örneği)


5
"İş çalışması" buradaki temel ayrımdır. UtilsKuruluşun herhangi bir yerinde veya başka bir kuruluşta kullanılabilecek statik bir sınıf için kullanmayı yararlı buluyorum . Bir Helpersınıf, bir proje içinde yeniden kullanılabilen ve proje içinde bağımlılıkları olan ortak bir koda sahiptir. Elbette genel olarak kabul edilmiş bir kural yok, ancak bunu faydalı buluyorum.
Stephen Hosking

1
@StephenHosking Açıklamanız beni ve belki de herkes için en ikna edici olanıdır. Mümkünse, açıklamanızı sadece yorum bırakmak yerine bu gönderiye gerçek cevap olarak gönderir misiniz?
Bigair

@Büyük hava. Teşekkür ederim, ama benimki sadece bir öneri, cevap değil. İnsanların bunu faydalı bulmasına sevindim.
Stephen Hosking

Yanıtlar:


102

Kullanılacak birçok adlandırma stili vardır. Utils'i daha yaygın olduğu için öneririm.

Bir Utility sınıfının yalnızca statik yöntemlere sahip olduğu ve durumsuz olduğu anlaşılır. Böyle bir sınıfın bir örneğini yaratmazsınız.

Bir Yardımcı, bir yardımcı program sınıfı olabilir veya durum bilgili olabilir veya bir örneğin oluşturulmasını gerektirebilir. Mümkünse bundan kaçınırım.

İsmi daha belirgin hale getirebilirseniz. Örneğin, sıralama yöntemleri varsa, onu XSorter yapın

Diziler için aşağıdaki gibi yardımcı sınıflar bulabilirsiniz

Array
Arrays
ArrayUtil
ArrayUtils
ArrayHelper

BTW, bir yardımcı program sınıfı için kısa bir el, örneği olmayan bir numaralandırmadır

enum XUtils {;
    static methods here
}

Bir arabirim uygulamanız gerekirse, durumsuz bir Singleton kullanırım.

enum XHelper implements RequiredInterface {
   INSTANCE;
   // no instance fields.
}

Bu yazıda stackoverflow.com/a/2135797/787698 , Xutils'in bağımlılıkları olmayan statik bir sınıf olduğunu. Bunun hakkında ne düşünüyorsun
jakcam

@jakcam İlginç bir nokta. Bir yardımcı, durum bilgili olabilir ve bir örnek gerektirebilir. Mümkünse durumsuz ve örnek içermeyen bir yardımcı program sınıfı kullanırdım.
Peter Lawrey

Xutils'in bağımlılıkları olmayan statik bir sınıf olduğunu anlıyorsunuz ?
jakcam

O gönderide "xutils" veya "bağımlılık yok" bulamıyorum.
Peter Lawrey

1
@John Bu durumda, test amacıyla alay etmek daha zor olduğundan bir yardımcı yöntem istenmez.
Peter Lawrey

16

Genel olarak? Tamamen keyfi. Bunun için hiçbir kural yok.


8

Bir yardımcı program, genel kullanımın bir "yaprak düğüm" sınıfıdır. Yani, projenize herhangi bir bağımlılığı yoktur ve kırılmadan veya işe yaramaz hale gelmeden projeden projeye taşınabilir. Örnekler: Vector3, RandomNumberGenerator, StringMatcher, vb ...

Bir "yardımcı", tasarımı başka bir sınıfa yardım etmek olan herhangi bir sınıf gibi görünüyor. Bunlar projenize bağlı olabilir veya olmayabilir. Bir GameNetworkClientsınıf oluşturuyorsanız , GameNetworkConnectionsınıfın bir "yardımcı" olduğunu söyleyebilirsiniz , çünkü GameNetworkClient.

Geliştiricilerin araçlara gönderme şekli, bu kelimelerin yaygın kullanımını yansıtır. "Yararlı" ve "yararlı" olarak tanımlanan işitme aletlerini hatırlayabiliyorsanız, yararlı bir araç biraz bağlama sahiptir (peynir rendesi peyniri rendelemeye yardımcı olur, mısır sıyırıcı mısır soymaya yardımcı olur, hızlı yükleyici ateşli silahı yeniden yüklemeye yardımcı olur). Bir "yardımcı programın" çeşitli bağlamlarda çalışması beklenir (WD-40, koli bandı, ordu bıçakları, yapıştırıcı, el feneri, vb.).


5

Jesper'ın dediği gibi, bu tamamen keyfi . Kuruluşunuz için neyin işe yaradığını düşünebilir ve bunu kongre yapabilirsiniz.

Benim için böyle bir şey:

utils - Herhangi bir yere serbestçe taşınabilen ve içe aktarılabilen statik sınıf.

Farklı modüllerde faydalı olabilecek genel görevleri yapmak. Peter Lawrey'in dediği gibi, daha spesifik isimler kullanışlıdır.

helper - Başka bir sınıfa veya bir modüle yardım eden sınıf.

Yalnızca yerleştirildiği modülde kullanılan ve başka bir yere içe aktarılmasının bir anlamı olmayacak görevler. Bu nedenle ad daha spesifik olabilir - ModuleName Helper (ör. AdministrationHelper , LoginHelper )


2

Bunun nihai bir cevabı yok. Bir adlandırma şeması bulun ve buna bağlı kalın. Paketlerinizi ve sınıflarınızı adlandırmak, yazılım mimarisinin önemli bir parçasıdır ve kimse bu kararı sizden alamaz.

Kişisel olarak XHelper'ı daha çok seviyorum, ancak XUtils'i yabancı kodlarda daha sık görüyorum.

Ayrıca JDK ve hem bulacaksınız "çoğul" adlandırma şeması gibi Guava :

bir sınıf Collectionnesnelerle ilgileniyorsa , bunaCollections

Dizi> Diziler (jdk)
Listesi> Listeler (guava)
Haritası> Haritalar (guava)

vb.

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.