X++ в AX7: Ключевое слово Const. Часть 13

Дата публикации: 12.10.2017
X++ в AX7: Ключевое слово Const. Часть 13

В AX7 X++ теперь поддерживается ключевое слово const. Его семантика аналогична семантике в C#

Если вкратце, то это позволяет вам определять члены в классе и переменные в методе, они могут быть проинициализированы только в объявлении. Компилятор заменит ссылки-константы значениями. Другими словами значение константы должно быть определено в момент компиляции. 

Это убийственная «фича»! Она позволяет избавиться от большинства случаев использования макросов. 

void constsAreCool() 
{
    #define.magicNumber("AX 2012");  
    const str MagicNumber = "AX7";  
    info(#magicNumber);  
    info(MagicNumber);  
 

Такое использование имеет множество преимуществ:

1.  IntelliSense в редакторе кода.

2.  Поддерживает «Переход к определению» в редакторе кода.

3.  Полный контроль над типом константы.

4.  Компиляция происходит быстрее, макросы печально известны своей долгой компиляцией.

Макросы неповоротливы – их невозможно переопределить или перекрыть.

При объединении public и static членов вы можете создавать классы, чтобы заменить библиотеки макросов.

static class TimeConstants 
{  
    static const public int DaysPerWeek = 7;  
    static const public int HoursPerDay = 24;  
    static const public int HoursPerWeek = TimeConstants::DaysPerWeek * TimeConstants::HoursPerDay;  
}  

 

По «best practice» используйте PascalCasing (стиль написания составных слов) при именовании констант (с ключевым словом const), независимо от того, помечены ли они модификатором доступа private, protected или public.

Обратите внимание, как происходит обращение к константам (с ключевым словом const) из классов:

TimeConstants::HoursPerWeek  

Это выглядит гораздо прозрачнее, чем при использовании макросов:

#TimeConstants
int x = #HoursPerWeek  

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

 

Этот пост относится к предварительному показу MICROSOFT DYNAMICS AX7; представлен как есть и не влечет за собой передачу каких-либо прав. 

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

Другие статьи по теме:

1 часть "X++ в AX7: ключевое слово "var" доступна тут.

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 часть "Х++ в AX7: методы расширения" доступна тут.

 

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

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


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

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

15.07.2018
Оценка риска корпоративных банкротств имеет большое значение для кредиторов и инвесторов. В последние годы искусственный интеллект и методы машинного обучения достигли многообещающих результатов в...
12.07.2018
Автор: Антон Ш., специалист Neti по Машинному обучению и Искусственному интеллекту
29.06.2018
В AX 2012 код может исполняться либо средой .NET CLR, когда это IL-код, либо интерпретатором AX когда это pcode. С точки зрения сборки мусора эти среды ведут себя по-разному.В AX7 работает только...

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

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


Подписка

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

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


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