Задолженность по ид

Роль понятых в расследовании ДТП

Шла из магазина домой, подошел сотрудник полиции и попросил стать понятой в фиксации ДТП. Сотрудник пытался уговорить, сказал, что мне понадобится всего 30 секунд и никаких последствий не будет. Не объяснил суть дела и мои обязанности и права перед тем, как я бы подписала.

Я отказалась, но ситуация интересная. Чем грозит стать понятым в такой ситуации?

Роль понятого

Елизавета, понятой делает достаточно благородное дело. Он независимый контролер законности действий государственного служащего. От правильных и грамотных действий понятого может зависеть судьба.

Сразу скажу, что рисков и последствий для вас как для понятого нет. Об остальном расскажу подробнее.

Кто такой понятый?

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

Отличия от свидетеля

В отличие от свидетеля, понятой никогда не выступает очевидцем преступления или правонарушения. Свидетель — невольный участник событий, а понятый всегда участвует в расследовании добровольно. За отказ быть понятым нет никакой ответственности.

Когда понятые не нужны

Понятыми не могут быть:

  • Дети
  • Лица, страдающие психическими расстройствами
  • Официальные представители подозреваемого

Важность присутствия

Понятных важно привлекать при оформлении протоколов об административном правонарушении и во время предварительного следствия по уголовным делам.

Что должны знать понятые?

Понятые — не юристы, а случайные люди. Они не должны знать, что именно нужно делать, все это должен объяснить следователь или дознаватель, оформляющий административный протокол.

Права и обязанности понятого при осуществлении следственных мероприятий

Понятый, участвуя в следственных мероприятиях, имеет ряд прав и обязанностей, которые необходимо соблюдать. Рассмотрим ключевые моменты:

Подписание протокола

Понятого попросят расписаться в протоколе, чтобы подтвердить достоверность фактов, описанных в документе. Это важно для защиты прав сторон и исключения возможности подделки данных.

Замечания в протоколе

Если понятой считает, что протокол содержит ошибки или не соответствует реальности, он имеет право написать свои замечания в документе. Запрет на это действие недопустим.

Участие в суде

Понятого могут вызвать в качестве свидетеля в судебное разбирательство. Отказ от явки в суд может повлечь принудительное приведение или штраф.

Конфиденциальность данных

Необходимо соблюдать конфиденциальность данных предварительного расследования. Нарушение этого правила ведет к уголовной ответственности, если об этом было предупреждено понятого.

Внимательное отношение

При участии в следственных мероприятиях важно внимательно следить за процессом и ознакомиться с протоколом. Любые нарушения могут привести к негативным последствиям для понятого.

Заключение

Важно помнить о своих правах и обязанностях при участии в следственных мероприятиях. Соблюдение законов и правил поможет избежать неприятностей и защитит ваши интересы.

Как принудительно взыскивают долги с контрагентов: все, что нужно знать

Иногда недобросовестные сотрудники правоохранительных органов сознательно отказываются от видеофиксации и отдают предпочтение понятым. На видеозаписи всегда четко видно любое нарушение. Изменить или подделать видеозапись не так просто. А понятой может со временем забыть детали или расписаться в протоколе, который не читал или при оформлении которого не присутствовал.

Итоги

Вот что нужно знать о понятых:

  • Если у вас есть вопрос о личных финансах, правах и законах, здоровье или образовании, пишите. На самые интересные вопросы ответят эксперты журнала.
  • Контрагент проиграл суд и не платит долг? В дело вступают судебные приставы. Как происходит принудительное взыскание задолженности, что такое исполнительный документ и исполнительский сбор, рассказывают эксперты Контур.Фокуса.

В этой статье

Узнайте о долгах контрагента в Контур.Фокусе. Сервис покажет, сколько у компании исполнительных производств и общую сумму требований.

Под аббревиатурой ИД скрывается понятие исполнительный документ. Это документ, который обязывает человека или организацию что-либо сделать, как правило, выплатить деньги.

Исполнительные документы бывают разными. Чаще всего на практике встречаются исполнительные листы и судебные приказы — их выдают суды общей юрисдикции и арбитражные суды. К исполнительным документам также относятся:

  • Исполнительный лист
  • Судебный приказ
  • Решение суда

