Форум
Архитектура программного обеспечения
Тема
Как правильно задавать вопросы
B
I
abc
U
X
3
X
3
H1
H2
H3
H4
H5
H6
Asm
C/C++
C#
Erlang
Haskell
IDL
Java
Lisp
MSIL
Nemerle
ObjC
OCaml
Pascal
Perl
PHP
Prolog
Python
Ruby
Rust
SQL
VB
Здравствуйте, IQuerist, Вы писали: IQ>Здравствуйте, ·, Вы писали: IQ>>>Да класс превращается в старый добрый сишный модуль. IQ>·>С глобальными переменными? IQ>·>Ты так говоришь, как будто это что-то хорошее. IQ>В тех проектах на которых работаю я (прямо скажем не больших) в этом нет ничего плохого. В прессе я встречаю не малое количество рекоммендаций по использованию функционального stateless стиля. И мой опыт показывает, что это не пустые слова... Конечно это создает определенные проблемы с согласованностью, но эти проблемы сущая ерунда, по сравнению с теми к которым приводят например попытки реализации наивной доменной модели (DDD). Об этом тоже может напишу пост :) IQ>>>·>Для чего? IQ>>>Если надо выяснить какие сервисы он использует. IQ>·>В смысле какие сервисы данный метод использует? А ты с какой целью интересуешься? IQ>·>Если ты пользователь класса, то тебя это не должно заботить, т.к. наличие у тебя объекта означает, что у него можно дёрнуть метод - все зависимости у него будут по определению, т.к. объект сконструирован. IQ>·>Если ты разработчк класса, то ты можешь использовать только то, что у тебя есть в конструкторе. Никаких неоднозначностей. IQ>Книжный какой-то пример... в любой реализации сущности сколь ни будь сложнее сортировки пузырьком есть дофига нюансов. И что самое паршивое - таких сущностей тоже дофига. Вы можете упомнить все нюансы во всех проектах за 3-6 лет? Или можете описать эти нюансы в названиях методов или комментариях к названиям методов? Имхо это просто невозможно. IQ>Во время работы мне все время приходится читать код и текущего метода, который я модифицирую и многих методов которые он использует и методов, которые используют те методы. Поэтому я честно вообще не понимаю, чем мне особенно может помочь перечисление зависимостей всего класса в конструкторе. IQ>·>Вот есть у тебя [tt]UserService.getInstance().serveUser(user)[/tt] - нужен ли тебе для этого вызова HttpContext.Current? Как узнать? IQ>А сколько у вас реализаций UserService.getInstance().serveUser ? У нас одна на 20+ проектов :) Ей более 6 лет и второй не будет я вас уверяю. IQ>·>И наоборот. Вот есть у тебя IQ>·>[c#] IQ>·>public void serveUser(User user) IQ>·>{ IQ>·>// как узнать - есть ли тут у меня доступ к HttpContext? IQ>·>} IQ>·>[/c#] IQ>:))) Ну что-то пример совсем не бей лежачего :) в BL вообще не должно быть явного использования HttpContext. Все данные должны быть собраны на уровне получения запроса в web controller. А все системные данные текущего пользователя должны находиться в текущем контексте или это будет HttpContext в случае web или CallContext в случае win. Бизнес логика об этом ничего не должна знать. IQ>>>>>А все остальные способы создания сервисов в коде на этапе компиляции не проверяются, зависимости не обеспечивают, а IDE будет намеренно мешать навигации по коду! :))) IQ>>>·>Конечно, когда конструктор вызывается через рефлекию - IDE ничем помочь не может. А уж если XML-кофиги вспомнить... IQ>>>Но это же самые любимые техники "наивного DI". IQ>·>Это "наивный IoC", DI тут не причём. IQ>:) Да я знаю. IQ>>>·>Синглтоны скрывают структуру зависимостей и порядок инициализации. IQ>>>Это хороший аргумент... но часто порядок инициализации не имеет значения. А если инициализация сложная, то я лично поостерегся бы отдавать ее на откуп малознакомому фреймворку. IQ>·>Неужели лучше отдать на откуп Undefined Behaviour инициализации статиков? IQ>В простых stateless случаях я не вижу в этом проблемы. В подходе ряды плюсов - не надо ничего описывать, не надо изучать нюансы сторонних фреймворков, не надо давать пояснений и ждать подвохов.
Теги:
Введите теги разделенные пробелами. Обрамляйте в кавычки словосочетания с пробелами внутри, например:
"Visual Studio" .NET
Имя, пароль:
Загрузить
Нравится наш сайт?
Помогите его развитию!
Отключить смайлики
Получать ответы по e-mail
Проверить правописание
Параметры проверки …