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

Резултати

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

Търсене: #linear

当前筛选 #linear清除筛选

Linear 是个游戏设计管理工具 最近和朋友聊到,如今很必要将行动项和学习计划尽可能独立且并行,让其在未来某个时间点交汇,而非延迟处理。恰逢今天在完善 Linear 中的项目管理和规划,再次感叹 Linear 是伟大的项目管理软件,也是极其优秀的游戏设计管理工具。 Linear 主要突出线性和无压,但其 Mark as/ Create related 有着非常优秀的层级和关联功能,非线性功能。它适合人生管理,或者说游戏设计。如果说 Roam Research 这类双链笔记工具适用于文本项目的非线性处理,那 Linear 完全契合具有时间和空间属性的艺术作品项目。 你想为人生某个阶段设计和规划点什么,你想在某个行动项时间线上插入新的什么,你想将哪两条重要人生时间线拉起并行,比如创造一个产品的同时学习未来相关 AI 开发知识。Linear 可以是最优粒度的项目管理工具,同小粒度时间管理的烧水做饭时切菜前置一样,它是关于时间配置的哲学。 同样,如果你想设计艾尔登法环似的非线性开放世界游戏,你想设计某个 NPC 时间线搭上另一个 NPC 的剧情交互,你想设计某个剧情进展到特定阶段后,才触发与另一个 NPC 的交叉故事匣,亦或是设计「黑暗之魂一」式的箱庭地图,关联「门的这一侧打开」,条条大路通传火祭祀场。Linear 里,你可以关联更多时间进展后、空间交互中的项目设计,它是关于时空配置的哲学。 Linear 是伟大的时间线工具、设计工具、以及伟大的迭代管理工具。 它敏捷、流动,它在非线性文本工具中加入了时空属性,即复杂项目管理。当然,在笔记软件里,也可以解决文本故事线问题,比如艾尔登法环游戏制作之前有个完整成型的小说。 但当你真正投入去开发游戏,做具有周期性、持续迭代、以及具有空间交叉属性的艺术作品时,你真正需要的是线性和非线性化管理,同步和异步时间配置,剧情和地图空间关联,你需要复杂立体的项目呈现。Linear 由此诞出。 相关链接 1 自带工具哲学的顶级软件 #tft#linear

Hashtags

DWF Labs Broadcast

@DWFLabs · Post #456 · 20.11.2023 г., 16:02

🎙️We're excited to join Linear Finance on Nov 24 at 11:00 UTC for this episode of Linear Explorers 'Recipe for a Bull Run?' 🚀 Set your ⏰️ for this conversation this Fri ⚡️ Happening here. $LINA #Linear#BNBChain

Venture Village Wall 🦄

@venturevillagewall · Post #3383 · 18.12.2024 г., 12:09

TVision Secures $1.5M Funding TVision has raised $1.5M in funding as of December 16, 2024. The company utilizes advanced computer-vision technology to analyze viewer engagement for both Linear and CTV, offering person-level insights into viewing habits. #Funding#TVision#Technology#ViewerEngagement#CTV#Linear#Insights#ComputerVision#Analytics#Viewership#Audience#Engagement#Media#Streaming#Data#Research#Investment