Исполнительный документ содержит следующие реквизиты:

  • Наименование суда
  • Сумма задолженности
  • Данные должника и взыскателя

Задолженность по ИД означает обязанность, которую человек или организация должны выполнить. Пока они не исполнят то, что указано в ИД, их считают должниками. На основании исполнительного документа приставы возбуждают исполнительное производство и взыскивают задолженность принудительно, если должник не хочет оплатить ее добровольно.

Пример

Альфа не оплатила поставку товаров от Омеги на три миллиона рублей. Омега обратилась в арбитражный суд и выиграла дело. Ответчик может перевести деньги напрямую истцу, так как суд уже установил его обязанность погасить долг. Но если этого не происходит, через месяц, когда решение вступит в силу, истец может получить в суде исполнительный лист.

Дальше есть два варианта: направить ИД в банк, чтобы он списал деньги в пользу Омеги прямо со счета должника, или обратиться к приставам для принудительного взыскания. Только когда Альфа перечислит всю сумму, долг по ИД у судебных приставов будет погашен.

Порядок взыскания задолженности по исполнительным документам регулируется законом от 02.10.2007 № 229-ФЗ Об исполнительном производстве. Рассмотрим, как происходит процесс принудительного взыскания.

Все начинается с возбуждения исполнительного производства. Для этого взыскатель подает в службу судебных приставов заявление. В городе может быть несколько отделений ФССП.

Если должник — физлицо, обращаться нужно по адресу его места жительства или нахождения имущества, например, квартиры. Если задолжала организация, заявление подают по ее юридическому адресу, месту нахождения филиала или имущества.

Взыскание долгов через приставов: как это происходит?

Взыскатель пишет заявления в свободной форме. Главное, не забыть указать в нем номер банковского счета для возврата долга. Дополнительно можно попросить наложить на должника арест, а также написать известные данные о нем, его имуществе, счетах в банках — это поможет вернуть долг быстрее.

Не страшно, если чего-то не знаете о должнике — пристав сам может запросить паспортные данные, СНИЛС, ИНН, номер телефона у госорганов и оператора связи. Заявление нужно подписать и приложить к нему исполнительный документ.

Как происходит взыскание долгов?

Исполнительные листы и судебные приказы можно предъявить к исполнению в течение трех лет. Если срок пропустить, взыскать деньги через приставов станет невозможно.

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

  • Неправильно указаны данные должника
  • Отсутствует подпись заявителя
  • Не все необходимые документы приложены

В течение одного дня с момента вынесения постановления о возбуждении исполнительного производства пристав отправляет его копию должнику. Он получает ее по почте или через портал Госуслуги.

Уведомление о возбуждении производства

Организациям-должникам и индивидуальным предпринимателям постановление также отправляют на адрес электронной почты. Кроме того, приставам разрешается отправлять смс со ссылкой на данные о возбужденном производстве.

Изучайте контрагентов в Контур.Фокусе. Оцените надежность компании по исполнительным производствам, судебным спорам, финансовым показателям и другим важным факторам.

Если пристав уведомляет о возбуждении исполнительного производства через Госуслуги, должник считается извещенным, когда зашел в свой личный кабинет. Если же должник в течение 15 дней не воспользовался сервисом, уведомление считается недоставленным. В таком случае приставу нужно найти другой способ предупредить должника, например, по почте или отправить смс.

Получение извещения

То же самое касается ситуаций, когда должник вообще отключил возможность отправлять ему уведомления в личный кабинет Госуслуг — постановление правительства от 29.06.2016 № 606.

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

Проверка наличия исполнительного производства

Узнать о долге по исполнительному производству можно самому. Для этого зайдите в личный кабинет на портале Госуслуги, перейдите в раздел Штрафы и налоги, выберите Информация о наличии исполнительного производства. Ответьте на вопросы системы, укажите, что являетесь должником. Если исполнительные производства есть, они отобразятся в результатах поиска.

Взыскание долгов

ФССП ведет реестр задолженностей по исполнительным документам — «Банк данных исполнительных производств». Он находится в открытом доступе, узнать информацию может любой желающий. Чтобы проверить задолженность по исполнительным документам контрагента:

Задолженность по ид

