Информация об изменениях

Сообщение Re: Пятничное "а вот как бы наряднее?" от 27.09.2019 8:09

Изменено 27.09.2019 8:10 fmiracle

Re: Пятничное "а вот как бы наряднее?"
Здравствуйте, Нахлобуч, Вы писали:

Н>Пятница, можно и подискутировать.

Н>Кто какой способ предпочитает и почему?

По мне лучше всего — почти как последний, но вынести в отдельный класс UrlHelper или, с тем чтобы при необходимости можно было использовать и в других местах, кроме статей (файлы может, или генераторы ссылок, или какие-то тесты которым надо достучаться до статьи и подобное).

В остальном, я бы сказал, что если метод назван ConvertToX, то это у него должна быть сигнатура
X ConvertToX( Y y );

Статическая либо не статическая в зависимости от того, нужен ли доступ к полям класса. Предпочтительнее статический (сразу видно что нет неочевидных зависимостей), но без фанатизма. Второй момент выбора статика или нет — есть ли желание покрыть юнит-тестами с изоляцией этого метода. Тогда не статический и виртуальный чтобы можно было подменить заглушкой.

А если он просто именно инициализирует поля исходя из каких-то данных, то это void InitValues( с параметрами или без ). В целом, мне не очень нравится, если часть полей проставляется в одном методе (тут — в конструкторе), а другая — в другом (тут — ConvertTitleToSlug() ) и при этом жить они могут только вместе. Лучше уж или там или там.
Re: Пятничное "а вот как бы наряднее?"
Здравствуйте, Нахлобуч, Вы писали:

Н>Пятница, можно и подискутировать.

Н>Кто какой способ предпочитает и почему?

По мне лучше всего — почти как последний, но вынести в отдельный класс UrlHelper или, с тем чтобы при необходимости можно было использовать и в других местах, кроме статей (файлы может, или генераторы ссылок, или какие-то тесты которым надо достучаться до статьи и подобное).

В остальном, я бы сказал, что если метод занимается конвертацией, то у него должна быть сигнатура
X ConvertToX( Y y );

Статическая либо не статическая в зависимости от того, нужен ли доступ к полям класса. Предпочтительнее статический (сразу видно что нет неочевидных зависимостей), но без фанатизма. Второй момент выбора статика или нет — есть ли желание покрыть юнит-тестами с изоляцией этого метода. Тогда не статический и виртуальный чтобы можно было подменить заглушкой.

А если он просто именно инициализирует поля, исходя из каких-то данных, то это void InitValues( с параметрами или без ). При этом, мне не очень-то нравится, если часть полей проставляется в одном методе (тут — в конструкторе), а другая — в другом (тут — ConvertTitleToSlug() ) и при этом жить они могут только вместе. Лучше уж или там или там.