Geç cevap, ama bence bu konuya yeni bir şeyler ekliyor.
Önceki cevapların hiçbiri orijinal soruyu cevaplamadı. Bazıları bir sabitin eksikliğini haklı çıkarmaya çalışırken, diğerleri sabitin eksikliğiyle başa çıkabilmenin yollarını gösterdi. Ancak hiç kimse sabitin yararı için zorlayıcı bir gerekçe sunmadı, bu yüzden eksikliği hala doğru bir şekilde açıklanmadı.
Bir sabit, bazı kod hatalarının fark edilmemesini önleyeceği için yararlı olacaktır.
"" İçin yüzlerce referans içeren geniş bir kod tabanınız olduğunu varsayalım. Birisi kodu kaydırırken bunlardan birini değiştirir ve "" olarak değiştirir. Böyle bir değişikliğin üretime fark edilmeme olasılığı yüksektir, bu noktada kaynağı tespit etmek zor olacak bir soruna neden olabilir.
Aynı hataya maruz kalırsa EMPTY adında bir kütüphane sabiti olan OTOH, EM PTY gibi bir şey için derleyici hatası oluşturur.
Kendi sabitinizi tanımlamak hala daha iyidir. Birisi hala başlatmayı yanlışlıkla değiştirebilir, ancak geniş kullanımı nedeniyle, böyle bir hatanın etkisinin fark edilmemesi, tek kullanımlık bir durumdaki bir hatadan çok daha zor olacaktır.
Bu, değişmez değerler yerine sabitleri kullanmanın genel avantajlarından biridir. İnsanlar genellikle düzinelerce yerde kullanılan bir değer için sabit kullanmanın, bu değeri tek bir yerde kolayca güncellemenizi sağladığını kabul eder. Daha az sıklıkla kabul edilen şey, bunun aynı zamanda değerin yanlışlıkla değiştirilmesini de engellemesidir, çünkü böyle bir değişiklik her yerde gösterilecektir. Yani, evet, "" EMPTY'den daha kısa, ancak EMPTY'nin kullanımı "" 'dan daha güvenlidir.
Dolayısıyla, orijinal soruya geri dönersek, sadece dil tasarımcılarının muhtemelen sık kullanılan değişmez değerler için sabitler sağlama avantajının farkında olmadıklarını tahmin edebiliriz. Umarım, bir gün Java'ya dize sabitleri eklenir.
outputBlah = ""
, o da muhtemelen tercihsomething == String.Empty
üzerindesomething.Length > 0
de (eğer boş çek atlayın.)