Bir "Uygulama" sınıfım olduğunu varsayalım. İlklendirilmek için kurucudaki belirli ayarları alır. Ayrıca, ayarların sayısının, kendilerine ait bir sınıfa yerleştirilmeye zorlanacağı kadar çok olduğunu varsayalım."Ortak" yuvalanmış sınıflar olsun ya da olmasın
Bu senaryoda aşağıdaki iki uygulamayı karşılaştırın.
Uygulama 1:
class Application
{
Application(ApplicationSettings settings)
{
//Do initialisation here
}
}
class ApplicationSettings
{
//Settings related methods and properties here
}
Uygulama 2: Bana göre
class Application
{
Application(Application.Settings settings)
{
//Do initialisation here
}
class Settings
{
//Settings related methods and properties here
}
}
, ikinci yaklaşım çok tercih edilir. Daha okunabilir çünkü iki sınıf arasındaki ilişkiyi güçlü bir şekilde vurgular. Uygulama sınıfını herhangi bir yerde oluşturmak için kod yazarken, ikinci yaklaşım daha güzel görünecek.
Şimdi sadece Ayarlar sınıfının kendisinin de benzer şekilde "ilgili" bir sınıfı olduğunu ve bu sınıfın da bunu yaptığını hayal edin. Yalnızca bu tür üç seviyeye geçin ve 'yuvalanmayan' durumda sınıf adlandırma elden çıkar. Bununla birlikte, yuva yaparsanız, işler hala zarif kalır.
Yukarıdakilere rağmen, StackOverflow üzerinde iç içe geçmiş sınıfların yalnızca dış dünya tarafından görülemiyorsa haklı olduğunu söyleyen insanları okudum; eğer sadece sınıfın içsel uygulaması için kullanılıyorlarsa. Yaygın olarak anılan itiraz, sınıfın kaynak dosyasını içeren boyutun şişirilmesidir, ancak kısmi sınıflar bu sorun için mükemmel bir çözümdür.
Benim sorum şu, neden iç içe geçmiş sınıfların "kamuya açık" kullanımı konusunda ihtiyatlıyız? Bu kullanıma karşı başka argümanlar var mı?
Son zamanlarda bazı kurucu kodu yazmalı ve bu yazıyı hatırladım. Çok kullanışlı bir yaklaşım olduğu ortaya çıktı, teşekkürler. –
* Sadece açık bir atıfta bulunularak * "Aynı zamanda dış sınıfının oluşturucu erişim özel üyeleri sağlayan" (I Java'nın iç sınıflarında Olduğu gibi bu örtülü değil eminim) doğru ?. – samosaris
@SamusArin: Evet, içeren sınıfın bir örneğine örtük bir başvuru yoktur. Ama ayrıca statik üyelere de erişebilirsiniz. Temelde sadece * erişilebilirlik hakkında konuşuyordum. –