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

Резултати

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

Търсене: #esc

当前筛选 #esc清除筛选
M2

@m2fpv · Post #1745 · 24.02.2024 г., 11:35

#fc#esc MAMBA F405 MK2 V2 F40 MK2 FC ESC STACK Flight Controller MAMBA F405MK2 V2 MCU: 168MHz STM32F405 GYRO: ICM-42688-P Target:FURYF4OSD OSD: Yes Blacbox: 16M Flash Memory Barometer: No Uart: 3 I2C: Yes F.Port: No RSSI: Yes Buzzer Pad: Yes CURR Pad: Yes Number of ESC ports: 4 ESC protocols: Dshot300/600 ESC Telemetry: Yes BEC:3.3V 0.5A& 5V 3A& 9V 3A Power supply: 3~6S Lipo (12.6~25.2V) Mounting holes: 30.5mm/M3 ESC MAMBA F40MK2 Power supply: 3~6S Lipo (12.6V~25.2V) Continuous current: 40A×4 Peak current: 50A (10S) BEC: No Target:BLHeli_S CH40 Protocols: Dshot300/600 Mounting holes: 30.5mm/M3 Telegram💬 | Сайт🌐 | Підтримати🎁

Hashtags

M2

@m2fpv · Post #1720 · 20.02.2024 г., 17:09

#fc#esc SpeedyBee F405 V3 MCU: STM32F405 IMU(Gyro): BMI270 OSD Chip: AT7456E chip Blackbox: MicroSD Card Slot SpeedyBee BLS 50A ESC Power Input: 3S - 6S UART: 6 sets(UART1, UART2, UART3, UART4(Dedicated for Bluetooth connection)), UART5(Dedicated for ESC telemetry), UART6 ESC Telemetry UART R5(UART5) I2C Smart Port / F.Port: Not supported Firmware Target Name: SPEEDYBEEF405V3 Mounting: 30.5 x 30.5mm(4mm hole diameter) Dimension: 41.6(L) x 39.4(W) x 7.8(H)mm Weight: 9.6g SpeedyBee BLS 50A 30x30 4-in-1 ESC Firmware: BLHeli_S JH50 Continuous Current: 50A * 4 Burst Current: 55A(5seconds) TVS Protective diode: Yes External Capacitor: 1000uF Low ESR ESC Protocol: DSHOT300/600 Power Input: 3-6S LiPo Power Output: VBAT Mounting: 30.5 x 30.5mm( 4mm hole diameter) Dimension: 45.6(L) * 44(W) * 6.1mm(H) Weight: 13.8g Telegram💬 | Сайт🌐 | Підтримати🎁

Hashtags

M2

@m2fpv · Post #1641 · 15.02.2024 г., 11:49

#fc#esc iFlight BLITZ F7 Буду закидувати робочі доки, можете шукати по хештегам Telegram💬 | Сайт🌐 | Підтримати🎁

Hashtags