Еще один способ узнать задолженность по ИД контрагента — воспользоваться сервисом Контур.Фокус. Достаточно знать один из реквизитов компании — ИНН, ОГРН или название. В карточке организации исполнительные производства вынесены в отдельную вкладку. Сервис показывает как актуальные, так и исторические производства. Изучите их суммы и основания, чтобы оценить добросовестность контрагента.

Задолженность по ид

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

После получения уведомления должнику нужно как можно скорее перечислить деньги взыскателю. Иначе возможны не только арест счетов и имущества, запрет выезда за границу, но и денежная санкция — исполнительский сбор.

Есть несколько способов погасить долг:

Если долг не оплачен добровольно, пристав приступает к принудительному взысканию. Сначала он запрашивает информацию в госорганах и банках об имуществе должника: счетах, недвижимости, ценных бумагах, машинах, имущественных правах, залогах.

В первую очередь забирают наличные и списывают деньги со счетов. Сначала в рублях, потом в ход идет иностранная валюта и драгоценные металлы. Если денег не хватает, банк следит за поступлениями и списывает их сразу, как только придут. Деньги перечисляют на счет ФССП, а оттуда они поступают взыскателю.

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

Чтобы взыскивать долги эффективнее, пристав накладывает на должника ограничения — арестовывает деньги и имущество. Арестованные деньги не получится потратить, а арестованное имущество — продать. Это нужно на случай, если должник захочет передать их другим, чтобы продолжать пользоваться.

Также приставы могут запретить физлицу выезжать из страны. Это возможно, если человек задолжал больше 30 тысяч рублей или 10 тысяч рублей по алиментам, возмещению вреда здоровью или ущербу от преступления.

У должников-организаций тоже сначала списывают деньги. Если их не хватает, приставы взыскивают по очереди:

Не все виды доходов приставы могут списать в счет погашения долга. Нельзя обратить взыскание на:

Если исполнительное производство связано с алиментами, долг можно взыскать даже за счет возмещения вреда здоровью, компенсации пострадавшим от катастроф, выплат военнослужащим.

Задолженность по ИД у приставов погашается не только за счет сбережений, но и из зарплаты должника, вознаграждений авторам результатов интеллектуальной деятельности и других доходов, которые периодически поступают на счет. Всю зарплату списать нельзя: с должника допускается удерживать максимум половину дохода каждый месяц. Если долг касается алиментов, возмещения вреда здоровью или ущерба, причиненного преступлением, возможный размер списания повышается до 70%.

Должник вправе подать приставу заявление и попросить сохранить за ним доход в размере прожиточного минимума. Если у него есть дети или другие лица, которых он обязан содержать, он может обратиться в суд и попросить ежемесячно оставлять за ним сумму, превышающую прожиточный минимум. Однако это правило не действует при выплате алиментов, возмещении вреда здоровью, ущерба от преступления или смерти кормильца.

Пристав обращает взыскание не на любое имущество, принадлежащее должнику-физлицу — закон устанавливает ограничения, они перечислены в ст. 446 ГПК РФ. Нельзя погасить задолженность по ИД в ФССП за счет:

Ограничения установлены и для некоторых видов юридических лиц. Например, нельзя обратить взыскание на призовой фонд организатора лотерей, деньги на специальном банковском счете банкрота, на средства пенсионного резерва и активов негосударственного пенсионного фонда, на скот, сельхозтехнику, лошадей, семена сельхозкооператива.

Помимо суммы задолженности должнику придется оплатить:

Исполнительский сбор. Он назначается, когда должник пропустил пятидневный срок на добровольную выплату долга. Сбор составляет 7% от суммы взыскания, но не менее 1 000 рублей для физлица и 10 000 рублей для организации. Избежать назначения сбора получится, если доказать, что долг было невозможно оплатить из-за чрезвычайных и непредотвратимых обстоятельств.

Расходы по совершению исполнительных действий. К ним относятся расходы на реализацию имущества должника, вознаграждение за работу переводчика и других специалистов, регистрацию прав должника, розыск имущества. Сначала деньги на них берут из бюджета, а потом через исполнительное производство взыскивают с должника.

