# Aforysmy vývojářů: moudrost z porád a code review
Za roky v embedded vývoji se hromadí sada frází, které se stávají aforysmami. Odrazují realitu kódování mikrokontrolérů, návrhu schémat a managementu projektů. Výběr z 12 let praxe: od principů kódu po periferii MCU.
Aforysmy o kódu a architektuře
Programátoři se dělí na ty, kteří píšou kód od nuly, a ty, kteří portují open-source. Univerzálnost počítače jako výpočetního zařízení je základní definice, i když ne všichni fyzici s tím souhlasí.
Klíčové principy:
- Na všechno je config: nejlepší kód je konfigurace.
- Kód odděleně, configy odděleně.
- Dobrý kód se formuje léty, jako krystal.
- Princip nejmenšího překvapení při psaní.
- Nejlepší algoritmus je tabulka (konečný automat se redukuje na graf a tabulku).
„Programování je maratón, ne sprint.“ (Robert Martin)
Jednotnost kódu je důležitější než krása: „Kód se píše jednotně – ošuntěle“. Pole jsou základem všeho. Každý setter potřebuje getter: xxx_write() vyžaduje xxx_read(). Název funkce je její komentář. Méně textových komentářů – čistší git diff.
V C: pokud funkce nevejde na obrazovku, pravděpodobně nefunguje. Jakoukoli úlohu vyřešíte jedním řádkem – voláním funkce. Nejlepší komentář je název souboru.
Testování a CI/CD
Repozitář bez CI je bezcenný papír. Systém buildů musí být jednotný bez ohledu na editory. Kód bez unit testů je totéž.
„Program, který nebyl otestován, není funkční.“ (Bjarne Stroustrup) „TDD – volba profesionálů.“ (Robert Martin)
Znalosti se předávají písemně pro kontinuitu. Přenositelná kódová báze je základem budoucích vývojů. Všechny protokoly jsou memcpy mezi zařízeními.
Návrh schémat a hardware
Schématici vtipkují: buď jako procesor – odmítej přílišné napětí. Elektrotechnika je věda o absenci kontaktů. Vývoj začíná debugovacími nástroji.
Všechny senzory měří teplotu, ale každý jinak. Nad 100 MHz je signál analogový. Vše v elektronice je ADC nebo DAC: kodeky, transceivery, GPIO jako jednobitový DAC.
Výběr rozhraní: SPI je lepší než I2C. Ruští traťáři navrhují desky pod evropský kód, Evropané píšou pro čínské desky. Nejlepší díl je žádný díl.
Mikrokontroléry a firmware
Hardware je primární, software sekundární. Čím jednodušší schéma, tím složitější firmware, a naopak. Firmware bez zařízení je socha podle fotky.
Periferie se přizpůsobuje taktování jádra. Firmware začíná bootloaderem. Sedm neštěstí – jeden reset. Nejlepší funkce je aktualizace firmware.
Univerzální protokol se násobí: z 12 se stalo 13. Assembler je kroupy pinzetou. NVRAM vylepší cokoli. UART-CLI je nezbytná: bez ní plug and pray.
UART logy jsou černá skříňka firmware. MCU je stupka pro čísla, x86 je mixér. CLI rozšiřuje fantazii, GUI omezuje. Konečný automat je zlatý kladivo pro MCU.
Plnohodnotný MCU vyžaduje: UpTime timer, heartbeat-LED, UART-CLI, NVRAM, unit testy. Jinak je to zbytečný řetězec. Firmware se nenapíše sám.
Modularita – sestavení pro více platforem najednou.
Management a projekty
Neděláme to proto, že je to jednoduché, ale proto, že jsme si mysleli, že je to jednoduché. Polovina toho, co se učí, je nesmysl, úkol je zjistit která (Zákon Larrabiho).
Vývoj podle požadavků: nezlepšovat navíc. Dohadovat se je práce. Nic neudělat na požádání – splněný úkol.
„Negativní výsledek je také výsledek.“ (Niels Bohr)
Špatné řešení s dobrým reportem se odmítne časem, dobré se špatným hned (zákon Akina). Řídit znamená nebránit.
Bilance kvality je kladná. Netřeba jako psu benzobak. Lepší vada teď než na trhu. Brainstorming je posměšky nad nápady.
Dělat ne to, co žádají, ale co potřebují. Dokonalé je nepřítelem dobrého. Špatné se udělá samo. Rychle a špatně si zapamatují jako špatné; pomalu a dobře jako dobré (Koroljov).
Co je důležité
- Kód musí být přenositelný a testovatelný: TDD, unit testy, jednotná CI.
- V embedded: UART-CLI, logy, konečné automaty – základ debugování.
- Hardware-first přístup: jednoduchost schémat zjednodušuje software.
- Projekty podle požadavků, dokumentace písemně.
- Kontinuita: znalosti a čistý repozitář.
— Editorial Team
Zatím žádné komentáře.