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

Резултати

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

Търсене: #knot

当前筛选 #knot清除筛选
独立人指南

@Dulirenorg · Post #183 · 06.06.2019 г., 06:07

#knot#结绳术🧶 你能从 AnimatedKnots 这个网站学习到涉及了家庭日用、畜牧、登山、探险、航海、垂钓、伐木、救援,甚至手术操作领域内近200多种打绳结的方法,每种绳结都配有文字说明(英文)及分步图和视频(Youtube) 原址:https://animatedknots.com

Stargaze Broadcast

@StargazeBroadcast · Post #13905 · 18.05.2023 г., 16:37

Source: https://www.newgrounds.com/portal/view/776967 Artist: #dragonweirdo Characters: #claude_floraverse#mellie_floraverse Tags: #sound#animated#stealth_sex#public_sex#public_transportation#cum_inflation#caught#exhibitionism#female_penetrated#knot#size_difference#larger_male#smaller_female

独立人指南

@Dulirenorg · Post #469 · 06.08.2019 г., 07:16

📌 🏷 標籤索引: ➫ 基础生存 #foods#cooking#household#shelter#prepper#耕作 ➫ 生存环境 #灾变#避难#防盗#环境问题#隐世指南 ➫ 平民技术 #DIY#fire#取火术#结绳术#knot#tools#gis#制图术#原材料#能源 ➫ 信息获取 #booklist#film#致呼吸不畅的数字生活 ➫ 群居动物 #共识社区 📄 近期帖文: 〔译〕「逃荒」的四个理由 〔译〕LoTEK 〔译〕收获 〔译〕荒野生存 〔译〕铁: 从神秘到祛魅 〔译〕远洋航行 〔译〕一份调查:我们对抗传染病的武器 && Draining the swamp 🔝从头看起 📚书单 👉频道宗旨 ✏️反馈 & 投稿 📅 最後更新:二〇二​壹年六月廿三日