Попробовали на работе предметно-ориентированное проектирование (Domain Driven Design). Это такой способ построения архитектуры, когда ты (чаще всего с помощью системы типов и ООП) описываешь физическую суть вещей, которые представлены в твоей программе.
Например, если в программе есть объект "Книга", то её нужно снабдить свойствами, которые бывают у книг в реальности: число страниц, автор, язык, тип обложки и т.д. При этом данные свойства должны быть такими, чтобы присвоить им нереалистичные значения было нельзя. Допустим, число страниц не может быть отрицательным (и скорее всего в реальном мире не может быть нулём). При попытке установить отрицательное число страниц программа должна выбросить исключение. А совсем в идеальном случае -- не дать этого сделать программисту на уровне статического анализа кода.
Описав все свойства книги, вы снабжаете её операциями, которые над ней можно сделать. Например, из книги можно вырвать страницу, и при этом число страниц уменьшается. Нет такого случая, когда можно вырвать страницу без изменения числа страниц. Вы строго программируете эту зависимость, делаете у книги метод "Вырвать страницу", а он уже уменьшает число. Кстати, свойство "Число страниц" при этом нельзя переназначить в уже созданной книге. Можно только создать книгу, передав в её конструктор (так называется в программировании функция создания объектов) заданное число страниц. Но поменять число страниц можно только специальными методами "Вырвать страницу" и "Вклеить страницу".
С помощью этого подхода вы гарантируете, что ваши объекты всегда находятся в валидном состоянии -- то есть таком, которое возможно в реальной жизни с объектом, представленным программой.
Плюсы подхода очевидны: меньше число ошибок. Код описывает сам себя, и программист, если не лезет внутрь объекта "Книга", вообще не сможет сделать с книгой ничего недопустимого.
Минусы, думаю, тоже понятны: изначально проектировать сложнее, нужно учесть много нюансов, писать тесты. Время разработки изрядно растёт. Изменение требований даётся дороже: например, если каким-то образом в ваш книжный магазин поступят книги со страницами из кевлара, которые невозможно вырвать :)
Но первый проект с этим подходом мы сдали хорошо, без багов. Лучше, чем многие предыдущие.
#dev
Итог вайб-эксперимента
Реализовал скрипт (тг-бот) и тг-канал как вполне логичное продолжение всей истории.
✔️https://t.me/El_Reference - сам канал
Бот это такая универсальная автоматизированная система, позволяет скачивать с любых платформ, анализировать контент, создавать теги, грузить автоматически в Eagle с тегами и это все добро выкладывать в канал
Цель сформировать публичную базу референсов для разных специалистов
Для удобства поиска в каждом посте прописаны теги. Теги формируются на основе нейро-анализа.
Алгоритм взаимодействия таков
Тебе нужны референсы с тачками. Смотришь пинтерест, беханс, свои сохранные референсы. Либо находишь, либо не находишь. В том случае, если поиск того самого не удалась, то заходишь в мою базу. Пишешь хэштег #motion и тег "car" или "automobile". Дальше смотришь посты, в котором этот тег присутствует. То есть разница со всем остальным поиском в том, что есть теги, а не просто ссылка на видео или пустое видео без каких-либо зацепок для поиска, которая превращается в один большой хлам без возможности поиска внутри
Планы
Тестить, тестить и тестить. И разобраться самим ботом. Возможно ли это из локальной истории, которая работает только у меня, перенести в публичную. Чтоб, например, каждый через этого бота смог скачивать с любых платформ. Чтоб механизм метча Eagle + Бот работал тоже и у остальных людей. Ответов не знаю. Буду думать и пробовать.)
#Портфолио
⚖ В дополнение к предыдущему посту, делюсь образцами motion, которые используются в США:
1. Motion to dismiss - это ходатайство о прекращении судебного процесса. Такой motion может быть подан, если истец не имеет права на предъявление иска, если иск не соответствует требованиям формы или содержания, или если иск был предъявлен после истечения срока исковой давности.
2. Motion for summary judgment - это ходатайство о резолютивном решении, которое может быть подано любой из сторон в процессе. Суть такого motion заключается в том, чтобы убедить суд в том, что все необходимые факты и доказательства в данном деле уже известны, и что их интерпретация не допускает иного вывода, кроме того, который предлагает подавец motion. Если суд одобрит motion for summary judgment, то это может привести к прекращению судебного процесса без необходимости проведения полноценного судебного разбирательства.
3. Motion to compel discovery - это ходатайство о принуждении на предоставление доказательств. Если одна из сторон не предоставляет необходимых доказательств, то другая сторона может подать такой motion, чтобы вызвать ее к ответу.
4. Motion for continuance - это это ходатайство о переносе даты судебного заседания. Такой motion может быть подан, если одна из сторон не готова к разбирательству в заявленную дату.
5. Motion in limine - это ходатайство о предварительном исключении доказательств или установление определенных правил в отношении представления доказательств на судебном процессе. Например, такой motion может быть подан для того, чтобы запретить сторонам использовать определенные доказательства или для того, чтобы установить правила касательно способа представления доказательств.
6. Motion for reconsideration - это ходатайство о пересмотре судебного решения. Такой motion может быть подан, если сторона не согласна с решением суда и хочет, чтобы суд пересмотрел свое решение на основании новых доказательств или аргументов.
7. Motion to quash - это ходатайство об отмене судебного приказа. Такой motion может быть подан, если сторона не согласна с приказом суда и хочет, чтобы суд отменил его.
8. Motion for sanctions - это ходатайство о наложении санкций на сторону, которая нарушила правила судебного процесса. Например, такой motion может быть подан, если сторона не предоставляет необходимые доказательства или если она злоупотребляет правом на подачу многочисленных ходатайств.
Это только некоторые из наиболее распространенных типов motion в американском праве. Каждый конкретный судебный процесс может иметь свои особенности и требования в отношении подачи и рассмотрения motion.
#uslaw, #motion
✍ Тут вчера мне написали с просьбой объяснить, что такое motion. Motion - это американская правовая концепция нежели английская. Но в любом случае, я постараюсь объяснить вкратце что это.
🇺🇸 В американском праве термин "motion" обычно относится к формальному запросу, который предъявляется суду в ходе судебного процесса.
📝 Motion может быть подан любой стороной в процессе (например, истцом, ответчиком или третьей стороной) и может быть связан с различными вопросами, например, с требованием о разрешении какого-либо вопроса до начала судебного процесса, или с требованием о прекращении процесса, а также с запросом на изменение судебного решения.
🗂 Существует множество различных типов motion, которые могут быть поданы в судебном процессе, включая motion to dismiss (запрос на прекращение судебного процесса), motion for summary judgment (ходатайство о резолютивном решении), motion for continuance (запрос на перенос даты судебного заседания), motion to compel discovery (запрос на вынуждение предоставления доказательств) и многие другие.
#motion, #uslaw