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

Търсене: #nhs24

当前筛选 #nhs24清除筛选
郭子健Daniel Kwok Tsz Kin

@tsingyidan · Post #1045 · 03.03.2024 г., 19:20

【喺愛丁堡,有事可以搵邊個?】 除了接觸港人團體,我地整理咗適用喺蘇格蘭(包括 #Edinburgh 、#Glasgow 及 #Aberdeen )可尋求協助的機構資料,供大家參考。當然歡迎大家隨時 inbox/DM 同我哋聯絡! 1 Emergency 危急情況 Edinburgh Crisis Centre https://edinburghcrisiscentre.org.uk/ Hotline: 0808 801 0414 (24/7) Text: 0797 442 9075 (24/7) Email: [email protected] 專門為遭遇危機的人提供心理健康支持和指導的機構,提供一對一支援,以及臨時借宿支援。 — 人身安全受到威脅嘅時候,唔好諗咁多,打三條九報警啦! 如遇危險未能講話,可於出現提示後,按"55"。 亦可輕按電話或發出聲音,讓接線員知道你需要幫助。 如果你處於精神健康危機中並需要立即支持, 可以致電你的 #全科醫生 (GP),如果醫生已經休息,請電111致電 #NHS24 。 — 1 VICTIM SUPPORT 受害者支援 Victim Support Scotland https://victimsupport.scot/ Hotline: 0800 160 1985 (Mon-Fri 8am-8pm) General crime, domestic violence, emergency assistance fund 一般犯罪、家暴、緊急支援熱線 Scotland’s Domestic Abuse & Forced Marriage Helpline 蘇格蘭家暴支援 https://www.sdafmh.org.uk/en/ https://www.sdafmh.org.uk/en/chinese/ Hotline: 0800 027 1234 (24/7) Email: [email protected] Rape Crisis Scotland - 性暴力危機支援 https://www.rapecrisisscotland.org.uk/ https://www.rapecrisisscotland.org.uk/language-mandarin-chinese/ Hotline: 08088 01 03 02 (Everyday 5pm-midnight) Email: [email protected] Edinburgh Women’s Aid 愛丁堡女士支援 https://www.edinwomensaid.co.uk/ Hotline: 0131 315 8110 / 0800 027 1234 Email: [email protected] 為女士及兒童提供服務,包括庇護住宿及後續支援 Services for women and children, including refuge accommodation and follow-on support Men’s Advice Line 男士專線 https://mensadviceline.org.uk/ Hotline: 0808 8010 327 (Mon–Fri 10am-5pm) Email: [email protected] 專為家庭暴力當中男性受害人而設 Police Scotland – Reporting hate crime 報告仇恨罪行 https://www.scotland.police.uk/contact-us/reporting-hate-crime/ 全文在Facebook https://www.facebook.com/share/p/7GuUjFyYofeHbnBQ/