Приставы списывают деньги и реализуют имущество до тех пор, пока вся сумма задолженности не будет погашена. Когда вся задолженность по ИД выплачена, пристав выносит постановление об окончании производства и снимает с должника все ограничения. На исполнительном документе пристав делает отметку о том, что требования в нем исполнены.

Если должнику нужно оплатить исполнительский сбор или расходы, пристав возбуждает для этого новое исполнительное производство — в таком случае ограничения продолжают действовать.

Часто приставы оканчивают производство, потому что не смогли найти хоть какое-нибудь имущество у должника или его самого. В таком случае взыскатель может повторно открыть производство у пристава, но сделать это можно не раньше чем через шесть месяцев.

Исполнительное производство — непростой процесс, успех которого во многом зависит от активных действий взыскателя. Выбирайте только надежных контрагентов, чтобы снизить риски судебных споров и принудительных взысканий.

Контур.Фокус покажет исполнительные производства бизнес-партнеров. Чем чаще контрагент не платит по долгам добровольно, тем выше шанс, что он окажется недобросовестным

Вот об этом был этот могучий принцип, когда говорили, что стрела зависимости — от более абстрактных к более конкретным. Имелось в виду, что это модуль из PostgreSQL зависит от ядра, а не наоборот. Обычно до этого модуль содержал конкретную технологию, и ядро на него завязывалось. В том, чтобы так не делать, и заключался принцип. Сейчас у нас этого нет, но олды это очень одобряют. В текущей ситуации: даже если бы у нас все модули были на Spring, в этом не было бы ничего страшного. Ведь ядро ничего не знает о реализации, поэтому ядро в любом случае сохранит чистоту.

Но у нас ситуация другая. Весь наш микросервис — зелёненький, спринговый. Наше ядро на молекулярном уровне уже слилось с этими модулями. Вот так: от Dependency Inversion осталась только аббревиатура DI, которая нынче расшифровывается как Dependency Injection.

Фактически это только способ подключить зависимости.

Ну хотя бы все знают, что подключать их нужно правильно, использовать конструктор, тогда зависимости будут описаны в явном виде и не будет циклических зависимостей.

Сейчас подключение через конструктор используется как данность. Обычно такой способ подключения зависимостей обосновывают тем, что тогда не получится создать циклические зависимости.

Но на самом деле, разработчики, которые советуют так делать, рассчитывают, что, когда человек начнёт через конструктор подключать зависимости, он опишет огромный 28-сантиметровый конструктор. И поймёт, что 28 сантиметров кода — это много. И ему захочется зависимости убрать. Когда он будет эти зависимости убирать, чтобы кода стало меньше, получится, что и ответственности у класса станет меньше, и он станет ближе к принципу Single Responsibility, Single Reason to Change.

Но комьюнити поработало: зачем нам вообще всё это писать, давайте-ка сгенерируем библиотеку, которая будет брать и за нас генерировать конструктор. Сверху RequiredArgsConstructor вы конструктор не увидите, а он есть. И в связке со Spring Lombok позволяет расслабляться и ничего не делать, потому что за вас всё уже сделано.

Получается, современные разработчики использовали две технологии. Это было не так просто. Они специально их разработали, лишь бы облегчить себе подключение большого количества зависимостей. Оставалась, правда, надежда, что они увидят, что в тестах эти зависимости надо мокать, но коммьюнити это не остановило.

На конференциях мы рассказываем про ООП, про разные технологии. И уверены, что пишем на крутом ООП Spring’e, а на самом деле, если присмотреться, пишем на старом добром Pascal. Это поразительно. Нам кажется, что это какой-то заговор. Шапочки из фольги где-то забыли, но хотим сказать, что заговоры в разработке программного обеспечения — вещь известная. Например, все знают, что DevOps — это заговор сисадминов с целью поработить разработчиков.

Когда разработчики друг с другом разговаривают, они такие: «Я проектирую и разрабатываю сложные системы, я придумываю, как всё будет работать». Но в глубине души все мы знаем, что на самом деле придумывает, как всё будет работать, не разработчик, а аналитик. Аналитик на русском языке всё пишет, и только потом ты это перерабатываешь в Java-код.

Известно, что аналитиков сейчас не хватает, хотелось бы побольше.

