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

Търсене: #che

当前筛选 #che清除筛选
Savino Balzano

@savinobalzano · Post #936 · 17.03.2025 г., 10:06

https://x.com/SavinoBalzano/status/1901575776895463908?t=LPK8gKwEasKGDGdOIsRWJQ&s=19 E come #Enrico E come #Elly Quella di #Berlinguer è una delle figure più meschinamente strumentalizzate dalla #sinistrucola nel Paese. Mai fatto santini in vita mia: Berlinguer ha certamente commesso i suoi errori. Ricordo quello scontro memorabile tra lui e #Bobbio. Il primo, secondo alcuni frainteso (ad esempio secondo @lucatelese), immaginava l'austerità come forma di lotta di classe. Uno strumento attraverso il quale redistribuire ricchezza. Il secondo che gli ricordava come l'austerità non fosse una scelta per il poveraccio, ma una condizione di vita ineludibile. Però Berlinguer resta Berlinguer: un gigante rispetto ai figuri che popolano (o infestano) il campo santo della sinistrucola. Che memoria tradita quella di Enrico, da eredi che avrebbe senz'altro diseredato: è diventato come il #Che, un personaggio per fare le magliette. E allora stampano il suo sguardo sulle tessere di un Partito che Berlinguer avrebbe combattuto con tutte le sue forze (che assordante il silenzio della sua famiglia!), registi improvvisati ne girano film su film. Ecco, sembrerà un po' forte, ma Enrico è diventato un po' come Benito, per certi aspetti: un personaggio per far marketing e soldi a palate. Sta roba io l'ho vissuta e rivissuta da ragazzino. L'ho raccontato molte volte, sono di Cerignola, la città di #GiuseppeDiVittorio: in occasione di ogni santa campagna elettorale per le amministrative, dal palco dinanzi alla villa comunale, personaggetti picoli piccoli facevano a chi urlava più forte il suo nome per strappare qualche voto in più: «peppino! peppino! peppino nostro!». E si percuotevano il petto. In un vecchio scantinato era accatastato a pezzi uno storico murale che rappresentava il Sindacalista (con la S maiuscola, oggi spesso inutilizzabile). Ogni volta che si votava, i sinistrucoli cerignolani si sbracciavano istericamente: «lo riporteremo alla luce! lo restituiremo alla città! tornerà al suo antico splendore!». Non hanno mai fatto niente. Alla fine venne riesumato, riassemblato, restituito alla cittadinanza da un ottimo Sindaco ex missino. Questi sono gli eredi di Berlinguer e di #DiVittorio oggi in Italia: affaristi, affabulatori, ciarlatani senza arte né parte. Gente alla quale, mi ci giocherei un braccio, Enrico e Peppino non avrebbero mai rivolto nemmeno un cenno di saluto.