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

Резултати

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

Търсене: #dowww

当前筛选 #dowww清除筛选
📓 Real Spencer Woo

@realSpencerWoo · Post #161 · 04.05.2020 г., 13:38

#WSL#dowww#Windows#Netlify 🎮 Dev on Windows with WSL 在 Netlify 上部署的版本出了个非常拉跨的 bug:直接访问内页或者进入某一页之后再刷新,都会会导致当前侧边栏无法点击,没法导航。大家可以来围观一下我在 Netlify Community 上发的 issue:VuePress deployment on Netlify succeeds, but experience errors when reloading specific pages。 然鹅 Vercel(也就是之前的 ZEIT)就没有这个问题(咱也不知道为啥…),可能考虑最近迁移过去,大家来看看这两个 URL 哪个访问更快一些: * Vercel 版本:https://dowww.now.sh * Netlify 版本:https://dowww.netlify.app PS:这两个链接都是原始链接,没有套我域名的 Cloudflare CDN。

📓 Real Spencer Woo

@realSpencerWoo · Post #60 · 07.01.2020 г., 13:56

#GitHub#Windows#WSL#更新#dowww 🎉🎉🎉 历经快半个月的时间,我终于将 Dev on Windows with WSL 重构完成!Dev on Windows with WSL 迎来了 v1.0.0 的里程碑!本次文档重大更新,所有内容几乎全新开始。感谢大家的关注和期待 (✿◡‿◡) Dev on Windows with WSL 新版入口 | GitHub 仓库 🍗 本次重点更新在于对 WSL 2 进行详细介绍,以及对 VS Code 利用 Remote 远程开发组件包连接 WSL 环境的配置方法的详细讲解。除此之外,文档还增加了 WSL 与 WSL 2 的架构对比、WSL 与 WSL 2 的详细安装方法、VS Code 利用 WSL 环境开发各种语言项目的配置方法…… 🥟 同时,文档主网站 VuePress 版本更新到 ^1.0,引入了更细腻的 smooth-scroll、Medium 风格的图片预览,重新设计了强调色和侧边栏样式,还嵌入了 Algolia 文档搜索服务。另外,在 VuePress 默认主题的基础之上,还增加了版本归档、版本切换的功能。 💗 一年多之前,更确切的来说,2018 年的国庆期间,Dev on Windows with WSL 仅仅是我一个个人的项目,而且仅仅是一篇文章。到今天,我和几位 Contributors 已经撰写了超过 5 个部分的 18 章内容,获得了 360+ Stars,解决了 20 余个问题,合并了 10 余个 PR。感谢大家的关注,鞠躬。 🌟 本条消息欢迎大家奔走相告,让更多的同学了解如何在 Windows 上用 WSL 优雅开发。欢迎大家去 GitHub 上面 Star 项目,你的支持是我更新的最大动力~笔芯 (´▽`ʃ♡ƪ) 📮 Via channel: @realSpencerWoo