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

Резултати

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

Търсене: #russian

当前筛选 #russian清除筛选

Есть вещи, ради которых стоит жить, а есть люди, которых следует забыть. И чем раньше ты это сделаешь, тем быстрее вспомнишь ради чего ты живешь. С добрым утром ❤️ چیزهایی هستند که ارزش زندگی کردن را دارند و افرادی هستند که باید فراموش شوند. و هر چه زودتر این کار را بکنید ، زودتر به یاد خواهید آورد که برای چه چیزی زندگی می کنید. #Russian travel # @pashak2093

Hashtags

Иранский музыкальный инструмент " неи анбан"( Bagpipes). Играет под названием " БАНДАРИ" Этот инструмент появился в " БАБОЛСКИЙ ВРЕМЕНА, 2000 лет до наши эри " в Персидский империи. #Russian travel #Иран&Россия #Иран #музыка# ایران# Russian travel @pashak2093

Что бы оказаться в настоящем Зазеркалье, не надо попадать в сказку. Достаточно посетить Шах-черах - "Зеркальную мечеть" в иранском городе Шираз. Построено это чудо было в XIV веке. Шах-черах - усыпальница Ахмеда и Мухаммеда (братьев восьмого имама шиитов). Снаружи она выглядит как обычная мечеть: с детализированными изразцами, окаймленными золотом минаретами и голубым куполом. Но изнутри Шах-Черах от пола до потолка отделана миллионами сверкающих зеркал. Представьте, что вы оказались внутри самого роскошного в мире калейдоскопа - и поймете, что ощущает человек, оказавшись внутри мечети. Ощущение непередаваемое. Никакая камера, никакие мои слова не передают красоту (во всех смыслах) и изящество этого чуда. Это надо видеть, это надо почувствовать. دید از یک افسانه برای اینکه خود را در یک Through the Looking Glass واقعی بیابید، لازم نیست در نهایت در یک افسانه قرار بگیرید. برای بازدید کافی است شاه چراغ - «مسجد آیینه» در شهر شیراز. این معجزه در قرن چهاردهم ساخته شده است. شاه چراغ آرامگاه احمد و محمد (برادران امام هشتم شیعیان) است. از بیرون شبیه یک مسجد معمولی است، با کاشی‌های دقیق، مناره‌هایی با لبه‌های طلا و گنبدی آبی. اما از داخل، شاهچراخ از کف تا سقف با میلیون ها آینه درخشان تزئین شده است. تصور کنید که خود را در مجلل ترین کالیدوسکوپ جهان می بینید - و متوجه خواهید شد که وقتی یک فرد در داخل مسجد است چه احساسی دارد. حسی که قابل وصف نیست هیچ دوربین و هیچ کلمه ای از من نمی تواند زیبایی (به تمام معنا) و لطف این معجزه را منتقل کند. این را باید دید، این را باید حس کرد #Russian travel #Иран&Россия #Иран #Шираз# ایران، شیراز @pashak2093

🙌🇷🇺🙌День Победы — это символ несгибаемого духа и величия народа! ⭐️Это день памяти о героизме миллионов, кто плечом к плечу сражался за свободу и мир — от Балтики до Тянь-Шаня, от Кавказа до Сибири. ⭐️Друзья, поздравляю вас с этим великим праздником — праздником силы, стойкости и бесконечной благодарности поколению победителей! #Russian travel #Иран&Россия #Россия #ПОБЕДА# روسیه، روز پیروزی بر فاشیسم @pashak2093

123•••910
ПредишнаСтр. 1 от 10Следваща