Bu muhtemelen birkaç yıl boyunca büyük bir yazılım projesi üzerinde çalışana kadar derinlemesine anlayacağınız bir şey değildir. Pek çok yeni bilgisayar bilimi bölümü size tüm doğru sözcüklerle (kapsülleme, verilerle işlevsellik ve sürdürülebilirlik) bir cevap verecektir, ancak çok azı tüm bunlara sahip olmanın neden iyi olduğunu gerçekten anlayacaktır.
Birkaç örnek üzerinden geçelim.
- Diziler döndürülmüşse, ya tüm değerlerin önceden hesaplanması gerekir ya da daha karmaşık değerleri oluşturabileceğiniz çok sayıda küçük değerin döndürülmesi gerekir.
WordPress gönderilerinin bir listesini döndüren bir API yöntemi düşünün. Bu gönderilerin hepsinin yazarları, yazarların isimleri, e-posta adresleri, hatta biyografileriyle profilleri bile vardır.
Bir dizideki tüm gönderileri geri gönderiyorsanız, kendinizi bir dizi gönderi kimliği döndürmekle sınırlamanız gerekir:
[233, 41, 204, 111]
veya şuna benzer devasa bir dizi döndürmek:
[ title: 'somePost', body: 'blah blah', 'author': ['name': 'billy', 'email': 'bill@bill.com', 'profile': ['interests': ['interest1', 'interest2', ...], 'bio': 'info...']] ]
[id: '2', .....]]
Bir kimlik listesi döndürmenin ilk durumu sizin için çok yararlı değildir çünkü o zaman bu gönderi hakkında biraz bilgi almak için her kimlik için bir API çağrısı yapmanız gerekir.
İkinci durum, ihtiyaç duyduğunuzdan çok daha fazla bilgi çekecek ve çok daha fazla iş yapacak (özellikle bu alanlardan herhangi birinin oluşturulması çok karmaşıksa).
Öte yandan bir nesne, ihtiyacınız olan tüm bilgilere erişiminizi sağlayabilir, ancak bu bilgiyi henüz gerçekten çekmemiş olabilir. Alanların değerlerinin belirlenmesi, bir nesne kullanılırken tembel olarak (yani, değere ihtiyaç duyulduğunda ve önceden değil) yapılabilir.
- Diziler, amaçlanandan daha fazla veri ve yetenek ortaya çıkarır
Döndürülen büyük dizi örneğine geri dönün. Artık birisi muhtemelen post dizisi içindeki her bir değeri yineleyen ve yazdıran bir uygulama oluşturabilir. API, bu post dizisine yalnızca bir ekstra öğe eklemek için güncellenirse, uygulama kodu, muhtemelen olmaması gereken bazı yeni alanları yazdıracağından kırılacaktır. API tarafından döndürülen post dizisindeki öğelerin sırası değişirse, bu durum uygulama kodunu da bozacaktır. Yani bir dizi döndürmek, bir nesnenin yaratmayacağı her tür olası bağımlılığı yaratır.
Bir nesne, size yararlı işlevsellik sağlamasına izin verecek bilgileri içinde tutabilir. Örneğin bir gönderi nesnesi, önceki veya sonraki gönderileri döndürecek kadar akıllı olabilir. Bir dizi bunu sizin için asla yapamaz.
Yukarıda bahsedilen nesnelerin tüm faydaları daha esnek bir sistem oluşturmaya yardımcı olur.
count()veyaarray_*()üzerlerinde işlev görememe (en azından anahtar => değer verisinin depolanması / döndürülmesi ile ilgili olarak). Kimse bahsetmiyor gibi mi yoksa bir şey mi özlüyorum?