powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Тестовое задание
25 сообщений из 153, страница 3 из 7
Тестовое задание
    #39478155
17-77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyhVostt Репозиторий объектов типа А должен работать только с объектами типа А, а не А, АDto, АHZChto...То есть если, например, репозиторий А должен произвести операцию не только с объектом А, но и со связанными с ним объектами B и С, то эти манипуляции все равно нужно выносить в соответсвующие репозитории? Даже если эти манипуляции в отрыве от операции А вообще не применяются?
а что за манипуляции вы имеете ввиду?
например у вас DDD, есть Entity, у нее Value Object, то репозиторий должен работать только с Entity, будет IRepository<TEntity>
и вот там внутри он будет раскладывать это допустим по двум таблицам в БД
...
Рейтинг: 0 / 0
Тестовое задание
    #39478159
17-77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а насчет классов DDD и ORM - я как-то видел в одном проекте решение - классы DDD с логикой очень хитрыми и сложными маппингами гибернейта раскладывались в таблицы, без промежуточных, приближенных к таблицам классов ORM
...
Рейтинг: 0 / 0
Тестовое задание
    #39478172
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyhVostt Репозиторий объектов типа А должен работать только с объектами типа А, а не А, АDto, АHZChto...То есть если, например, репозиторий А должен произвести операцию не только с объектом А, но и со связанными с ним объектами B и С, то эти манипуляции все равно нужно выносить в соответсвующие репозитории? Даже если эти манипуляции в отрыве от операции А вообще не применяются?
Связанные каким образом? Агрегация, ассоциация?
...
Рейтинг: 0 / 0
Тестовое задание
    #39478177
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
17-77skyANAА завтра понадобится три метода вызывать в рамках одной транзакции, что будете делать?

test_task
вот, кстати, раз уж используете NHibernate - если при этом использовать Castle Windsor, то там есть уже готовая NHibernateFacility и AutoTx - вешаешь атрибут транзакции на публичный метод класса - и вперед, поддерживает вложенные транзакции и вложенные методы
В задании требуется EF.
...
Рейтинг: 0 / 0
Тестовое задание
    #39478251
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyТо есть если, например, репозиторий А должен произвести операцию не только с объектом А, но и со связанными с ним объектами B и С, то эти манипуляции все равно нужно выносить в соответсвующие репозитории? Даже если эти манипуляции в отрыве от операции А вообще не применяются?

Я имел в виду: Product, ProductDto, ProductDto2... Это не задача репозитория, обрабатывать какие-то там DTO. Если в СУБД хранится сущность, представленная entity-классом Product, то репозиторий должен работать только с ним, а с ворохом доп. классов, существующих для поддержки клиента.
...
Рейтинг: 0 / 0
Тестовое задание
    #39478257
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
17-77а насчет классов DDD и ORM - я как-то видел в одном проекте решение - классы DDD с логикой очень хитрыми и сложными маппингами гибернейта раскладывались в таблицы, без промежуточных, приближенных к таблицам классов ORM

Видел такое использование. Это возможно, но не айс. Поддерживать очень тяжело. Не предназначен он для такого, просто коммьюните усиленно просит, они приделываеют костыль за костылём.
...
Рейтинг: 0 / 0
Тестовое задание
    #39478261
test_task
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
test_taskв каком месте?

В каком месте почитать? Репозиторий объектов типа А должен работать только с объектами типа А , а не А, АDto, АHZChto...

я про в каком месте в моем решении это не так
...
Рейтинг: 0 / 0
Тестовое задание
    #39478287
test_task
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
17-77вот, кстати, раз уж используете NHibernate - если при этом использовать Castle Windsor, то там есть уже готовая NHibernateFacility и AutoTx - вешаешь атрибут транзакции на публичный метод класса - и вперед, поддерживает вложенные транзакции и вложенные методы

to 17-77 мотивация такая: и EF, и NH умеет работать с "родным" TransactionScope. Каждый раз писать

Код: c#
1.
2.
3.
4.
5.
using (TransactionScope transaction = new TransactionScope())
{
   ///transaction method code
   transaction.Complete();
}



выглядит копипастом. Поэтому чз атрибут.

to skyANA насчет реализованного в EF и NH UofW: он используется чз

Код: c#
1.
2.
3.
4.
public interface IRepository
{
     void SaveChanges();
}



Или надо было явно создать класс MyUofW? такое решение мне не видится лучше/хуже, больше вкусовщина.
...
Рейтинг: 0 / 0
Тестовое задание
    #39478288
17-77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
test_task,

по тестам - основная функция - это создание транзакции, я бы сделал так:

примерный набор юнит тестов:
1. обычная отправка без ошибок
2. отправка с неверным ид получателя
3. отправка нулевой, отрицательной сумм
4. отправка суммы большей, чем есть у отправителя на счету
причем тестировать надо класс(ы) с чистой бизнес логикой - на входе дто, на выходе другое дто или ентити, т.е. мока на слой доступа к данным не должно быть - тут надо подумать как написать такой код

