Здравствуйте, vaa, Вы писали:
vaa>Логика программы на что-то должна опираться? vaa>Чем городить проверки на каждом этапе, лучше разрешить только валидные значения на входе.
А еще лучше сдизайнить так, чтобы невалидных значений не существовало в принципе.
Здравствуйте, Leporidae, Вы писали:
vaa>>Логика программы на что-то должна опираться? vaa>>Чем городить проверки на каждом этапе, лучше разрешить только валидные значения на входе.
L>И как абсолютно ненужный повторяющийся код гарантирует тебе нужные значения? И чем дефолтные значения для тебя невалидные?
в том, что класс это набор св-в, которые представляют собой сумму всех возможных значений, и чем больше вариантов, а это произведение значений каждого св-ва,
тем сложнее реализовать логику которая обработает их все. ведь в современных яп ничего кроме IF ELSE пока не придумали.
L>>И как абсолютно ненужный повторяющийся код гарантирует тебе нужные значения? И чем дефолтные значения для тебя невалидные? vaa>в том, что класс это набор св-в, которые представляют собой сумму всех возможных значений, и чем больше вариантов, а это произведение значений каждого св-ва,
И?
vaa>тем сложнее реализовать логику которая обработает их все. ведь в современных яп ничего кроме IF ELSE пока не придумали.
Придумали. В C# — это логику, которую можно навешивать на сами поля через в { set; } или декораторами.
Кусок модели, например:
public abstract class Holder
{
[LogMasked(ShowFirst = 3, PreserveLength = true)]
[MaxLength(200)]
[Required]
public string Name { get; set; }
public Bank Bank { get; set; }
public Contact Contact { get; set; }
[LogMasked(ShowFirst = 3, PreserveLength = false)]
public string VATNumber { get; set; }
...
Нафейхоа мне нужно писать
var holder = new Holder(); // или впихивать в конструктор нцать полей?
holder.Name = ...;
holder.Bank = new Bank();
holder.Bank.Address = ...
...
И что именно мне это даст с точки зрения гарантий по сравнению с
bank = new Bank
{
Name = data.BankName,
Address = data.BankAddress,
AccountHolderName = data.BankAccountHolderName,
BankAccounts = bankAccounts?.ToArray() ?? new BankAccount[] { }
};
return new Holder
{
Id = (uint)data.Id,
Name = data.Name,
Bank = bank,
Contact = contact,
...
Здравствуйте, Leporidae, Вы писали:
L>>>И как абсолютно ненужный повторяющийся код гарантирует тебе нужные значения? И чем дефолтные значения для тебя невалидные? vaa>>в том, что класс это набор св-в, которые представляют собой сумму всех возможных значений, и чем больше вариантов, а это произведение значений каждого св-ва,
L>И?
vaa>>тем сложнее реализовать логику которая обработает их все. ведь в современных яп ничего кроме IF ELSE пока не придумали.
L>Придумали. В C# — это логику, которую можно навешивать на сами поля через в { set; } или декораторами. Черная магия L>Нафейхоа мне нужно писать
в том что разницы никакой, но при этом вводится лишняя сущность усложняющая ЯП.
ну и опять же это магия которая вещь в себе. Зиг об этом хорошо пишет.
vaa>>>тем сложнее реализовать логику которая обработает их все. ведь в современных яп ничего кроме IF ELSE пока не придумали.
L>>Придумали. В C# — это логику, которую можно навешивать на сами поля через в { set; } или декораторами. vaa>Черная магия
Нет. Это является стандартными средствами языка.
L>>Нафейхоа мне нужно писать
vaa>в том что разницы никакой, но при этом вводится лишняя сущность усложняющая ЯП.
Разница значительная.
vaa>ну и опять же это магия которая вещь в себе. Зиг об этом хорошо пишет.
Это не магия. Это реально стандартные средства языка. Более того, в каждом пункте этой «магии» ты можешь зайти в исходный код, пройтись дебаггером и т.п. В коде, что я не привел, есть декораторы, которые мы писали сами для собственных нужд.
Ровна та самая логика, которая «должна обработать всё», но тебе почему-то это не нравится. А нравится писать абсолютно бесполезный повторяющийся код, который еще и никаких гарантий не дает.