Мабуть, ваше питання полягає не в тому, що коротке замикання добре чи погано в цілому, а про те, чому VB.NET надає операторам з і без нього. Зважаючи на це, відповідь на
коли погана оцінка короткого замикання?
просто: коли це порушує зворотну сумісність .
Гаразд, тепер ви можете сказати, що VB.NET не дуже сумісний із старим VB6 або VBA, проте принаймні певні частини мови є. Рішення Microsoft зберегти стару семантику AND та OR (без короткого замикання) зробило величезну категорію помилок, що рідше виникають при перенесенні старих програм VB на VB.NET.
З іншого боку, дизайнери мови VB.NET, напевно, поділилися вашою думкою про те, що коротке замикання є хорошою справою. Коли я правильно пам’ятаю, перші версії до випуску VB.NET надавали операторам AND або OR коротке замикання, але відгуки розробника повинні були бути такими поганими, що MS відкликали це рішення до появи VB.NET 1.0. Тож дизайнери вирішили застосувати його як нові ключові слова, так ANDALSO
і ORELSE
компроміс між зворотною сумісністю та корисністю.
ІМХО це було вдале рішення. Мені довелося перенести кілька старих програм за останнє десятиліття, і не потребуючи важкого аналізу впливу для кожного логічного виразу, включаючи AND та / або АБО (каламбур), це завдання стало набагато простішим та економічнішим. З іншого боку, коли мені доводиться писати новий логічний вираз у VB.NET, моїм вибором для операторів за замовчуванням є форми короткого замикання, тобто до чого я звик із C, C ++, C # тощо, і це дозволяє мені потрібно написати кілька ідіом у більш стислій формі (навіть якщо ANDALSO потребує 4 символів більше, щоб набрати).
Якщо ви не впевнені, рекомендую прочитати чудову статтю Джоела Спольського про Марсіанські гарнітури , яка стосується того, чому ранні дизайнерські рішення в розробці програмного забезпечення не можуть бути легко відкликані після того, як компонент або мова або API ставлять у ставку користувачів певного розміру. .