Это как раз то новое свойство языка, которое вызывает больше всего споров. Совсем как в C#, теперь вы можете использовать ключевое слово “var” когда задаете переменные. Семантика та же самая, поэтому любое руководство по использованию этого ключевого слова в C# пойдет и для X++.
В C# ключевое слово “var” было введено для тех случаев, когда указать тип невозможно, почти невозможно или он не существенен, как в случае с анонимными типами и дженериками. Тот факт, что нужно меньше описывать, был положительно принят множеством разработчиков, и “var” стало пользоваться популярностью. Но о правилах его использования все еще спорят. Существует множество руководств и мнений. Начиная с одной крайности: «всегда используйте его, он делает код более читабельным», заканчивая другой крайностью: «никогда не используйте его, с ним код хуже читается».
X++ не поддерживает анонимные типы и дженерики в AX7 – поэтому реальная необходимость в ключевом слове “var” отсутствует – тем не менее, оно поддерживается и уже используется повсеместно. Как и в C#, использование переменной также сильно типизировано, как и в случае, когда тип выражен явно.
Лично я рекомендую использовать “var” только в двух случаях:
1. Когда тип очевиден.
В X++ очень много повторений. Ключевое слово “var” позволяет избежать загромождения, что делает код более читабельным, а информация при этом не теряется.
Например:
MyClass myClass = new MyClass();
В AX7 я бы написал:
var myClass = new MyClass();
2. Когда тип не существенен:
Иногда вам не важен тип. Если он не важен для вас, то он не важен и для того, кто читает код.
Например:
ListEnumerator enumerator = myCollection.getEnumerator();
В AX7 я бы написал:
var enumerator = myCollection.getEnumerator();
Существует также несколько особых причин не использовать “var” в X++ (не относится к C#).
1. Ограниченная поддержка Visual Studio.
В X++ редакторе в Visual Studio вы можете использовать F12, чтобы перейти к определению типа. Тем не менее, редактор X++ все еще не так продвинут, как компилятор X++. На момент написания этой статьи дела обстоят таким образом, что эта функция будет не доступна для вас, если тип переменной не будет задан очевидным образом. То же самое относится и к IntelliSense: если вы используете ключевое слово “var” – IntelliSense (пока) не доступна.
2. Повышение риска появления “ошибок выполнения”(runtime errors).
Точно так же, как и компилятор C#, компилятор X++ будет определять тип по присвоению значения переменной, и применять те же самые правила и ограничения. Поэтому можно подумать, что использование var не ведет к большему числу ошибок выполнения. Но в X++ существует нюанс, о котором следует знать. Компилятор X++ не будет проводить процедуру проверки выводов метода на объекте (object) или объекте общего типа (common). Поэтому, если компилятор X++ определяет тип как объект или объект общего типа, у вас не будет этой дополнительной страховки. И это не всегда очевидно.
Рассмотрим следующий код:
CustTable custTable = Xml2Record(xml);
custTable.someInvalidMethod(); // Ошибка компиляцииПри использовании var, код выглядит так:
var custTable = Xml2Record(xml);
custTable.someInvalidMethod(); // Ошибки компиляции нет, так как Xml2Record() возвращает объект общего типа (common)
Этот пост имеет отношение к предварительному показу MICROSOFT DYNAMICS AX7; представлен как есть и не влечет за собой передачу каких-либо прав.
THIS POST APPLIES TO MICROSOFT DYNAMICS AX7 PREVIEW; IS PROVIDED AS-IS AND CONFERS NO RIGHTS.
Оригинальная статья по ссылке.
Продолжение:
2 часть “X++ в AX7: ключевые слова “finally” и “using” доступна тут.
3 часть “X++ в AX7: определение типа может включать 80 знаков” доступна тут.
4 часть “X++ в AX7: элементы с уровнями доступа private и public” доступна тут.
5 часть “X++ в AX7: статические члены класса” доступна тут.
6 часть “X++ в AX7: ключевые слова Client/Server” доступна тут.
7 часть “X ++ в AX7: статическая подписка на событие” доступна тут.
8 часть “X ++ в AX7: статические классы” доступна тут.
9 часть “Х ++ в АХ7: Internal keyword” доступна тут.
10 часть “Х ++ в АХ7: вещественные типы данных” доступна тут.
11 часть “Х ++ в АХ7: ключевое слово Readonly” доступна тут.
12 часть “Х ++ в АХ7: методы расширения” доступна тут.
Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.