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

Резултати

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

Търсене: #tcqt

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

@lsposed_Modules_Updates_Trackers · Post #6994 · 08.05.2026 г., 14:00

#TCQT#owo233 模块:com.owo233.tcqt 简介:TCQT 版本:478-3.6.4.r478.45bbb72 更新时间:2026/05/08 21:38:10 更新日志: 新增 对 XPAPI 101 的支持 新增 屏蔽版本升级弹窗 重构 回复消息不带@ 修复 消息多选撤回在 9.2.80 失效 修复 跳过扫码登录等待 修复 模块重启功能在 9.2.78 版本失效 优化 移除转发选择数量限制支持新版转发 新增 禁用聊天右侧抽屉 优化 隐藏更多空间广告 修复 移除关键词广告在 9.2.80 失效 修复 模块入口在 9.1.60 消失 新增 新的防撤回实现 优化 重新加入域名作为备用模块设置入口 新增 上传透明头像 修复 移除消息表情回应在 9.1.70 版本以下失效 @lsposed_Modules_Updates_Trackers | @lsposed_Geeks_Bot

Hashtags

Lsposed Modules Updates Tracker

@lsposed_Modules_Updates_Trackers · Post #6337 · 27.03.2026 г., 11:00

#TCQT#owo233 模块:com.owo233.tcqt 简介:TCQT 版本:428-v3.6.3-428-c9ad9de 更新时间:2026/03/27 18:27:00 更新日志: 壮举 新的模块设置页面(Compose) 新增 修改小程序分享行为 新增 修改预览字体大小 新增 自动领取达人补登卡 修复 闪照视为正常图片在 9.2.0 失效 修复 模块功能计数 修复 重命名 .apk 文件 修复 禁用泡泡图标 NPE 其他 增加 JS桥 白名单 其他 从附加工具中移除历史冻结记录 构建频道:TCQT CI 反馈群组:TCQT Group @lsposed_Modules_Updates_Trackers | @lsposed_Geeks_Bot

Hashtags

Lsposed Modules Updates Tracker

@lsposed_Modules_Updates_Trackers · Post #6136 · 07.03.2026 г., 16:00

#TCQT#owo233 模块:com.owo233.tcqt 简介:TCQT 版本:400-v3.6.2-400-2b8abeb 更新时间:2026/03/07 23:50:58 更新日志: 新增 篡改图片显示大小 新增 禁用X5内核 新增 允许查看异常资料卡 新增 去你大爷的QQ浏览器 新增 艾特变色龙 新增 移除收藏预览限制 修复 宿主处于深色模式时 Dialog 异常 修复 禁用泡泡图标在 9.2.65 版本失效 修复 获取宿主夜间模式状态 修复 未登录状态下 屏蔽烦人弹窗 NPE 修复 模块结束宿主进程导致 NPE 修复 重命名 .apk 文件在 9.2.70版本失效 重构 显示消息Seq与时间 重构 模块设置UI 其他 不再使用透明图标 其他 迁移到AGP 9.0 其他 支 @lsposed_Modules_Updates_Trackers | @lsposed_Geeks_Bot

Hashtags