интеграционный тест (веб-апи -> БД):
1. отправка кривых данных в веб-апи в метод создания транзакции - все должно корректно перехватываться, не допускать sql инъекций, возвращать коды ошибок (хотя тут еще надо подумать - это можно разбить на юнит тесты)
2. имитация ошибки таймаута/отсутствия сети на различных этапах создания транзакции - все должно откатываться корректно и деньги не должны теряться

нагрузочный тест (веб-апи -> БД):
1. натравить 10-100-1000-... запросов на ваш веб-апи метод и посмотреть когда упадет
...
Рейтинг: 0 / 0
Тестовое задание
    #39478292
test_task
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
17-77test_task,

по тестам - основная функция - это создание транзакции, я бы сделал так:

примерный набор юнит тестов:
1. обычная отправка без ошибок
2. отправка с неверным ид получателя
3. отправка нулевой, отрицательной сумм
4. отправка суммы большей, чем есть у отправителя на счету
причем тестировать надо класс(ы) с чистой бизнес логикой - на входе дто, на выходе другое дто или ентити, т.е. мока на слой доступа к данным не должно быть - тут надо подумать как написать такой код

интеграционный тест (веб-апи -> БД):
1. отправка кривых данных в веб-апи в метод создания транзакции - все должно корректно перехватываться, не допускать sql инъекций, возвращать коды ошибок (хотя тут еще надо подумать - это можно разбить на юнит тесты)
2. имитация ошибки таймаута/отсутствия сети на различных этапах создания транзакции - все должно откатываться корректно и деньги не должны теряться

нагрузочный тест (веб-апи -> БД):
1. натравить 10-100-1000-... запросов на ваш веб-апи метод и посмотреть когда упадет

спасибо за совет я бы тоже так сделал
...
Рейтинг: 0 / 0
Тестовое задание
    #39478298
17-77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
test_task to 17-77 мотивация такая: и EF, и NH умеет работать с "родным" TransactionScope. Каждый раз писать

Код: c#
1.
2.
3.
4.
5.
using (TransactionScope transaction = new TransactionScope())
{
   ///transaction method code
   transaction.Complete();
}



выглядит копипастом. Поэтому чз атрибут.

да, это я понял, я к тому, что в Castle есть уже готовая штука для Nhibernate, как раз атрибутом, и поддерживает вложенные транзакции и вложенные методы. можно поискать аналогичные библиотеки для Unity/EF
...
Рейтинг: 0 / 0
Тестовое задание
    #39478337
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAПодготовился - это не что-то там "почитал", а ознакомился с профилем компании, требованиями, прикинул примерный круг задач, что будут спрашивать.
Выписал себе на листочек, что хотел бы узнать, спросить, уточнить на собеседовании.
По тем же преславутым юнит-тестам нет единого мнения не то что в разных, часто оно расходится у проводящих собеседование, если их больше чем один.

skyANAА то спрашиваешь: Вы заходили на наш сайт, понимаете чем мы занимаемся, какой у нас продукт?
В ответ что-то там мычат. И встаёт вопрос, а человек вообще хочет именно у нас работать, или ему по фигу где, с кем и над чем он будет трудиться?
Всяк кулик хвалит свое болото. Нафига мне вникать в ваш сайт, если почти все проекты "инновационные и неповторимые", а суть, в плане применяемых технологий, близнецы-братья. Даже хвалебные тексты маркетинг копирует с других хвалебных текстов скоммунизженных в сети.
...
Рейтинг: 0 / 0
Тестовое задание
    #39478349
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
test_task
to 17-77 мотивация такая: и EF, и NH умеет работать с "родным" TransactionScope. Каждый раз писать

Код: c#
1.
2.
3.
4.
5.
using (TransactionScope transaction = new TransactionScope())
{
   ///transaction method code
   transaction.Complete();
}



выглядит копипастом. Поэтому чз атрибут.


Такие штуки можно прятать так
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
    public static void TranAction(Action act)
        {
            using (TransactionScope transaction = new TransactionScope())
            {
                act();
                transaction.Complete();
            }
        }
TranAction(() => {/*что то сохраняем*/ });


Можно впихнуть еще например логгирование и обработку ошибок.
...
Рейтинг: 0 / 0
Тестовое задание
    #39478435
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
test_taskя про в каком месте в моем решении это не так

После коммита 26 числа, вижу, что уже по этому вопросу всё так
...
Рейтинг: 0 / 0
Тестовое задание
    #39478437
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВПо тем же преславутым юнит-тестам нет единого мнения не то что в разных, часто оно расходится у проводящих собеседование, если их больше чем один.

Что именно расходится? Использовать или не использовать? 100% покрытие, или пофигу? От уровня профессионализма, с которым работает компания, это зависит.


ЕвгенийВВсяк кулик хвалит свое болото. Нафига мне вникать в ваш сайт, если почти все проекты "инновационные и неповторимые", а суть, в плане применяемых технологий, близнецы-братья. Даже хвалебные тексты маркетинг копирует с других хвалебных текстов скоммунизженных в сети.

