Bazen başarısız olabilecek bir yapıcı yazmanız gerekir. Örneğin, bir dosya yoluna sahip bir nesneyi başlatmak istiyorum, örneğin
obj = new Object("/home/user/foo_file")
Yol uygun bir dosyaya işaret ettiği sürece her şey yolunda. Ancak dize geçerli bir yol değilse işler kırılmalıdır. Ama nasıl?
Yapabilirdin:
- istisna atmak
- return null nesnesi (programlama diliniz kurucuların değerleri döndürmesine izin veriyorsa)
- geçerli bir nesne döndürme ancak yolunun düzgün ayarlanmadığını belirten bir işaretle (ugh)
- diğerleri?
Çeşitli programlama dillerinin "en iyi uygulamalarının" bunu farklı uygulayacağını varsayıyorum. Örneğin ObjC'nin (2) tercih ettiğini düşünüyorum. Ancak (2), C ++ 'da, yapıcıların bir dönüş türü olarak geçersiz olması gereken yerlerde uygulanması imkansızdır. Bu durumda (1) 'i kullanıyorum.
Programlama dilinizde bu sorunu nasıl ele alacağınızı gösterebilir ve nedenini açıklayabilirsiniz?
void
- bir nesne döndürürler.
new
çağırır operator new
, sonra onu doldurmak için yapıcıdır. Yapıcı hiçbir şey döndürmez ve new
aldığı işaretçiyi döndürür operator new
. void
Yine de "hiçbir şey döndürmezse" ifadesi "döndürür " anlamına gelir .