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

Търсене: #imo5007819

当前筛选 #imo5007819清除筛选

🚢Суда прошлого - малый танкер дедвейтом 2970 тонн - "Liselotte Essberger". Под именем Liselotte Essberger в регистрах проходит танкер послевоенной постройки (постройка 1951), зафиксированный на снимках середины XX века: известны, в частности, фото 1955 и 1961 г, где судно уже эксплуатируется как танкер. По данным реестров, судно меняло владельцев, флаги и имена: Liselotte Essberger (с 1962 г), затем "Alalunga" (с 1973 г), а в финальном периоде - "Tergeste". Судно построено в Гамбурге на верфи H. C. Stülcken & Sohn в 1951 году; в записях Lloyd’s Register оно проходит как моторный танкер, с отметкой о прежнем имени "Liselotte Essberger" и последующем переименовании в "Alalunga". Интересный штрих «человеческой» истории дают воспоминания моряков: в обсуждениях встречается свидетельство, что в 1964 году судно работало в прибрежном сообщении уже после смены имени (упоминается эксплуатация как "Caroline M", с указанием, что прежнее имя было "Liselotte Essberger"). Это не реестровый документ, но показательный маркер того, как типичные для того времени «малые» танкеры переходили между нишами и операторами. Финал у этого корпуса был жёстким и типичным для эпохи интенсивной прибрежной работы: в базе Wrecksite судно под именем "Tergeste" (период службы указан как 1951–1977) отмечено как погибшее вследствие посадки на мель. Для небольших судов того поколения риск навигационных происшествий у берега был системным — маршруты короткие, погодное окно узкое, а плотность движения в европейских водах высокая. 📌 Само имя Liselotte Essberger — часть семейной и корпоративной традиции группы Deutsche Afrika-Linien / John T. Essberger: компания основана в 1924 году, а после смерти основателя Джона Теодора Эссбергера (1959) управление перешло к его дочери Лизелотте фон Ранцау-Эссбергер. Сейчас группа остаётся в собственности/управлении семьи Эссбергер - фон Рантцау (Essberger/von Rantzau). #LISELOTTEESSBERGER#IMO5007819#tankerhistory#maritimeheritage#Essberger