Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Абасс... обсудите рахитекурту

22.05.24 08:07
Re: Абасс... обсудите рахитекурту
 
Программист коренной житель
в ответ alex445 21.05.24 16:53
Кстати, нашёл ещё один минус в единственном методе Validate на весь класс. Если свойства взаимозависимы, то нужно соблюдать порядок их валидации и присвоений. Если это всё в одном методе, а свойств много, то надо перетасовывать валидации ВСЕХ свойств. А если взаимозависимые свойства сгруппированы в отдельные методы валидации, то перетасовывать надо будет только в этих методах, что куда проще. Сами же эти отдельные методы валидации могут быть применены для всего объекта в любом порядке.

В твоей логике есть один изъян :)

Предположим у нас есть 3 своства: A, B и C. При этом A и B зависят от C.

С твои подходом нужно сделать 3 + 1 функцию: ValidateA, ValidateB, ValidateC и Validate

Выглядеть это будет так:

private void ValidateA ()
{
   ValidateC();
   a = .... 
}
private void ValidateB ()
{
   ValidateC();
   b = .... 
}
private void ValidateC ()
{
   c = .... 
}
public void Validate ()
{
   ValidateC();
   ValidateA();
   ValidateB();
}

Очевидно, что ValidateC будет вызвана аж целых 3 раза :) Можно сократить количество вызовов ValidateC до двух, но тогда будет неявная валидация С.

Можно конечно пойти еще дальше и сократить количество вызовов до 1, но тогда придется писать дополнительный код.



Ну и все это безобразие должно конкурировать с этим:

public void Validate ()
{
   // a and b depends on c. Thats'y c must be validated before!!!
   c = .... <span class="redactor-invisible-space"></span>
   a = .... <span class="redactor-invisible-space"></span>
   b = ....
}

Я не знаю что тут надо перетасовывать, но простота кода при моем подходе, как мне кажется, очевидна :)

 

Перейти на