click fraud detection

X++ в AX7: ключевое слово "var". Часть 1.

Дата публикации: 03.03.2017
X++ в AX7: ключевое слово "var". Часть 1.

Это как раз то новое свойство языка, которое вызывает больше всего споров. Совсем как в 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.

Оригинальная статья по ссылке

 

Акция "Тест-драйв Сопровождения"

Попробуй сопровождение АХ до подписания договора!


Узнать подробнее

Другие записи в блоге

04.05.2017
Теперь можно задавать переменные класса как статические. Семантика точно такая же, как в C#, а именно: все экземпляры класса смогут использовать такой элемент, и, если один класс установит значение,...
18.04.2017
С самой первой версии Axapta переменные, объявленные в классе, имели уровень доступа protected. В AX7 по умолчанию уровень доступа остается таким же, но его уже можно изменить на public или private....
27.03.2017
Начиная уже с первой версии, разработчики Axapta страдали от ограничения в 40 знаков при описании типов, таких как классы, таблицы, расширенные типы данных, и даже при описании методов и полей....

Подпишитесь на блог

Все интересные статьи нашего блога на Вашем почтовом ящике!


Подписка

Служба контроля качества сервиса

Свои пожелания и отзывы о качестве обслуживания Вы можете оставить в разделе


Письмо директору