@tsw8907 · Post #67549 · 03.10.2022 г., 00:48
#ALERT 港鐵指故障已處理好,屯馬綫列車服務陸續回復正常。 (10/3/8:44)
Hashtags
TGINSIGHT SIMILAR POSTS
Изходен канал @clockstackwheels · Post #721 · 26.12
Почему я люблю языки с сильной системой типов, проверяемой статическим анализом кода — хорошо написанная программа является своей собственной спецификацией и позволяет выражать через язык программирования законы существования предметной области. Когда-то давно я писал на ActionScript. Там была система типов, но вот десериализация JSON'ов по-умолчанию была в какой-то общий Object, к полям которого нужно было обращаться ["по_строковому_имени"]. В один момент мне потребовалось написать что-то на C#, который я совсем не знал, я стал гуглить, как десериализовать JSON, и с удивлением обнаружил кучу советов заранее объявить класс со всеми нужными полями и десериализовать в него. "Какой ужас!", — подумал я тогда, — "Это же дико неудобно! А если я не знаю полей JSON? А если их много? Отвратительный язык!" Теперь то я прекрасно понимаю, что JSON это контракт, и что правильная десериализация только такая и должна быть, и что в хорошем API в одном поле никогда не бывает данных принципиально разных типов, и так далее. Нет, если вы набиваете вечерами пет-проект или сидите бессонную ночь на хакатоне, нет ничего плохого в том, чтобы взять простой язык с динамическими типами вроде JavaScript или Python, не требующий описывать данные. Но вот в энтерпрайзе, особенно когда над одним проектом работает много людей (а бывает это очень часто) — хорошее использование системы типов убережёт разработчиков от огромного количества ошибок, будет бить их по рукам, когда они пытаются сделать что-то не то, и будет подсказывать, когда они не уверены в чём-то. С помощью статической типизации можно на уровне кода обозначить правила, по которым ведёт себя предметная область вашей программы в реальном мире. Разработчику не только будет сложно их нарушить, но он ещё и станет узнавать какие-то вещи, которые мог не знать раньше. Например, если мы делаем медицинскую CRM, и больница заводит новых пациентов только тогда, когда знает их группу крови, мы можем объявить тип "Пациент" (или, если точнее, "Карта пациента") и запретить создавать экземпляры этого типа, не передав в конструктор группу крови (которая, в свою очередь, тоже является типом, вероятнее всего ValueObject'ом). Если новый программист пришёл в проект, он, во-первых, не сможет записать в БД некорректную карту пациента. Понятно, мы не учитываем случаи, когда новый программист переделывает модели предметной области — это будет хорошо видно на кодревью. А, во-вторых, даже если ему никто не сказал, что пациенты должны быть с группой крови, он узнает это из кода. И уже будет понимать, что в тех процессах реальной жизни, которые он описывает кодом, карта пациента создаётся только при наличии группы крови. А, значит, нужно искать какой-то способ сначала эту группу крови получить, и только потом создавать карту. Программирование моделирует реальный процесс. В настоящей работе даже на языках с типами, конечно, без должного контроля можно написать что угодно. Нужна управленческая воля, компетентность руководства, понимание опасности техдолга, в идеале отдельные должности для архитекторов, опытные лиды и старшие разработчики. Но когда всё это есть, можно отсекать много проблем ещё на старте и проще погружать новичков. #dev
Hashtags
Търсене: #alert
@tsw8907 · Post #67549 · 03.10.2022 г., 00:48
#ALERT 港鐵指故障已處理好,屯馬綫列車服務陸續回復正常。 (10/3/8:44)
Hashtags
@tsw8907 · Post #67443 · 22.06.2022 г., 01:46
#ALERT 教育局宣布再多三間學校因停電今日停課,停課學校數目增至十四間 (6/22/8:22)
Hashtags
@tsw8907 · Post #67019 · 01.04.2022 г., 10:33
#ALERT 本港新增5823宗新冠病毒確診個案,其中2743宗是核酸檢測確診,3080宗是快測陽性呈報 (4/1/16:34)
Hashtags
@tsw8907 · Post #66925 · 08.03.2022 г., 14:04
#ALERT 政府即日起以抽樣形式為呈報快測結果的市民做核酸覆檢,由檢測承辦商上門派鼻腔拭子樣本收集包,市民自行採樣由快遞員收回。 (3/8/21:52)
Hashtags
@tsw8907 · Post #66924 · 08.03.2022 г., 09:28
#ALERT 天水圍嘉湖山莊賞湖居第一、二、五座圍封強檢 (3/8/17:24)
Hashtags
@tsw8907 · Post #66751 · 05.02.2022 г., 10:33
#ALERT 元朗廣場多人確診,包括清潔工及保安員等,要暫時關閉。 (2/5/17:02)
Hashtags
@tsw8907 · Post #66750 · 05.02.2022 г., 10:33
#ALERT 本港增351宗確診,是兩年多疫情以來單日新高。 (2/5/16:38)
Hashtags
@tsw8907 · Post #66713 · 20.01.2022 г., 10:57
#ALERT 聖若瑟英文中學確診17歲學生感染DELTA, 與寵物店店員的病毒基因有不同, 疑為不同感染源頭。 (1/20/16:48)
Hashtags
@tsw8907 · Post #66669 · 11.01.2022 г., 10:42
#ALERT 消息:幼稚園及小學周五起停止面授課堂,中學暫不受影響 (1/11/10:08)
Hashtags
@yuenlongox · Post #64498 · 11.05.2022 г., 08:57
#ALERT 元朗火鍋店群組再多3名食客染疫 (5/11/16:42)
Hashtags
@islandwest84 · Post #40171 · 23.12.2023 г., 09:09
#ALERT 天文台下4時30分發出霜凍警告,提醒明早在高地或新界北部可能出現地面霜 (12/23/0:42)
Hashtags
@islandwest84 · Post #40139 · 08.10.2023 г., 14:16
#ALERT 機場快線停駛,過千名抵港旅客滯留機場等的士離開,至少要等三小時或以上 (10/8/7:14)
Hashtags