Сегодня я читал мой код на C # и нашел следующую строку:
if (ProgenyList.ItemContainerGenerator.Status != System.Windows.Controls.Primitives.GeneratorStatus.ContainersGenerated) return;
Обратите внимание, что вы можете без прокрутки сказать, что это оператор "if", который работает с ItemContainerGenerator.Status, но вы не можете легко сказать, что если предложение "if" оценивается как "true", метод вернется в этот момент. .
Реально мне следовало бы переместить выражение «return» в отдельную строку, но это заставило меня задуматься о языках, которые сначала разрешают часть «затем» в выражении. Если бы C # разрешил это, строка могла бы выглядеть так:
return if (ProgenyList.ItemContainerGenerator.Status != System.Windows.Controls.Primitives.GeneratorStatus.ContainersGenerated);
Это может быть немного "спорным", но мне интересно, что люди думают об этом виде конструкции. Это может сделать строки, подобные приведенным выше, более читабельными, но также может иметь катастрофические последствия. Представьте себе этот код:
return 3 if (x > y);
Логически мы можем вернуться, только если x> y, потому что нет «иного», но часть меня смотрит на это и думает: «Мы все еще возвращаемся, если x <= y? Если так, что мы возвращаем?» </p>
Что вы думаете о конструкции «тогда перед if»? Существует ли он на выбранном вами языке? Вы часто используете это? Извлечет ли это пользу из C #?