Uzun zaman önce, beni nesnelerin isimlendirilmesinde "doğru" bir yola sokan bir makale okudum (bir blog girişine inanıyorum): Programınızdaki şeyleri adlandırmak konusunda çok titiz olun.
Örneğin, uygulamam (tipik bir işletme uygulaması olarak) kullanıcıları, şirketleri ve adresleri işleyecek olsaydım a User
, a Company
ve Address
etki alanı sınıfım olurdu - ve muhtemelen bu şeyleri işleyen a UserManager
, a CompanyManager
ve a yerlerinde AddressManager
.
Yani neyin olanlar söyleyebilir UserManager
, CompanyManager
ve AddressManager
bunu? Hayır, çünkü Yönetici etki alanı nesnelerinizle yapabileceğiniz her şeye uyan çok genel bir terimdir.
Okuduğum makalede çok özel isimler kullanılması öneriliyor. Bir C ++ uygulaması olsaydı ve UserManager
işi kullanıcılara yığından ayrılıp serbest kalsaydı, kullanıcıları yönetmez, doğumlarını ve ölümlerini korurdu. Hmm, belki buna a diyebiliriz UserShepherd
.
Ya da belki de UserManager
işi her bir User nesnesinin verilerini incelemek ve verileri kriptografik olarak imzalamaktır. Sonra bir tane olurdu UserRecordsClerk
.
Şimdi bu fikir bana yapıştı, uygulamaya çalışıyorum. Ve bu basit fikri inanılmaz derecede zor bul.
Sınıfların ne yaptığını açıklayabilirim (hızlı ve kirli kodlamaya girmediğim sürece) yazdığım sınıflar tam olarak bir şey yapar. Bu açıklamadan isimlere gitmek için özlediğim şey bir tür isimler kataloğu, kavramları isimlerle eşleştiren bir kelime hazinesi.
Sonuçta aklımda bir desen kataloğu gibi bir şey istiyorum (sık sık tasarım desenleri nesne adlarını kolayca sağlar, örneğin bir fabrika )
- Fabrika - Başka nesneler oluşturur (tasarım deseninden alınan adlandırma)
- Çoban - Bir çoban nesnelerin ömrünü, yaratımlarını ve kapanmalarını ele alır
- Eşitleyici - Verileri iki veya daha fazla nesne (veya nesne hiyerarşileri) arasında kopyalar
Dadı - Nesnelerin oluşturulduktan sonra "kullanılabilir" duruma ulaşmasına yardımcı olur - örneğin diğer nesnelere kablolama
vesaire vesaire.
Peki, bu sorunu nasıl ele alıyorsunuz? Sabit bir kelime dağarcığınız var mı, anında yeni isimler mi icat ediyorsunuz yoksa önemli olmayan veya yanlış olan şeyleri isimlendirmeyi düşünüyor musunuz?
Not: Ayrıca konuyu tartışan makaleler ve bloglar ile de ilgileniyorum. Başlangıç olarak, bu konuda beni düşündüren orijinal makale: Java Sınıflarını 'Yönetici' olmadan adlandırmak
Güncelleme: Cevapların özeti
Bu arada bu sorudan öğrendiklerimin küçük bir özeti.
- Yeni metaforlar yaratmamaya çalışın (Dadı)
- Diğer çerçevelerin neler yaptığına bir göz atın
Bu konuyla ilgili diğer makaleler / kitaplar:
- Kendinizi düzenli olarak sınıflara hazırlarken / eklerken hangi isimler buluyorsunuz?
- Sınıfları adlandırmak için en iyi yaklaşım nedir?
- Kitap: Tasarım Desenleri: Yeniden Kullanılabilir Nesne Tabanlı Yazılım Öğeleri (Ciltli)
- Kitap: Kurumsal Uygulama Mimarisinin Kalıpları (Ciltli)
- Kitap: Uygulama Kalıpları (Ciltsiz kitap )
Ve cevaplardan topladığım geçerli bir isim önekleri / sonekleri listesi (öznel olarak!):
- koordinatör
- inşaatçı
- yazar
- Okuyucu
- Handler
- konteyner
- Protokol
- Hedef
- Dönüştürücü
- kontrolör
- Görünüm
- Fabrika
- varlık
- Kova
Ve yol için iyi bir ipucu:
Adlandırma felci olma. Evet, isimler çok önemli, ancak çok fazla zaman harcayacak kadar önemli değiller. 10 dakika içinde iyi bir isim düşünemiyorsanız, devam edin.