|
![]() |
#1 |
Участник
|
отвечаю сам себе:
в 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 = '_') по-любому, в X++ нет ни пропертей, ни синтаксического сахара вокруг них. поэтому конструктор с пустыми параметрами и кучей parm-методов в Аксапте скорее нонсенс. хотя такая конструкция может появится в интеграционном фунционале. parm-методы в Аксаптовском функционале допустимы если в классе есть большое число параметров, как писал DSPIC. если в классе есть обязательные параметры, то они должны присутствовать в конструкторе. если класс написал в концепции иммутабельности, то параметры должны присутствовать в конструкторе. Пример правильной реализации из ax2012 - метод AifWcfProcessor.createAifMessage() Последний раз редактировалось mazzy; 27.08.2020 в 17:36. |
|
![]() |
#2 |
Участник
|
Абсолютно согласен. И некоторые классы можно и нужно писать иммутабельными. Например класс AifEntityKey вполне можно было сразу сделать иммутабельным. В конструктор new забить поля TableId и FieldId и запретить их менять. Совершенно ясно, что мы не будем менять их в процессе жизни класса. Проще создать уже новый экземпляр и работать с ним.
__________________
// no comments |
|
|
За это сообщение автора поблагодарили: S.Kuskov (2). |
![]() |
#3 |
Участник
|
Цитата:
Сообщение от mazzy
![]() вот, что угодно, лишь бы не делать в C# именованные параметры.
https://kotlinlang.ru/docs/reference/functions.html |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
![]() |
#4 |
Участник
|
Спасибо.
Значит, в версии 4, в конце 2008 года появились "Именованные и опциональные параметры". А в версии 3 появились инициализаторы, в 2007. https://ru.wikipedia.org/wiki/C_Sharp Макс, скажи, а как сейчас принято среди разработчиков использовать инициализаторы и параметры конструкторов? и насколько подобные конструкции понимают/используют всякие генераторы кода типа wsdl.exe? (сознательно сформулировал в самом широком виде - расскажи что считаешь нужным, будет интересно) а то я щас код, связанный с WCF вижу. А это явно до 2008 года разрабатывалось. Последний раз редактировалось mazzy; 28.08.2020 в 00:40. |
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|