Görünüşe göre, sorunuz kısa devre genel olarak iyi veya kötü olmakla ilgili değil, VB.NET'in operatörlere neden ve onsuz operatör sağlamasıyla ilgili. Bunu akılda tutarak, cevap
kısa devre değerlendirmesi ne zaman kötüdür?
basitçe: geriye dönük uyumluluğu ihlal ettiğinde .
Tamam, şimdi VB.NET'in eski VB6 veya VBA ile çok geriye dönük uyumlu olmadığını söyleyebilirsiniz, ancak dilin en azından belirli bölümleri. Microsoft'un eski VE ve VEYA semantiğini (kısa devre olmadan) tutma kararı, eski VB programlarını VB.NET'e taşırken ortaya çıkma olasılığının çok daha düşük olmasını sağlamıştır.
Öte yandan, VB.NET dil tasarımcıları kısa devre yapmak için iyi bir fikir olabilir. Doğru hatırladığımda, ilk VB.NET ön sürüm sürümleri VE veya VEYA operatörlerine kısa devre sağladı, ancak geliştirici geri bildirimi o kadar kötü olmalı, VB.NET 1.0 ortaya çıkmadan önce MS bu kararı geri çekmelidir. Böylece tasarımcılar yeni anahtar kelimeler açısından ANDALSO
ve ORELSE
geriye dönük uyumluluk ve kullanışlılık arasında bir denge olarak uygulamaya karar verdiler .
IMHO bu iyi bir karardı. Son on yılda birkaç eski programı taşımak zorunda kaldım ve AND ve / veya OR (pun hedefli) dahil olmak üzere her mantık ifadesi için ağır bir etki analizi yapmak zorunda değilim, bu görevi çok daha kolay ve daha ekonomik hale getirdi. Öte yandan, VB.NET'te yeni bir mantıksal ifade yazmak zorunda kaldığımda, operatörler için varsayılan seçimim kısa devre formları, C, C ++, C # vb. birkaç deyimi daha özlü bir biçimde yazmam gerekiyor (ANDALSO'nun yazmak için 4 karaktere daha ihtiyacı olsa bile).
Eğer ikna değilseniz, Joel Spolsky'nin Mars Kulaklıkları hakkındaki harika makalesini okumanızı tavsiye ederim , bu da yazılım geliştirmedeki erken tasarım kararlarının neden söz konusu bileşen veya dil veya API belirli bir boyuttaki bir kullanıcı tabanına ulaştıktan sonra kolayca iptal edilemediğidir. .