TGTGInsightтелеграм анализLIVE / telegram public index
← Такты, стеки, два колеса

TGINSIGHT SIMILAR POSTS

Намери подобно съдържание

Изходен канал @clockstackwheels · Post #721 · 26.12

Почему я люблю языки с сильной системой типов, проверяемой статическим анализом кода — хорошо написанная программа является своей собственной спецификацией и позволяет выражать через язык программирования законы существования предметной области. Когда-то давно я писал на ActionScript. Там была система типов, но вот десериализация JSON'ов по-умолчанию была в какой-то общий Object, к полям которого нужно было обращаться ["по_строковому_имени"]. В один момент мне потребовалось написать что-то на C#, который я совсем не знал, я стал гуглить, как десериализовать JSON, и с удивлением обнаружил кучу советов заранее объявить класс со всеми нужными полями и десериализовать в него. "Какой ужас!", — подумал я тогда, — "Это же дико неудобно! А если я не знаю полей JSON? А если их много? Отвратительный язык!" Теперь то я прекрасно понимаю, что JSON это контракт, и что правильная десериализация только такая и должна быть, и что в хорошем API в одном поле никогда не бывает данных принципиально разных типов, и так далее. Нет, если вы набиваете вечерами пет-проект или сидите бессонную ночь на хакатоне, нет ничего плохого в том, чтобы взять простой язык с динамическими типами вроде JavaScript или Python, не требующий описывать данные. Но вот в энтерпрайзе, особенно когда над одним проектом работает много людей (а бывает это очень часто) — хорошее использование системы типов убережёт разработчиков от огромного количества ошибок, будет бить их по рукам, когда они пытаются сделать что-то не то, и будет подсказывать, когда они не уверены в чём-то. С помощью статической типизации можно на уровне кода обозначить правила, по которым ведёт себя предметная область вашей программы в реальном мире. Разработчику не только будет сложно их нарушить, но он ещё и станет узнавать какие-то вещи, которые мог не знать раньше. Например, если мы делаем медицинскую CRM, и больница заводит новых пациентов только тогда, когда знает их группу крови, мы можем объявить тип "Пациент" (или, если точнее, "Карта пациента") и запретить создавать экземпляры этого типа, не передав в конструктор группу крови (которая, в свою очередь, тоже является типом, вероятнее всего ValueObject'ом). Если новый программист пришёл в проект, он, во-первых, не сможет записать в БД некорректную карту пациента. Понятно, мы не учитываем случаи, когда новый программист переделывает модели предметной области — это будет хорошо видно на кодревью. А, во-вторых, даже если ему никто не сказал, что пациенты должны быть с группой крови, он узнает это из кода. И уже будет понимать, что в тех процессах реальной жизни, которые он описывает кодом, карта пациента создаётся только при наличии группы крови. А, значит, нужно искать какой-то способ сначала эту группу крови получить, и только потом создавать карту. Программирование моделирует реальный процесс. В настоящей работе даже на языках с типами, конечно, без должного контроля можно написать что угодно. Нужна управленческая воля, компетентность руководства, понимание опасности техдолга, в идеале отдельные должности для архитекторов, опытные лиды и старшие разработчики. Но когда всё это есть, можно отсекать много проблем ещё на старте и проще погружать новичков. #dev

Hashtags

Резултати

Намерени 10 подобни публикации

Търсене: #layout

当前筛选 #layout清除筛选
Lsposed Modules Updates Tracker

@lsposed_Modules_Updates_Trackers · Post #6963 · 05.05.2026 г., 07:00

#Layout#Flash丶光芒 模块:com.flass.layoutinspect 简介:Layout Inspect 版本:19-1.1.5 更新时间:2026/05/05 14:40:42 更新日志: Layout Inspect 1.整合API 89、100、101,集成一个安装包 2.首次需选择 Xposed Service,必须选择正确,否则动态作用域无法生效 模块 一、Dump Dex 1.新增 Dex 方案:mCookie(默认),mInternalCookie(备用字段),DexCaches(内存级别) 2.新增 DexFileName:勾选则命名 classesX.dex,反之则 cookie.dex 3.新增 DexFileSize 方案:默认,Data,Pointer(内存级 @lsposed_Modules_Updates_Trackers | @lsposed_Geeks_Bot

Lsposed Modules Updates Tracker

@lsposed_Modules_Updates_Trackers · Post #6396 · 31.03.2026 г., 12:00

#Layout#Flash丶光芒 模块:com.flass.layoutinspect 简介:Layout Inspect 版本:18-1.1.4 更新时间:2026/03/31 18:57:44 更新日志: 1.爆肘 SystemUI,完美捕获”系统布局“(锁屏、状态栏、通知栏、指纹等等) 2.增强 Dump Dex:完美脱壳某企业壳,还原Nop,不闪退 3.增强”类加载器“功能,从内存中读取,不放过任何一个类加载器,与Frida一样强大(因此也解决了算法助手冲突问题) 4.增强”搜索类名“:既然类加载器一个都不放过,那么类名自然也一个都跑不掉 5.新增”控件转图片“的新方案,比之前的更加稳定,之前的也保留 6.新增”修改前景 (仅支持纯色)“的选项,可将前景修改成纯色(长按foreground弹出 @lsposed_Modules_Updates_Trackers | @lsposed_Geeks_Bot

Lsposed Modules Updates Tracker

@lsposed_Modules_Updates_Trackers · Post #6174 · 13.03.2026 г., 08:00

#Layout#Flash丶光芒 模块:com.flass.layoutinspect 简介:Layout Inspect 版本:17-1.1.3 更新时间:2026/03/13 15:18:22 更新日志: 一、升级模块的Resouces隔离模式,显著效果如下: 1.避免被扫资源检测点(如某国网等) 2.避免与宿主资源ID冲突问题 3.修复远古遗留的样式冲突问题(如长按弹出的菜单项、JMComic等) 4.修复 Dump Xml 与 宿主同名时,脱出结果并非是预期文件 5.修复 Dump Assets 脱出多余文件问题 二、更新与增强: 1.新增 活动记录 功能(移除原”当前活动“功能),查宿主所有在运行中的Activity 2.新增 Activity 的 可视化对象 功能 3.升级 Dump De @lsposed_Modules_Updates_Trackers | @lsposed_Geeks_Bot

GitHub Trends

@githubtrending · Post #15096 · 26.08.2025 г., 11:30

#lua#layout#lua#neovim#neovim_plugin#neovim_ui#nvim#plugin#scratchpad#ui#ux#zen_mode#zenmode The no-neck-pain.nvim plugin for Neovim centers your active editing window by adding empty buffers on each side, creating padding that keeps your focus in the middle of the screen. It works right away without setup, supports multiple tabs, split windows, and integrates with popular file tree and dashboard plugins. You can customize its width, colors, and behavior, and even use the side buffers as scratchpads for notes. This helps reduce neck strain and improves focus, especially on wide monitors, by keeping your code or text centered and easy to read without distractions. https://github.com/shortcuts/no-neck-pain.nvim