Я часто получаю такого рода вопросы; то есть вопрос "компилятор мог отработать, что этой штуки не хватает, так зачем она нужна?" Вот еще один пример такого рода вопросов:
C# с использованием констант в статических классах
Как я отметил в этом вопросе, в основном у нас есть три варианта в этой ситуации. Сделайте избыточный текст обязательным, необязательным или недопустимым.
У каждого есть свой минус.
Обратной стороной обязательности является то, что вы получаете ненужную избыточность языка.
Недостатком того, что вы делаете его необязательным, является то, что вы сбиваете с толку людей, которые думают, что между этими двумя формами должна быть разница. Кроме того, вы усложняете работу синтаксического анализатора, восстанавливающего ошибки; он процветает за счет избыточности. И вы потенциально усложняете добавление новых языковых функций в будущем, потому что уже востребовано больше «синтаксической области».
Недостатком того, что вы делаете это незаконным, является то, что вы затем делаете «пойму», где пользователь должен помнить, что о, да, я должен ставить скобки здесь, но не здесь.
Предлагаемая функция должна иметь преимущество, которое компенсирует недостаток. Наименьший минус мне кажется первым: сделать его обязательным. Другие варианты, которые я хотел бы получить, оправдывают недостатки, и я не вижу их здесь.
person
Eric Lippert
schedule
23.05.2011