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

Търсене: #registerofdamage

当前筛选 #registerofdamage清除筛选

@RusEmbMalta Press release 🛑The “Register of Damage” and the So-Called Claims Commission: A Dangerous Legal Mirage The Russian Federation expresses serious concern over the ongoing attempts to promote the so-called “Register of Damage” and the related International Claims Commission for Ukraine (ICC) – initiatives that openly contradict international law and threaten to undermine the very foundations of the global legal order. 📌 As the Russian Foreign Ministry has repeatedly stressed, these structures are not genuine legal mechanisms, but politically motivated constructs designed to fabricate financial claims against Russia and to create informational justification for the illegal seizure of sovereign Russian assets. ⚖️Pseudolegal Tools Disguised as Justice According to the official statement of the Russian Foreign Ministry (26 September 2025), the proposed Claims Commission – currently being pushed through the Council of Europe – is intended to: • legitimize politically motivated accusations, • artificially calculate “compensation,” • and provide cover for the confiscation of Russian assets frozen in the West. Such actions constitute gross violations of international law and amount to nothing less than state-sponsored expropriation. 💰A Risky Scheme for Those Who Join The European Commission’s attempts to dress these actions up as a “reparations mechanism” have already alarmed a number of EU member states. Even senior European officials have openly warned that these plans expose participating countries to massive legal, financial and reputational risks. The danger is obvious: any state that associates itself with these mechanisms becomes a direct party to a hostile act and assumes serious exposure to future legal and economic consequences. 🌍An Appeal to Responsible States We call on all responsible members of the international community – not to allow themselves to be drawn into this politically charged and legally void project. This campaign is not about justice. It is about expanding geopolitical pressure, prolonging the conflict, and sabotaging any genuine diplomatic settlement. Those who value international law must not lend legitimacy to instruments that openly violate it. ________ ✋ The Russian Federation firmly urges governments to refrain from joining or endorsing the “Register of Damage” and the so-called International Claims Commission. 📍 Participation in these initiatives does not serve peace, law, or stability – it only deepens global fragmentation and legal chaos. ________ #InternationalLaw#RegisterOfDamage#ClaimsCommission#RuleOfLaw#StopTheScam