Хотя некоторые компании в принципе отказываются от использования услуг аналитиков, потому что у них есть разработчики. Они же сильные, смелые, ловкие, умелые и вообще инженеры — могут всё. Тем более зачастую разработчик и есть аналитик, а код не меняется. А ещё Spring придумали не аналитики, а какие-то разработчики написали. И тоже специально для того, чтобы мы писали так, как сейчас пишем.

Да, с помощью Spring вполне можно писать объектно-ориентированный код. Но разработчики почему-то не пишут. Это сейчас аналитики такие белые и пушистые, а при первой встрече шокировали сообщество разработчиков так, что те до сих пор не могут оправиться. Да, действительно, сейчас компании от аналитиков отказываются, потому что знают: разработчик без аналитика будет писать точно такой же код, как с аналитиком. И разработчик уверен, что ТЗ на написание кода — это на русском языке что-то процедурное.

Или что можно родить, кроме глубоко процедурного кода, из вот такой схемы?

Разработчик должен брать предметную область и делать её такой, чтобы удобно было писать поддерживаемый, простой и крутой код. Но думать никому не хочется. А кроме шуток, это довольно удобно. Потому что, когда схема ложится один в один на код, это значит, что все разработчики этот код напишут одинаково. И самое главное, другой разработчик сразу место на схеме и место в коде сможет найти и отождествить. Поэтому мы здесь надолго.

Что с этим делать? В принципе, это извечный русский вопрос, ещё больше ста лет назад люди этим интересовались. На этот простой древний вопрос есть очень простой и понятный ответ: сдаться.

А что можно ещё сделать с бесконечным потоком ТЗ от аналитиков? Ты не можешь сказать: «Горшочек, не вари». Бизнес с аналитиками вместе, ему эти схемы более понятны, он их поддерживает. Даже если бы можно было диктовать аналитикам свои условия, то что им сказать? «Не пишите так»? Они скажут: «Как писать?» Разработчики зачастую не знают или давно забыли, как выглядят объектные описания. А ещё разработчикам удобно: схема в код и код в схему перерабатываются красиво.

Вместо поиска ответа на вопрос «Что делать?» лучше просто подумать, как нам себя вести, чтобы эта ситуация меньше нам вредила и было не так больно.

Есть статический контекст и есть спринговый контекст. Понятно, что это не одно и то же. Почему-то, каким-то образом, когда начинаешь использовать статические методы, то спринговый контекст пытается перетечь в статический.

Откуда взялся этот objectMapper. Ему сделали getBean — из контекста взяли статическим методом, или там new object mapper? Ещё теоретически в сигнатуре метода может передаваться какой-то сервис и так далее.

Зачастую статические методы используют для того, чтобы вообще отрицать Dependency Inversion. Пишут простыни кода со статическими методами, а когда им говоришь: «А оберни-ка это в какой-нибудь другой бин или что-нибудь такое», отвечают: «Нет, так мы делать не будем». Потому что, если сейчас завернуть это в бин, то тогда сделаем инъекцию в конструктор. А много инъекций — это плохо, так нельзя.

Самое важное, что статические методы нельзя мокать. Технически у нас такая возможность есть, мы можем использовать PowerMock, но в чём смысл тестов, которые прогоняются полдня? Только последняя версия Mockito умеет мокировать статические зависимости. Но с поправкой: по возможности, пожалуйста, этой функциональностью не пользуйтесь.

Хотя, даже если бы за каждый новый класс, за каждый новый бин нужно было платить по доллару, вполне возможно, мы бы платили ради своего удобства.

Обратите внимание: это соображение не главное, потому что можно было бы сделать self inject. Самое главное, что при вызове внутри бина его собственных методов ты не можешь их замокать.

LocalDateTime.now() тоже не замокается, а в юнит-тестах вам достаточно часто нужно сделать так, чтобы система думала, что у вас там какое-то конкретное время. Поэтому так тоже нужно делать очень осторожно. Если в принципе вообще стоит это делать.

