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

Резултати

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

Търсене: #noman

当前筛选 #noman清除筛选
安卓手游分享(实测)

@android_game_share · Post #134 · 15.09.2025 г., 14:01

【游戏名称】:行尸走肉:无人之地(The Walking Dead: No Man's Land) 【游戏简介】:《行尸走肉:无人之地》是德国发行的steam移植末世题材回合制策略角色扮演手游,玩家将置身于活死人横行的残酷世界,肩负带领生存者度过危机、管理资源并做出命运抉择的使命。游戏可召集包含瑞克、米琼恩、戴瑞等影集经典角色的终极队伍,训练升级以对抗大批丧尸,重温《阴尸路》惊险桥段;支持加入公会与好友组队参与公会战,对抗全球玩家;还能探索季节、剧情、哨站等多种游戏模式,收集独占资源与强力武器,在山顶寨、亚歴山卓安全社等经典场景中,凭借战术决策与战略行动应对独特敌人挑战,确保生存者存活。 【游戏语言】:中文 【游戏地区】:德国 【游戏版本】:v6.30.0.4834 【游戏大小】:1.04GB 【测试设备】:Android12 【特别说明】:免谷歌❗️ 【下载链接】: 百度网盘:https://pan.baidu.com/s/1WbkDKhUUjV4HO7wuEI6m-g?pwd=bmi8 夸克网盘:https://pan.quark.cn/s/54352fea14fd 🏷:#行尸走肉#无人之地#TheWalkingDead#NoMan'sLand #steam移植手游