Son zamanlarda birlikte çalıştığım bazı büyük C # kod tabanları etrafında yüzen birkaç Yardımcı tarzı "yarar çanta" statik sınıfları inceliyordu, temelde aşağıdaki çok yoğun snippet gibi şeyler:
// Helpers.cs
public static class Helpers
{
public static void DoSomething() {}
public static void DoSomethingElse() {}
}
İncelediğim belirli yöntemler
- çoğunlukla birbiriyle alakasız,
- açık devlet çağrışımlarda devam etmeden,
- küçük ve
- her biri çeşitli ilgisiz türler tarafından tüketilir.
Düzenleme: Yukarıdaki iddia edilen sorunların bir listesi olması amaçlanmamıştır. İncelediğim belirli yöntemlerin ortak özelliklerinin bir listesi. Yanıtların daha alakalı çözümler sunmasına yardımcı olmak bağlamdır.
Sadece bu soru için, bu tür bir yönteme GLUM (genel hafif hizmet yöntemi) olarak değineceğim. Negatif çağrışım kısmen amaçlanmıştır. Bu aptalca bir yumruk olarak karşımıza çıkarsa özür dilerim.
GLUM'lar hakkında kendi varsayılan şüpheciliğimi bir kenara bırakırsak bile, bununla ilgili şu şeyleri sevmiyorum:
- Statik sınıf yalnızca bir ad alanı olarak kullanılıyor.
- Statik sınıf tanımlayıcısı temel olarak anlamsızdır.
- Yeni bir GLUM eklendiğinde, (a) bu "çanta" sınıfına iyi bir sebep olmadan dokunulur veya (b) yeni bir "çanta" sınıfı yaratılır (ki bu genellikle kendi başına bir sorun değildir; statik sınıflar genellikle ilgisizlik problemini tekrar eder, ancak daha az yöntemle).
- Meta adlandırma kaçınılmaz olarak berbattır, standart değildir ve genellikle ya da her neyse
Helpers
, dahili olarak tutarsızdırUtilities
.
Bunu yeniden düzenlemek, tercihen yukarıdaki endişeleri ele almak ve tercihen mümkün olduğunca hafif bir dokunuşla makul ve iyi bir model nedir?
Muhtemelen vurgulamalıyım: Karşılaştığım tüm yöntemler birbiriyle ilişkisiz. Bunları daha ince taneli ancak yine de çok üyeli statik sınıf yöntem torbalarına bölmenin makul bir yolu yok gibi görünüyor.