Статические методы не нужно использовать там, где можно сделать метод бина. Приватные методы не нужно использовать, когда речь идёт о бинах. Возможно, не стоит возводить этот принцип в абсолют. Если у вас есть какой-то статический метод на две строчки и он вам не мешает — ну и ладно. Но если вы думаете: «Как было бы круто этот статический метод замокать, затащу себе PowerMock», — то пришло время выносить его в бин. Ну и objectMapper в этом методе — это за гранью добра и зла. Даже если код очень простой, не надо так делать. То же самое с приватными методами и собственными методами бина.

Если вы делаете что-то чуть-чуть, и это вам не сильно мешает, ничего страшного. Путь разработчика — это путь по тонкой линии между under engineering и over engineering. Если для того, чтобы избежать первого, вам приходится делать очень много второго, вы отклонитесь и упадёте. Во всём нужен баланс, мера. Их важно соблюдать. Помните об этом, когда будете читать текст дальше.

Никто не ожидает, что метод isAdult направит куда-то REST. Библиотеки тоже. Например, в случае применения MapStruct надо будет разбираться, как же сделать так, чтобы всё нормально мапилось и чтобы про метод isAdult не подумали, что там есть какое-то поле под названием adult. Инжектить какие-то сервисы в DTO с помощью MapStruct, наверное, можно. Но не понятно — как.

Поэтому давайте запретим DDD!

Подождите, не уходите, мы всё объясним. В сознании среднестатистического разработчика концепция DDD намертво привязана к ООП. Если ему надо внедрить DDD, он начинает всё делать ООП-шным. Когда нам рассказывают про ООП в институте или на курсах, нам говорят: «Есть класс Животные, от Животных наследуются Котики. Ты можешь сделать объект Котик. У всех Котиков есть свойства. А ещё у них есть методы, с помощью которых ты можешь свойства Котика менять. Котиков много, каждый уникален».

А потом человек приходит в разработку, и есть CatService, который один, синглтон. И есть много DTO, которые инкапсулируют все данные. Он думает: объекты — это явно Котики. CatService — это вообще ерунда. Я буду бизнес-логику внедрять в котика. А на самом деле приёмы ООП хорошо ложатся на сервисы, а на Котиков они в современной парадигме ложатся хуже. Но каждый хочет их затащить в Котиков. В принципе это можно сделать. Если у вас хорошо сыгранная команда, если вы хорошо знаете, как делать ваш сорт DDD, то спокойно можете этим заниматься. Но обычно получается так, что в команде есть пара энтузиастов, а все остальные — за всё хорошее, против всего плохого.

Энтузиасты начинают внедрять бизнес-логику в DTO, и это, как правило, не заканчивается хорошо. Вместо крутого, белого-пушистого кода получается сумятица. Поэтому сейчас DDD — штука сомнительная.

Давайте хотя бы соблюдать принципы, чтобы у нас осталась возможность мокать процедуры, иначе будет совсем плохо. Эта возможность нужна нам не просто так. Она нужна для юнит-тестов. Я сделаю сильное утверждение: ничто в современной разработке не имеет смысла, кроме как в свете юнит-тестирования. Это наша версия фразы учёного-эволюциониста Ф. Добжанского: «Ничто в биологии не имеет смысла, кроме как в свете эволюции». Кстати, под юнит-тестами я имею ввиду и то, что помечено аннотациями SpringBootTest, DataJpaTest и даже то, что работает с Testcontainers.

Если хотите, можете юнит-тестирование заменить юнит-интеграционно-автоматизированным тестированием. К сожалению, цитата становится не такой крутой. Казалось бы, все знают, что это круто, все это делают. Но, если присмотреться, то нет. Были времена, когда у нас был огромный монолит, который стартовал 12 минут. А потом нужно было найти поиск, ввести Voldemort’а, узнать, что он живёт в Петербурге, и только тогда понять, что ты правильно написал код. Либо 15 минут копаешься в этом интерфейсе, который написан ещё на JSP, либо пишешь один тестовый метод, и он отрабатывает достаточно быстро. Ясное дело, нужно писать юнит-тесты.

Мы стремимся к тому, чтобы сервисы запускались маленькое количество времени. Но на практике остались места, где это всё по-прежнему не так. Поэтому бывает и 10 минут, и 20. В зависимости от того, насколько плохая ситуация. Но даже в таком случае иногда есть ограничения на среде. Несмотря на то, что мы живём в современности, юнит-тесты, которые проверяют твою логику, написать значительно быстрее. А Swagger — для проверки интеграций.

