Re[5]: Кому нужны такие фичи?
От: Leporidae  
Дата: 11.05.22 21:00
Оценка:
vaa>Логика программы на что-то должна опираться?
vaa>Чем городить проверки на каждом этапе, лучше разрешить только валидные значения на входе.

И как абсолютно ненужный повторяющийся код гарантирует тебе нужные значения? И чем дефолтные значения для тебя невалидные?
Re[5]: Кому нужны такие фичи?
От: Ночной Смотрящий Россия  
Дата: 12.05.22 09:05
Оценка:
Здравствуйте, vaa, Вы писали:

vaa>Логика программы на что-то должна опираться?

vaa>Чем городить проверки на каждом этапе, лучше разрешить только валидные значения на входе.

А еще лучше сдизайнить так, чтобы невалидных значений не существовало в принципе.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re: Кому нужны такие фичи?
От: Эйнсток Файр Мухосранск Странный реагент
Дата: 12.05.22 12:33
Оценка: 1 (1)
vaa> инициализация при создании объекта
vaa>
vaa> var person = new Person
vaa> {
vaa>    Name = "Alice",
vaa>    Age = 12
vaa> };
vaa>

vaa> ничем не лучше старого способа:
vaa>
vaa> var person = new Person();
vaa>    person.Name = "Alice";
vaa>    person.Age = 12;
vaa>

vaa> код даже короче.

На самом деле лучше: не нужно многократно записывать название переменной, именующий объект.

Можно было бы сократить запись контекста, или по аналогии с тем, как это сделано в питоне (табы указывают на контекст):
var person = new Person
    Name = "Alice"
    Age = 12

Или придумать специальный синтаксис:
var person = new Person: Name = "Alice", Age = 12.
(здесь двоеточие и точка ограничивают область, внутри которой особый контекст)
Отредактировано 12.05.2022 12:34 Эйнсток Файр . Предыдущая версия . Еще …
Отредактировано 12.05.2022 12:34 Эйнсток Файр . Предыдущая версия .
Re[6]: Кому нужны такие фичи?
От: vaa  
Дата: 12.05.22 12:39
Оценка: :)
Здравствуйте, Leporidae, Вы писали:

vaa>>Логика программы на что-то должна опираться?

vaa>>Чем городить проверки на каждом этапе, лучше разрешить только валидные значения на входе.

L>И как абсолютно ненужный повторяющийся код гарантирует тебе нужные значения? И чем дефолтные значения для тебя невалидные?

в том, что класс это набор св-в, которые представляют собой сумму всех возможных значений, и чем больше вариантов, а это произведение значений каждого св-ва,
тем сложнее реализовать логику которая обработает их все. ведь в современных яп ничего кроме IF ELSE пока не придумали.
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re[7]: Кому нужны такие фичи?
От: Leporidae  
Дата: 12.05.22 13:21
Оценка:
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,
...
Re[8]: Кому нужны такие фичи?
От: vaa  
Дата: 12.05.22 15:02
Оценка:
Здравствуйте, Leporidae, Вы писали:

L>>>И как абсолютно ненужный повторяющийся код гарантирует тебе нужные значения? И чем дефолтные значения для тебя невалидные?

vaa>>в том, что класс это набор св-в, которые представляют собой сумму всех возможных значений, и чем больше вариантов, а это произведение значений каждого св-ва,

L>И?


vaa>>тем сложнее реализовать логику которая обработает их все. ведь в современных яп ничего кроме IF ELSE пока не придумали.


L>Придумали. В C# — это логику, которую можно навешивать на сами поля через в { set; } или декораторами.

Черная магия
L>Нафейхоа мне нужно писать

в том что разницы никакой, но при этом вводится лишняя сущность усложняющая ЯП.
ну и опять же это магия которая вещь в себе. Зиг об этом хорошо пишет.
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re[9]: Кому нужны такие фичи?
От: Leporidae  
Дата: 12.05.22 17:21
Оценка:
vaa>>>тем сложнее реализовать логику которая обработает их все. ведь в современных яп ничего кроме IF ELSE пока не придумали.

L>>Придумали. В C# — это логику, которую можно навешивать на сами поля через в { set; } или декораторами.

vaa>Черная магия

Нет. Это является стандартными средствами языка.

L>>Нафейхоа мне нужно писать


vaa>в том что разницы никакой, но при этом вводится лишняя сущность усложняющая ЯП.


Разница значительная.

vaa>ну и опять же это магия которая вещь в себе. Зиг об этом хорошо пишет.


Это не магия. Это реально стандартные средства языка. Более того, в каждом пункте этой «магии» ты можешь зайти в исходный код, пройтись дебаггером и т.п. В коде, что я не привел, есть декораторы, которые мы писали сами для собственных нужд.

Ровна та самая логика, которая «должна обработать всё», но тебе почему-то это не нравится. А нравится писать абсолютно бесполезный повторяющийся код, который еще и никаких гарантий не дает.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.