В C# есть модификатор доступа internal, который закрывает свойство или метод для всего, кроме текущей сборки (сборка это по сути группа пространств имён). И это чертовски удобно для построения правильной архитектуры по DDD — ты делаешь домен отдельной сборкой без внешних зависимостей, у сущностей закрываешь сеттеры и другие поля модификатором internal, а бизнес-правила с открытыми методами уже пишешь в агрегатах, которые содержат эти сущности. Агрегаты объявлены в той же сборке, так что они могут с сущностями делать что угодно, но слой приложения уже сможет вызвать только метод агрегата.
Пример. Есть бизнес-процесс, который включает в себя две сущности: письмо и прикреплённый к нему документ. У каждой из этих сущностей разные жизненные циклы, но письмо можно отправить только в том случае, если статус документа "Согласован". Мы делаем агрегат "письмо с документом" и там public-метод отправки письма сначала проверяет статус документа, а потом вызывает internal-метод отправки в сущности письма. Снаружи (вне домена) вызвать сразу отправку письма невозможно.
Но как эту задачу решают разработчики на других языках? Я совершенно не понимаю, как сделать хорошую архитектуру без internal. Окей, в некоторых языках вообще нет вменяемого ОПП и системы типов, но и к таким ребятам я бы не подходил с вопросами об энтерпрайз-архитектуре. Однако, многие серьёзные проекты пишутся на Java или, скажем, Go, что делают разработчики там? Может, кто-нибудь знает, и расскажет мне в комментариях?
#dev
Today start a new method of flashing. To give people more independence, we have created a flasher that you simply move most of (except modem) to a folder and run the new script.
Changelog:
-Entirely new method of flashing
-Rooted users are now finally fully stock!!!!
-Added my_preload flash for users coming from COS to get rid of COS bloat
Happy flashing!!! 😎😍✌🏻
Instructions:
https://docs.google.com/document/d/1sTI4krDEa_bLY2GP96cg4FE0rrZEyvHtMX1GjwuWi1Q/edit?usp=sharing
Extract keeping the folder intact:
To test your new independence, here's the new Global 405 build compiled yesterday, Grab it quickly with our new #aria2 note
Link to ROM:
https://gauss-componentotacostmanual-eu.allawnofs.com/remove-7685be6113556521ef7e508873b11b22/component-ota/25/01/16/1fa3f19d21bd49559ebe634a8c068258.zip
by @docnok63 & Jonas
Join @OnePlus13Series
Discussion @OnePlus13SeriesChatRoom
#javascript#123pan#139_cloud#189_cloud#ali_netdisk#aliyun_drive#aria2#baidu#baidu_netdisk#baidunetdisk#baiduyun#motrix#quark_netdisk#tampermonkey#tampermonkey_script#tampermonkey_userscript#tianyi_netdisk#uc_netdisk#userscript#xunlei_netdisk#yidong_netdisk
LinkSwift is a browser script that helps you quickly get direct download links for files stored on popular Chinese cloud services like Baidu, Alibaba, 123, and others—saving you time and making downloads easier without needing to visit each service’s website separately. It also improves the look of these cloud storage pages and adds extra features, such as support for different download tools and customizable themes. The main benefit is convenience: you can manage and download your cloud files faster, with a nicer interface, all from your browser. Just install the script using a tool like Tampermonkey, and it works on Chrome, Edge, and other major browsers.
https://github.com/hmjz100/LinkSwift