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

Търсене: #nnsdao

当前筛选 #nnsdao清除筛选

🎙️Block Dance 8月24日AMA更新中🎙️ ⛳️【Twitter Space】⛳️ 「How should Web2.0 Brands enter Web3.0 in a turbulent market ?」 ⏰ 12:00AM 🔗https://twitter.com/68nft/status/1560577339968598017 👤Host:Bold Bunny NFT 💫Type: Web3 「结合链上链下数据分析行情何时筑底」 ⏰ 8:00 PM 🔗https://twitter.com/FTX_Chinese/status/1561984643649478660 👤Host:FTX 中文 💫Type: 综合 「Web3 需要 KYC 吗?」 ⏰ 8:00 PM 🔗https://twitter.com/metaestate_com/status/1561903039271010304 👤Host:MetaEstate 💫Type: Web3 「#NnsDAO 中文社区 & AvatarDAO :IC生态的 #BUIDL 都在做什么!」 ⏰ 8:00 PM 🔗https://twitter.com/NnsDAOZH/status/1561740664672555012 👤Host:NnsDAO 💫Type: L1/L2/crosschain 「Web3现状和趋势」 ⏰ 8:00 PM 🔗https://twitter.com/BiteyeCN/status/1561549255000465408 👤Host:Biteye 💫Type: Web3 「Will fractional NFT be the future? Come to learn more about @NibblNFT 's bonding curve!」 ⏰ 10:00 PM 🔗https://twitter.com/doobroCN/status/1561802367351173120 👤Host:Doodles China 💫Type: Web3/NFT ————————————— ⛳️【Telegram】⛳️ 「Token Pocket AMA with Mones NFT」 ⏰ 6:00 PM 🔗https://twitter.com/TPTDAO/status/1561697918968807424 👤Host:Token Pocket 💫Type: NFT 「Crypto Verse AMA with NEAR Protocol」 ⏰ 10:00 PM 🔗https://twitter.com/CryptoVerse_Co/status/1561775931886227457 👤Host:Crypto Verse 💫Type: L1/L2/crosschain ————————————- 👉点击订阅谷歌日历: https://calendar.google.com/calendar/u/1/r?cid=YmxvY2tkYW5jZTAxQGdtYWlsLmNvbQ 👉关注我们的Twitter:https://twitter.com/BlockDanceCN