Сообщение Re: Пятничное "а вот как бы наряднее?" от 27.09.2019 8:09
Изменено 27.09.2019 8:10 fmiracle
Re: Пятничное "а вот как бы наряднее?"
Здравствуйте, Нахлобуч, Вы писали:
Н>Пятница, можно и подискутировать.
Н>Кто какой способ предпочитает и почему?
По мне лучше всего — почти как последний, но вынести в отдельный класс UrlHelper или, с тем чтобы при необходимости можно было использовать и в других местах, кроме статей (файлы может, или генераторы ссылок, или какие-то тесты которым надо достучаться до статьи и подобное).
В остальном, я бы сказал, что если метод назван ConvertToX, то это у него должна быть сигнатура
Статическая либо не статическая в зависимости от того, нужен ли доступ к полям класса. Предпочтительнее статический (сразу видно что нет неочевидных зависимостей), но без фанатизма. Второй момент выбора статика или нет — есть ли желание покрыть юнит-тестами с изоляцией этого метода. Тогда не статический и виртуальный чтобы можно было подменить заглушкой.
А если он просто именно инициализирует поля исходя из каких-то данных, то это void InitValues( с параметрами или без ). В целом, мне не очень нравится, если часть полей проставляется в одном методе (тут — в конструкторе), а другая — в другом (тут — ConvertTitleToSlug() ) и при этом жить они могут только вместе. Лучше уж или там или там.
Н>Пятница, можно и подискутировать.
Н>Кто какой способ предпочитает и почему?
По мне лучше всего — почти как последний, но вынести в отдельный класс UrlHelper или, с тем чтобы при необходимости можно было использовать и в других местах, кроме статей (файлы может, или генераторы ссылок, или какие-то тесты которым надо достучаться до статьи и подобное).
В остальном, я бы сказал, что если метод назван ConvertToX, то это у него должна быть сигнатура
X ConvertToX( Y y );
Статическая либо не статическая в зависимости от того, нужен ли доступ к полям класса. Предпочтительнее статический (сразу видно что нет неочевидных зависимостей), но без фанатизма. Второй момент выбора статика или нет — есть ли желание покрыть юнит-тестами с изоляцией этого метода. Тогда не статический и виртуальный чтобы можно было подменить заглушкой.
А если он просто именно инициализирует поля исходя из каких-то данных, то это void InitValues( с параметрами или без ). В целом, мне не очень нравится, если часть полей проставляется в одном методе (тут — в конструкторе), а другая — в другом (тут — ConvertTitleToSlug() ) и при этом жить они могут только вместе. Лучше уж или там или там.
Re: Пятничное "а вот как бы наряднее?"
Здравствуйте, Нахлобуч, Вы писали:
Н>Пятница, можно и подискутировать.
Н>Кто какой способ предпочитает и почему?
По мне лучше всего — почти как последний, но вынести в отдельный класс UrlHelper или, с тем чтобы при необходимости можно было использовать и в других местах, кроме статей (файлы может, или генераторы ссылок, или какие-то тесты которым надо достучаться до статьи и подобное).
В остальном, я бы сказал, что если метод занимается конвертацией, то у него должна быть сигнатура
Статическая либо не статическая в зависимости от того, нужен ли доступ к полям класса. Предпочтительнее статический (сразу видно что нет неочевидных зависимостей), но без фанатизма. Второй момент выбора статика или нет — есть ли желание покрыть юнит-тестами с изоляцией этого метода. Тогда не статический и виртуальный чтобы можно было подменить заглушкой.
А если он просто именно инициализирует поля, исходя из каких-то данных, то это void InitValues( с параметрами или без ). При этом, мне не очень-то нравится, если часть полей проставляется в одном методе (тут — в конструкторе), а другая — в другом (тут — ConvertTitleToSlug() ) и при этом жить они могут только вместе. Лучше уж или там или там.
Н>Пятница, можно и подискутировать.
Н>Кто какой способ предпочитает и почему?
По мне лучше всего — почти как последний, но вынести в отдельный класс UrlHelper или, с тем чтобы при необходимости можно было использовать и в других местах, кроме статей (файлы может, или генераторы ссылок, или какие-то тесты которым надо достучаться до статьи и подобное).
В остальном, я бы сказал, что если метод занимается конвертацией, то у него должна быть сигнатура
X ConvertToX( Y y );
Статическая либо не статическая в зависимости от того, нужен ли доступ к полям класса. Предпочтительнее статический (сразу видно что нет неочевидных зависимостей), но без фанатизма. Второй момент выбора статика или нет — есть ли желание покрыть юнит-тестами с изоляцией этого метода. Тогда не статический и виртуальный чтобы можно было подменить заглушкой.
А если он просто именно инициализирует поля, исходя из каких-то данных, то это void InitValues( с параметрами или без ). При этом, мне не очень-то нравится, если часть полей проставляется в одном методе (тут — в конструкторе), а другая — в другом (тут — ConvertTitleToSlug() ) и при этом жить они могут только вместе. Лучше уж или там или там.