Если ты не вникал, значит и соискание у тебя соответствующее. На отъ..сь. Либо ты настолько крутой и уникальный, что тебе везде рады. Либо лень. Либо самомнение.
...
Рейтинг: 0 / 0
Тестовое задание
    #39478482
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВskyANAПодготовился - это не что-то там "почитал", а ознакомился с профилем компании, требованиями, прикинул примерный круг задач, что будут спрашивать.
Выписал себе на листочек, что хотел бы узнать, спросить, уточнить на собеседовании.
По тем же преславутым юнит-тестам нет единого мнения не то что в разных, часто оно расходится у проводящих собеседование, если их больше чем один.
К чему это сказано? Закончите мысль, если не трудно.

ЕвгенийВskyANAА то спрашиваешь: Вы заходили на наш сайт, понимаете чем мы занимаемся, какой у нас продукт?
В ответ что-то там мычат. И встаёт вопрос, а человек вообще хочет именно у нас работать, или ему по фигу где, с кем и над чем он будет трудиться?
Всяк кулик хвалит свое болото. Нафига мне вникать в ваш сайт, если почти все проекты "инновационные и неповторимые", а суть, в плане применяемых технологий, близнецы-братья. Даже хвалебные тексты маркетинг копирует с других хвалебных текстов скоммунизженных в сети.
То есть вариант "по фигу где, с кем и над чем он будет трудиться", хорошо. Ставится отметка "минус" в листочке :)
...
Рейтинг: 0 / 0
Тестовое задание
    #39478651
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAТо есть вариант "по фигу где, с кем и над чем он будет трудиться", хорошо. Ставится отметка "минус" в листочке :)
Работодатель всегда хочет, что-бы работника в первою очередь интересовала сама работа, но
по статистике (не помню где видел) основная причина смены работы это зп :)
...
Рейтинг: 0 / 0
Тестовое задание
    #39478725
test_task
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAtest_taskпропущено...


тут просто баг (u.UserId == ...). а что тут "ужасно тупого"?
В тестовом задании хотелось бы видеть полноценную реализацию GetOne, что на вход принимает Criteria .


имеется в виду что-то такое?
Код: c#
1.
Account account = accountRepository.Get(a => a.UserId == userId);
...
Рейтинг: 0 / 0
Тестовое задание
    #39478728
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
test_taskимеется в виду что-то такое?
Код: c#
1.
Account account = accountRepository.Get(a => a.UserId == userId);



Не. Что-то такое:

Код: c#
1.
var account = accountRepository.Get(new AccountByUserSpecification(userId));
...
Рейтинг: 0 / 0
Тестовое задание
    #39478729
test_task
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAИ которую при желании легко можно декорировать к примеру кэшом . А то ведь не видно особого толка от интерфейсов и инъекций.

декорировать кэшом репозиторий? или что Вы имеете в виду? разве, при необходимости в кэшэ, не правильнее будет инъектировать кэш в нуждающийся в нём сервис?
...
Рейтинг: 0 / 0
Тестовое задание
    #39478730
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
test_taskне правильнее будет инъектировать кэш в нуждающийся в нём сервис?

И как ты это сделаешь, если сервис дёргает репозиторий? Про это и речь. Тогда нет смысла в интерфейсах.
...
Рейтинг: 0 / 0
Тестовое задание
    #39478733
test_task
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostttest_taskне правильнее будет инъектировать кэш в нуждающийся в нём сервис?

И как ты это сделаешь, если сервис дёргает репозиторий? Про это и речь. Тогда нет смысла в интерфейсах.

я правильно понял, что тут намекается на решение типа:

1. отнаследоваться от репозитория, который нуждается в кэшировании
2. инъектировать кэш в наследника (который уже не совсем "репозиторий")
3. при настройке IoC привязать к нужному интерфейсу реализацию нового "кэширующего репозитория"

???
...
Рейтинг: 0 / 0
Тестовое задание
    #39478735
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
test_task,

Совсем не обязательно наследоваться. Речь идёт о шаблоне Декоратор .
...
Рейтинг: 0 / 0
Тестовое задание
    #39478736
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
test_task,

Вот здесь ещё почитай: http://andrey.moveax.ru/post/patterns-oop-structural-decorator

там интересней. Ещё можешь книженцию Сергея Теплякова почитать, там тоже доходчиво и актуально.
...
Рейтинг: 0 / 0
Тестовое задание
    #39478748
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostttest_taskимеется в виду что-то такое?
Код: c#
1.
Account account = accountRepository.Get(a => a.UserId == userId);



Не. Что-то такое:

Код: c#
1.
var account = accountRepository.Get(new AccountByUserSpecification(userId));

а почему не Get(userId), а new AccountByUserSpecification не спрятать в Get?

AccountByUserSpecification вообще какой-то мутный класс, чье название больше подходит для функции. нафига под каждый способ выборки (ByUserName, ByUserPenisSize) класс городить? GetBy1способ, GetBy2способ по-моему логичнее.
...
Рейтинг: 0 / 0
25 сообщений из 153, страница 3 из 7
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Тестовое задание
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]