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

Резултати

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

Търсене: #ingressfs

当前筛选 #ingressfs清除筛选
RCNN Ticker

@RCNNticker · Post #1002 · 18.01.2020 г., 01:52

有沒有想過您的作品也有機會出現在 Ingress FS 的官方簽到媒體上? 快來參加 IFS設計比賽吧! #IngressFS 詳情請見: https://community.ingress.com/en/discussion/8051/ifs-artwork-competition-mar-may#latest

Hashtags

RCNN Ticker

@RCNNticker · Post #779 · 01.04.2019 г., 23:36

#IngressFS 04月 中文城市 · Lixia, Jinan(歷下,濟南) 活動詳情 RSVP · Jiang'an, Wuhan(江岸,武漢) 活動詳情 RSVP · Shinan, Qingdao(市南,青島) 活動詳情 RSVP · Haidian, Beijing(海淀,北京) 活動詳情 RSVP · Chaoyang, Beijing(朝陽,北京) 活動詳情 RSVP · Xinhua, Shijiazhuang(新華,石家莊) 活動詳情 RSVP · Futian, Shenzhen(福田,深圳) 活動詳情 RSVP · Nanshan, Shenzhen(南山,深圳) 活動詳情 RSVP · Nanhai, Foshan(南海,佛山) 活動詳情 RSVP · Haizhu, Guangzhou(海珠,廣州) 活動詳情 RSVP · Heping, Shenyang(和平,瀋陽) 活動詳情 RSVP · Daoli, Harbin(道裡,哈爾濱) 活動詳情 RSVP · Jinshui, Zhengzhou(金水,鄭州) 活動詳情 RSVP · Fujian, Fuzhou(福州,福建) 活動詳情 RSVP · Wuhua, Kunming(五華,昆明) 活動詳情 RSVP · Xiasha, Hangzhou(下沙,杭州) 活動詳情 RSVP · Jianye, Nanjing(建鄴,南京) 活動詳情 RSVP · Meilongzhen, Shanghai(梅隴鎮,上海) 活動詳情 RSVP · Pudong, Shanghai(浦東新區,上海) 活動詳情 RSVP · Jing'an, Shanghai(靜安,上海) 活動詳情 RSVP · Wujingzhen, Shanghai(吳涇鎮,上海) 活動詳情 RSVP 了解更多,請查看以下鏈接: https://fevgames.net/ifs-reg/

Hashtags

Ingress 中文

@IngressChinese · Post #376 · 15.05.2020 г., 23:30

有沒有想過您的作品也有機會出現在 Ingress FS 的官方簽到媒體上? 快來參加 IFS設計比賽吧! #IngressFS 詳情請見: https://community.ingress.com/en/discussion/10875/ifs-artwork-competition-july-september

Hashtags

Ingress 中文

@IngressChinese · Post #344 · 18.01.2020 г., 01:52

有沒有想過您的作品也有機會出現在 Ingress FS 的官方簽到媒體上? 快來參加 IFS設計比賽吧! #IngressFS 詳情請見: https://community.ingress.com/en/discussion/8051/ifs-artwork-competition-mar-may#latest

Hashtags

Ingress 中文

@IngressChinese · Post #371 · 27.04.2020 г., 14:10

特工們, 我們欣然宣佈在今年五月二日推出「線上Ingress首週六」活動。其舉辦辦法係與 #IngressFS 統籌組織 FevGames 磋商後制定,俾能使大家在足不出戶的情況下仍能參加並有機會獲得Ingress首週六獎牌計數。 Ingress首週六一向是不同資歷不同陣營特工群賢畢集的盛會;際此人心惶惶,希望更能讓成為大家提取溫暖同渡嚴寒的好時光。 詳細申請及參加辦法請見FevGames公告:https://fevgames.net/ifs-at-home/ 截止申請日期為五月一日早上7時59分(GMT+8)。 #VirtualFirstSaturday

12
ПредишнаСтр. 1 от 2Следваща