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

Резултати

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

Търсене: #badger

当前筛选 #badger清除筛选
Crypto

@signal_bitcoins · Post #2840 · 16.02.2024 г., 14:42

#BADGER again reached the supply zone on Weekly time frame, after breakout from this area we will see new bullish trend 📈 ❄️@signal_bitcoins❄️ ❄️@Shadow_support0o❄️

Hashtags

Binance Big Pump Signals Future trade

@binancebigpumpsignalsfuture · Post #1401 · 28.07.2021 г., 22:46

#BADGER result 1st target achieved in just 31 minutes✅ One more very quick profit 5%💰🤑 👉 More quick profit signals available in premium channel. Hurry up 🏃‍♂👇 ☎️ Contact @MichaelStrategiesVip

Hashtags

🐬DOLPHIN | AI PREDICTIONS 17.01.2024 14:00 GMT Expected 5% Profit/Loss in 24 Hours #BOND | 3.493 | PP: 1% | LP: 100% #CVX | 3.002 | PP: 0% | LP: 90% #POND | 0.01511 | PP: 0% | LP: 90% #KMD | 0.2581 | PP: 0% | LP: 91% #ETC | 26.36 | PP: 0% | LP: 92% #JOE | 0.5105 | PP: 0% | LP: 93% #PROS | 0.4579 | PP: 0% | LP: 93% #VGX | 0.1258 | PP: 0% | LP: 93% #ATA | 0.0949 | PP: 0% | LP: 94% #BETA | 0.07108 | PP: 0% | LP: 94% #DEGO | 2.261 | PP: 0% | LP: 94% #AST | 0.124 | PP: 0% | LP: 95% #AVAX | 35.97 | PP: 0% | LP: 95% #CELR | 0.01949 | PP: 0% | LP: 95% #WAXP | 0.0619 | PP: 0% | LP: 95% #AXS | 8.05 | PP: 0% | LP: 96% #BEL | 0.6378 | PP: 0% | LP: 96% #GTC | 1.231 | PP: 0% | LP: 96% #UMA | 2.004 | PP: 0% | LP: 96% #WBTC | 42686.15 | PP: 0% | LP: 96% #BTC | 42609.84 | PP: 0% | LP: 97% #GRT | 0.1666 | PP: 0% | LP: 97% #MATIC | 0.8322 | PP: 0% | LP: 97% #PEPE | 0.00000121 | PP: 0% | LP: 97% #UTK | 0.0731 | PP: 0% | LP: 97% #MOB | 0.354 | PP: 0% | LP: 98% #OCEAN | 0.4489 | PP: 0% | LP: 98% #AAVE | 101.35 | PP: 0% | LP: 99% #ATOM | 10.097 | PP: 0% | LP: 99% #BSW | 0.0941 | PP: 0% | LP: 99% #BTTC | 0.00000104 | PP: 0% | LP: 99% #DGB | 0.00839 | PP: 0% | LP: 99% #FLM | 0.084 | PP: 0% | LP: 99% #FOR | 0.02193 | PP: 0% | LP: 99% #LOOM | 0.09158 | PP: 0% | LP: 99% #LTO | 0.0814 | PP: 0% | LP: 99% #MBOX | 0.3093 | PP: 0% | LP: 99% #PUNDIX | 0.4558 | PP: 0% | LP: 99% #QTUM | 3.113 | PP: 0% | LP: 99% #RPL | 34.09 | PP: 0% | LP: 99% #SCRT | 0.4198 | PP: 0% | LP: 99% #STX | 1.5891 | PP: 0% | LP: 99% #ACA | 0.1001 | PP: 0% | LP: 100% #ADA | 0.5293 | PP: 0% | LP: 100% #ADX | 0.1875 | PP: 0% | LP: 100% #AKRO | 0.00532 | PP: 0% | LP: 100% #ALCX | 25.88 | PP: 0% | LP: 100% #ALPHA | 0.1075 | PP: 0% | LP: 100% #AMP | 0.003404 | PP: 0% | LP: 100% #ARDR | 0.0916 | PP: 0% | LP: 100% #BADGER | 3.471 | PP: 0% | LP: 100% ... ——————————————————————— Total Predictions: 367 PP > 50%: 2 LP > 50%: 163 PP > 60%: 0 LP > 60%: 157 PP > 70%: 0 LP > 70%: 147 PP > 80%: 0 LP > 80%: 140 PP > 90%: 0 LP > 90%: 130 ——————————————————————— PP: Profit Probability | LP: Loss Probability