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 подобни публикации

Търсене: #starkex

当前筛选 #starkex清除筛选

🔦 Block Daily Dance (5月17日): We are Information Aggregator of BlockChain & Web3.0, running by DAO. 我们是由社区驱动的区块链 & Web3 信息聚合平台。 ✈️Telegram Channel:https://t.me/blockdancenews 📒Notion:https://bit.ly/3LopaUj 🛰 Layer 1 / L2 / 跨鏈: 关于 $ICP的一点浅见 https://twitter.com/BTCdayu/status/1526455520571207680 什么是 #StarkEx#StarkNet 为什么会有 Layer3 https://twitter.com/StarkNet_ZH/status/1526499729588092930 🏙 DAO : SeedClub - 顶级Web3加速器的前世今生 https://chao.mirror.xyz/Y_myw2Pbq-nI7YG0GCNteYeW-zTFz5ilFmC7-bH88qo 🎙 播客/AMA/Talks/活动: https://bit.ly/3HuwSJQ 🔍 链上数据/行情分析: BTC Daily Report - 2022/05/16 https://0xbi.mirror.xyz/R957Onz_a7sR22LSKdDm12CoPKPzwQqx3QGRp5JFlfo ETH凌晨出现交易所大幅度减持 资金逐渐平稳 BTC抛压降低 — 2022.5.17 https://medium.com/@phyrex.ni/eth%E5%87%8C%E6%99%A8%E5%87%BA%E7%8E%B0%E4%BA%A4%E6%98%93%E6%89%80%E5%A4%A7%E5%B9%85%E5%BA%A6%E5%87%8F%E6%8C%81-%E8%B5%84%E9%87%91%E9%80%90%E6%B8%90%E5%B9%B3%E7%A8%B3-btc%E6%8A%9B%E5%8E%8B%E9%99%8D%E4%BD%8E-2022-5-17-f9cb266de4ad 👔 招聘: WEB3求职指南:在哪里发现最全面的招聘信息? https://twitter.com/TechFlowPost/status/1526403587512729601 🧰 综合: Arbitrum Odyssey 计划攻略 https://candydao.notion.site/Arbitrum-Odyssey-17634b06aa084a3a8407d212927e5f16 正反馈的诱惑|预言家周报#171 https://orangexyz.mirror.xyz/Xg6UNuyd2WC-ysnpk1jnXKzkY2rE2HuJd3JTiJKoDD4 Vitalik 谈以太坊发展及去中心化未来待解的十大矛盾 https://foresightnews.pro/article/detail/4134 SBF:UST 很糟糕,但不是区块链版「恶血」 https://foresightnews.pro/article/detail/4131 https://t.me/blockdancenews