Показать сообщение отдельно
Старый 27.08.2020, 16:43   #18  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
отвечаю сам себе:

в c# принято использовать публичные проперти.
в языке придуман специальный синтакис для инициализации публичных пропертей
https://docs.microsoft.com/ru-ru/dot...ct-initializer

в результате, в c# доступны такие конструкции для инициализации
Код:
        StudentName student4 = new StudentName
        {
            FirstName = "Craig",
            LastName = "Playstead",
            ID = 116
        };
если в классе есть приватные переменные, то их можно проинициализировать только из конструктора.
причем в конструкторе будут только позиционные параметры.

Код:
        StudentName student4 = new StudentName("private1", new DateTime(2001, 09, 11), 3.0)
        {
            FirstName = "Craig",
            LastName = "Playstead",
            ID = 116
        };

с инициализатором возможны даже такие смешные конструкции

Код:
        var team = new BaseballTeam
        {
            ["RF"] = "Mookie Betts",
            [4] = "Jose Altuve",
            ["CF"] = "Mike Trout"
        };
но хоть понятно откуда эта зараза идетЪ.

вот, что угодно, лишь бы не делать в C# именованные параметры.
https://kotlinlang.ru/docs/reference/functions.html
Цитата:
Код:
fun reformat(str: String,
             normalizeCase: Boolean = true,
             upperCaseFirstLetter: Boolean = true,
             divideByCamelHumps: Boolean = false,
             wordSeparator: Char = ' ') {
...
}
С помощью именованных аргументов мы можем сделать код более читабельным:

Код:
reformat(str,
    normalizeCase = true,
    upperCaseFirstLetter = true,
    divideByCamelHumps = false,
    wordSeparator = '_'
)
Или, если нам не нужны все эти аргументы

Код:
reformat(str, wordSeparator = '_')
При вызове функции как с позиционными, так и с именованными аргументами все позиционные аргументы должны располагаться перед первым именованным аргументом. Например, вызов f(1, y = 2) разрешен, а f(x = 1, 2) - нет.

по-любому, в X++ нет ни пропертей, ни синтаксического сахара вокруг них.
поэтому конструктор с пустыми параметрами и кучей parm-методов в Аксапте скорее нонсенс.
хотя такая конструкция может появится в интеграционном фунционале.

parm-методы в Аксаптовском функционале допустимы если в классе есть большое число параметров, как писал DSPIC.

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

Пример правильной реализации из ax2012 - метод AifWcfProcessor.createAifMessage()
Миниатюры
Нажмите на изображение для увеличения
Название: 1.PNG
Просмотров: 70
Размер:	24.6 Кб
ID:	12927  
__________________
полезное на axForum, github, vk, coub.

Последний раз редактировалось mazzy; 27.08.2020 в 17:36.