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

Резултати

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

Търсене: #tradingcontest

当前筛选 #tradingcontest清除筛选
SingSing Announcement

@singsingchannel · Post #723 · 20.07.2024 г., 04:54

🤔Why join the NFT Trading Contest? 1️⃣Total prize pool of 0.1 ETH (~$350) 2️⃣Win up to 0.01 ETH (~$35) per winner 3️⃣Owning an NFT grants you a seat in our exclusive airdrop event 🎁 4️⃣Special benefit: Owning NFT allows to use RUBY within our SocialFi partners ecosystem 🌐 5️⃣Time to grab your SingSing NFTs is coming to an end soon ⏳ Don’t miss out - Trade Now🚀 Read more and Open Treasure at: X Post #NFT#Crypto#TradingContest#SingSing

SingSing Announcement

@singsingchannel · Post #1002 · 14.11.2024 г., 06:30

🚀$SING Trading Contest on CoinEx is COMING! 💰 Prize Pool: 500,000 $SING(~$9,000) 🗓 Duration: 10AM UTC, Nov 14 - 10AM UTC, Nov 21 Note: ✅All CoinEx users who apply on the promotion page can join (Market Makers excluded). ✅Rewards are based on Spot trading volume ranking. Cumulative volume = Buying + Selling volume in selected markets. Self-matching orders won’t be counted. ✅Market Making accounts are excluded from this event. ✅Sub-accounts cannot join independently; their volume will be counted in the main accounts. ✅Any cheating (batch registration, self-dealing, etc.) will result in disqualification. ✅FAQ About Spot Trading Volume Ranking 🔗 Full details: https://www.coinex.com/en/announcements/detail/32123383532948 #SingSing#TradingContest#CoinEx

SingSing Announcement

@singsingchannel · Post #1009 · 14.11.2024 г., 12:00

🚀2️⃣Separate $SING Trading Contests are NOW LIVE! ✅$SING Trading Contest on BingX 💰 Prize Pool: 2,800,000 $SING (~$50,400) 🗓 Duration: 12PM UTC, Nov 14 - 12PM UTC, Nov 21 Contest is exclusive to newly registered accounts on BingX from 12PM UTC, Nov 14 onwards. 🔗 Full details: https://bingx.com/en/act/contest2/7777/?randomId=6898941344&ref=0PUIUW ✅$SING Trading Contest on CoinEx 💰 Prize Pool: 500,000 $SING (~$9,000) 🗓 Duration: 10AM UTC, Nov 14 - 10AM UTC, Nov 21 🔗 Full details: https://www.coinex.com/en/announcements/detail/32123383532948 ------------------------------ Note: You can participate and receive rewards from 2 contests at the same time Good luck! 🌟 #SingSing#TradingContest#BingX#Coinex

SingSing Announcement

@singsingchannel · Post #739 · 25.07.2024 г., 06:46

🚀 Don't miss out on our exciting ongoing programs at SingSing! 🌟 1️⃣NFT Trading Contest with reward of $35 per winner🏆 2️⃣ Invite Frens to get 20% cashback when your friends claim RUBY and 5% every time their referrals claim it👥 3️⃣ Play to Air with Cowtopia🐄 4️⃣ Boost RUBY by buying Boost Item💎 Join now and get the most out of your SingSing experience! #SingSing#TradingContest#InviteFrens#PlayToAir#BoostRUBY