У нас обычно используется несколько оверлоадов для конструкторов для наиболее частых случаев. Параметры по умолчанию в C# почти не используем потому, что дефолтные значения параметры вкомпилируются в вызывающий код и расширение набора параметров - binary breaking change.
Для необязательных свойств и свойств которые используют нечасто - property initializers.
Особенно удобно в тестах.
См. также С# 9
primary constructors
С кодогенерацией лично я не особо сталкивался. В C# есть partial classes, которые позволяют держать генерированный код отдельно от написанного ручками и смотрtть в него наверное, надо только при отладке. В этом случае, может и лучше, если он написан c использованием возможностей языка, но не принципиально.
Еще интересный стиль в maui
Пример теста с сокращениями.
X++:
[TestMethod]
public void TestRunUnattended_IfExecutionDeferredInXML_CanCollectDataInAdvance()
{
...
var delayedSequence = new ERTextFormatXMLElement(DelayedElementName)
{
IsDeferred = true
};
....
var root = new ERTextFormatXMLElement(RootName)
{
delayedSequence,
detailsComponent
};
var mapping = new ERFormatMapping();
...
mapping.ParmBinding(new ERFormatBinding{
{delayedSequence, ListItem(CollectedListName)},
{delayedString, StringItem(CollectedListName, ERSingleValueDataContainerList.ValueName)},
{detailsComponent, ListItem(SourceListName)},
...
});
var contentAsString = RunAndReturnDestinationContent(mapping);
var expected = new XDocument(
new XElement(RootName,
new XElement(DelayedElementName, FirstKey),
new XElement(DelayedElementName, SecondKey),
new XElement(DetailsComponentName, DetailsPrefix + FirstKey),
new XElement(DetailsComponentName, DetailsPrefix + SecondKey)));
XDocument.Parse(contentAsString)
.Should().BeEquivalentTo(expected);
}
А вот пример из
maui:
X++:
readonly State<int> count = 0;
[Body]
View body() => new StackLayout
{
new Label("Welcome to .NET MAUI!"),
new Button(
() => $"You clicked {count} times.",
() => count.Value ++)
)
};