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

Резултати

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

Търсене: #hexenzirkel

当前筛选 #hexenzirkel清除筛选
Genshin Null

@GenshinNull · Post #5821 · 06.04.2024 г., 23:37

(1/2) @GenshinNull#FouL#Hexenzirkel 4.6 版本游戏优化 Pt.3 任务系统新增专注体验模式 版本更新后, 部分魔神任务与传说任务将支持开启专注体验模式, 一定程度上缓解被其他任务占用场景或角色的问题. 以下提示文本取自 v5 客户端. { "2846163768": "<color=#D3BC8E>【功能说明】</color>\\n·为任务开启专注模式以确保该任务的流程更加顺畅,该任务所使用的场景、角色等在体验流程中不被其他任务所干扰。\\n·在少数情况下,开启任务专注模式后,无法解除部分任务的场景或角色占用冲突,仍然需要优先完成发生冲突的任务。\\n\\n<color=#D3BC8E>【提示】</color>\\n为某一任务开启任务专注模式后,一些与该任务所使用的场景、角色等有冲突的任务将会受到如下影响:\\n·邀约事件当前的进度将被放弃。完成开启了任务专注模式的任务或关闭任务专注模式后,重新接取以继续进行;\\n·其余任务进度将暂时暂停。", "122504137": "任务暂停,专注体验模式已关闭", "778263839": "角色被其他任务占用,完成对应任务或开启专注体验模式以继续", "633352972": "场景被其他任务占用,完成对应任务或开启专注体验模式以继续", "2907201181": "该任务不允许开启专注体验模式", "3106822492": "开启专注体验模式以更好地体验当前任务。开启后,下列任务将受到影响:" }

Genshin Null

@GenshinNull · Post #5762 · 12.03.2024 г., 13:26

[4.6 beta] 深境螺旋 - 十二层一览 上半: 12-1: 三剑鬼 12-2: 深海龙蜥冰, 深海龙蜥雷. 12-3: 藏镜侍女, 冰深渊使徒, 冰深渊法师, 冰愚人众(冰胖). 下半: 12-1: 藏镜侍女, 霜役人, 风役人, 雷海乱鬼, 火海乱鬼, 愚人众火枪手. 12-2: 债务处理人, 雷深渊咏者, 镀金旅团: 岩役使, 镀金旅团: 冰双刀. 12-3: 深罪浸礼者 渊月祝福 第一期 对敌人触发蒸发, 超载, 融化, 燃烧, 烈绽放, 火扩散, 火结晶, 敌人所有抗性包括物理抗性降低 30%. (1/2) @GenshinNull#Hexenzirkel#Foul

Genshin Null

@GenshinNull · Post #5740 · 16.02.2024 г., 06:05

(1/2/3/4/5) @GenshinNull#dim#Hexenzirkel#null 原神的国际服 beta 预下载方式有更改, 之前是下载 hdiff.zip 文件, 现在变成了创建 "chunk" 文件夹之后下载分块文件, 本次更新下载了接近 4k 个文件.[1] 原神的测试服正在测试一种新的游戏数据文件分发方式, 该方式会在一定程度上减少玩家需要下载的数据量, 比如在版本更新时. 考虑到这个变动的幅度很大, 不确定哪些游戏会使用到这种分发方式, 也不知道什么时候会正式上线. 可惜我只通过这种方式更新过一次游戏, 所以我没有足够的样本来说明这种方式产生的差异有多大. 据我所知(因为我不认识 Android 平台的测试人员), 到目前为止该方式仅适用于 PC 客户端或启动器. 这应该会降低文件解压所需的设备要求. 但我认为, 如果真正得到合理的应用, 这应该是个很大的变化. 我希望这条动态解释的足够清晰不会引起误解, 因为对我来说这总体上是个很好的新变化. 这对于数据流量有限和设备磁盘空间不足的人很有帮助, 因为目前的分发方式下解压这些更新补丁需要大量的磁盘空间. 新方式的实施并不会让游戏客户端总体的体积有所减小, 它是用来解决补丁压缩包下载后实际需要两倍于补丁文件大小的空间用于解压数据的问题(补丁修补游戏后补丁压缩包会被删除, 但储存补丁需要一些额外的磁盘空间).

Genshin Null

@GenshinNull · Post #5822 · 06.04.2024 г., 23:37

(1/2/3/4) @GenshinNull#Hexenzirkel#Nightmare#TeamMew 4.6 版本游戏优化 Pt.4 寻宝罗盘功能增强 使用寻宝罗盘之后, 宝箱的位置会在游戏左上角小地图以及展开后的大地图中显示(图一). 宝箱图标将同时给出宝箱所处的高度信息, 提示宝箱是否在地下或水下. 该功能更新后, 寻宝罗盘原先用于指引宝箱相对位置的短时间闪光动画(图二)将被移除.