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

Резултати

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

Търсене: #savona

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

@savinobalzano · Post #838 · 11.12.2024 г., 07:35

https://x.com/SavinoBalzano/status/1866748508776124709?t=AxEMeyAirpzFBAs7d3J_wg&s=19 Qualche giorno fa, #MarioMonti paragonava l'attuale stallo istituzionale Francese all'#Italia del 2011. A suo dire, dalle parti di #Parigi servirebbero "riforme" importanti, soprattutto per mettere i conti in ordine, e il ritardo accumulato è ormai divenuto insostenibile. Che ve lo dico a fare. La causa di questo immobilismo, secondo #Monti? Stupenda questa: è il "premierato francese". Si, insomma, secondo Mario la differenza tra #Macron e #Napolitano consisterebbe in questo: il primo, a causa del presidenzialismo, gioca un ruolo meramente di parte; il secondo, invece, in considerazione dell'attuale equilibrio tra i poteri in Italia, riuscì ad esercitare un ruolo imparziale, responsabile e di alto profilo. Per Monti, quello di Napolitano fu semplice "arbitraggio": lui non era di parte. E immagino non fosse di parte anche #Mattarella sulla questione #Savona, per carità! Nessuno pensi che da tempo il #Quirinale sia al servizio del pilota automatico, del vincolo esterno! No no, quello si chiama "alto profilo". E neppure gioca un ruolo il fatto che in Francia la maggioranza tra i partiti, ad oggi, non sosterrebbe mai un Monti francese? Gli stessi che infatti sono descritti come reazionari e pericolosissimi per la #democrazia. Che andate a pensare! Vogliamo parlare del sindacato Francese? Paragonarlo alla postura assunta dai nostri in relazione all'operato del peggior Ministro del Lavoro nella storia repubblicana (Elsa #Fornero: lo preciso per il #PD che la votrebbe senatrice a vita) fa letteralmente arrossire. Secondo Monti, in Francia l'#austerità non si può ancora realizzare perché il loro assetto istituzionale è simile al premierato che vorrebbe la maggioranza da queste parti. Insomma, quasi a dire che non si possa realizzare per colpa del Governo italiano, che tanto sempre là si finisce. Magari fosse così! Magari bastasse così poco. La verità è molto più complessa e risiede nel cuore democratico del Paese: il nostro era ammalato, ficcato da anni e anni di propaganda internazionale e nazionale, da un esercito di antitaliani che marciava dentro e fuori dei confini nazionali. Alla fine molti, non tutti, accettarono quel tradimento. In Francia ancora non è possibile e ne vedremo delle belle.

Savino Balzano

@savinobalzano · Post #809 · 13.11.2024 г., 18:07

https://x.com/SavinoBalzano/status/1856760733394244011?t=jAwIKJ3XNppVhm60CC61HQ&s=19 #Mattarella è sceso in campo in difesa della #Costituzione e della #sovranità nazionale. Ammazza, ci piace questa nuova veste del #Quirinale: pare proprio che l'inquilino si sia svegliato sovranista. #ElonMusk non deve osare un attacco alla #Magistratura: se attacca, il nostro fiero #PresidenteDellaRepubblica risponde. Eh, però, però, però... qualcosina la dobbiamo ricordare. Era lo stesso #SergioMattarella a mettere il veto su #Savona perché destabilizzava i mercati? Il nascente #governo gialloverde lo voleva come Ministro dell'Economia e non se ne fece nulla: le posizioni euroscettiche di #PaoloSavona erano quasi eversive. Allora il nazionalismo del #Colle era più un sovranazionalismo. Non vi pare? E pure il suo predecessore, ve lo ricordate? #Napolitano, quello che disarcionò #Berlusconi per trascinare a Palazzo Chigi #Monti (che intanto aveva nominato Senatore a vita) perché realizzasse il programma della #BCE e dell'#UE: liberalizzare i licenziamenti, indebolire la contrattazione collettiva, tagliare gli stipendi pubblici, tagliare le pensioni, lo Stato sociale e così via. Realizzasse, insomma, il sogno di #Draghi, il pilota automatico #WhateverItTakes. Le cose erano diverse, dirà qualcuno: oggi abbiamo la nuova emergenza, il nuovo pericolo pubblico numero 1, il magnate che mette a rischio la #democrazia (che poi cosa c'entri il pilota automatico con la democrazia ancora non lo abbiamo capito). Anche qui, però, davvero faccio fatica: perché tanta tolleranza nei confronti di #BillGates, nei confronti dei grandi fondi di investimento, delle agenzie di rating, e invece a #Musk gli dobbiamo fare pelo e contropelo? Sapete cosa? sticavoli: tanto si sa che di Mattarella ci possiamo fidare...