Мы встречали в сети мнение, с которым категорически не согласны, что Swagger — для одного, юнит-тесты — для другого. На самом деле нужно правильно это всё применять, потому что Swagger — для разработки и отладки кода, а юнит-тесты — чтобы фиксировать требования. И поэтому в Swagger мы всё отлаживаем, а потом пишем несколько юнит-тестов и закрываем отрицательные кейсы.

Кстати, не всегда нужно запускать локально. Это не проблема, люди берут и подключаются напрямую к среде, и там начинают делать эти фокусы. Это проекты, где на тестовой среде много данных и от них многое зависит. А другие нужно запускать локально, поэтому мы будем подключаться к тестовой среде. Swagger, дебаггер уже включён, и мы начинаем всё это проходить.

Это Debug Driven Development, и этот подход разрушителен для психики программиста.

Мы пишем микросервисы, где должно быть мало кода, и код должен быть простым, а в голове нужно примерно представлять, как это использовать.

С нашей точки зрения современный разработчик должен очень плохо уметь пользоваться дебаггером, потому что он его и не должен использовать.

Когда ты живёшь в мире, где Swagger победил, ты постоянно в депрессии. Когда занимаешься Debug Driven Development или Swagger Driven Development, то, когда ты уже закончил задачу, уже сделал pull request, CI говорит, что нужно поднять процент покрытия. К счастью, процент покрытия фиксируется. Человек такой: «Я же уже всё через Swagger протестил, зачем мне ещё юнит-тесты писать?» А выбора нет. Необходимость писать тесты вводит тебя в депрессивное состояние. Потому что нет ничего более грустного, чем продолжать возиться с задачей, которую ты уже закончил.

Никому не снился сон, что нужно какой-то экзамен досдать, иначе тебе не засчитают институт или даже школу? И ты понимаешь, что уже не хочешь этим заниматься, а надо. Страшный сон. Многие программисты в этом сне живут. Поэтому нужно сказать «нет» этому Swagger Driven Development. Гораздо лучше использовать TDD. С ним, когда закончили задачу, тесты у вас есть по определению и жить вам гораздо легче.

Люди, пришедшие с других языков, по-своему интерпретируют правила разработки. Они могут сказать не только KISS, могут сказать You ain’t gonna need it, что слои не нужны, и хорошо бы их упразднить.

Дальше логика такая. Репозитории упростить нельзя, они автоматически генерируют нам код. Контроллеры упразднить нельзя, потому что они позволяют нам связываться с вебом. А вот сервисы вроде и не нужны. Человек такой: «Отлично, сервисный слой мы уберём. Просто будем инжектить репозиторий прямо в контроллер, тогда нам и DTO не нужны, будет вот это Entity возвращать».

Если внутри будет какая-нибудь связанная коллекция, будет ошибка. Транзакция уже закрыта? Скорее всего, нет, потому что в Spring Boot есть специальная настройка, которая делает так, что транзакция не закроется, пока сериализация не закончится. Всё будет нормально работать, просто везде будет знаменитый N+1.

Скорее всего, какой-то толстый партнёр пришёл в организацию, которая занимается Spring Boot, и сказал: «У нас везде lazy, не хочется всё править. Просто сделайте настройку, чтобы транзакция не закрывалась, и всё». Ему говорят: «Это плохо, антипаттерн, коннекшенов не напасёшься». Отвечает: «У нас просто админка такая, три с половиной пользователя. Основная проблема — эксепшен везде. Сделайте! А все остальные просто будут эту настройку отключать». И действительно: большинство туториалов начинаются со слов: «Отключите open session in view».

С другой стороны, если у вас ситуация такая, как у этих жирных партнёров, можно эту настройку оставить. Есть вероятность внезапно начать передавать прямо на фронт мегасекретную информацию, которую в этой Entity добавил где-то, так как она же уже в контроллере. Это действительно эпичная дыра в безопасности, может кончиться плохо. Поэтому Entity надо мапить в DTO, и из контроллера возвращать DTO с фиксированным количеством полей. Что мы хотели сказать? Осторожнее с KISS и YAGNI.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *