# Aforyzmy programistów: mądrość z planerek i code review
Przez lata w rozwoju embedded gromadzi się zestaw fraz, które przechodzą w kategorię aforyzmów. Odzwierciedlają rzeczywistość kodowania mikrokontrolerów, projektowania układów i zarządzania projektami. Podsumowanie z 12-letniego doświadczenia: od zasad kodu po peryferię MCU.
Aforyzmy o kodzie i architekturze
Programiści dzielą się na tych, którzy piszą kod od zera, i tych, którzy portują open-source. Uniwersalność komputera jako maszyny obliczeniowej — to podstawowa definicja, choć nie wszyscy fiztehowcy się z tym zgadzają.
Kluczowe zasady:
- Na wszystko jest config: najlepszy kod — to konfiguracja.
- Kod osobno, configi osobno.
- Dobry kod formuje się latami, jak kryształ.
- Zasada najmniejszego zaskoczenia przy pisaniu.
- Najlepszy algorytm — tabela (skończony automat sprowadza się do grafu i tabeli).
«Programowanie — to maraton, a nie sprint.» (Robert Martin)
Jednolitość kodu ważniejsza niż piękno: «Kod trzeba pisać jednolicie — brzydko». Tablica — podstawa wszystkiego. Dla każdego settera potrzebny jest getter: xxx_write() wymaga xxx_read(). Nazwa funkcji — jej komentarz. Mniej tekstowych komentarzy — czystszy git diff.
W C: jeśli funkcja nie mieści się na ekranie, prawdopodobnie nie działa. Każde zadanie rozwiązuje się jedną linią — wywołaniem funkcji. Najlepszy komentarz — nazwa pliku.
Testowanie i CI/CD
Repozytorium bez CI — papierowy listek. System budowania musi być jednolity, niezależnie od edytorów. Kod bez testów modułowych — to samo.
«Program, który nie był testowany, nie działa.» (Bjarne Stroustrup) «TDD — wybór profesjonalistów.» (Robert Martin)
Wiedza przekazywana pisemnie, dla ciągłości. Przenośna baza kodu — podstawa przyszłych developów. Wszystkie protokoły — memcpy między urządzeniami.
Schematyka i hardware
Schematycy żartują: bądź jak proc — odmawiaj nadmiernego napięcia. Elektrotechnika — nauka o braku styków. Rozwój zaczyna się od narzędzi do debugowania.
Wszystkie sensory mierzą temperaturę, ale inaczej. Po 100 MHz sygnał jest analogowy. Wszystko w elektronice — ADC lub DAC: kodeki, transceivery, GPIO jak jednobitowy DAC.
Wybór interfejsów: SPI lepsze niż I2C. Rosjanie trajsują płytki pod europejski kod, Europejczycy piszą pod chińskie płytki. Best part is no part.
Mikrokontrolery i firmware
Hardware pierwotny, soft wtórny. Im prostsza schematyka — tym bardziej złożona firmware, i odwrotnie. Firmware bez urządzenia — rzeźba z fotografii.
Peryferia dostosowuje się do taktowania rdzenia. Firmware zaczyna się od bootloadera. Siedem nieszczęść — jeden reset. Najlepsza funkcja — aktualizacja firmware.
Uniwersalny protokół mnoży się: z 12 zrobiło się 13. Asembler — kasza szczypcami. NVRAM poprawia każdą rzecz. UART-CLI niezbędna: bez niej plug and pray.
Logi UART — czarna skrzynka firmware. MCU — moździerz do liczb, x86 — mikser. CLI rozszerza wyobraźnię, GUI ogranicza. Skończony automat — złoty młotek dla MCU.
Pełnowartościowy MCU wymaga: timera UpTime, heartbeat-LED, UART-CLI, NVRAM, testów modułowych. Inaczej — bezużyteczny łańcuch. Firmware sama siebie nie napisze.
Modułowość — budowa dla wielu platform jednocześnie.
Zarządzanie i projekty
Robimy nie dlatego, że proste, ale dlatego, że myśleliśmy, że proste. Połowa tego, co wykładane, to bzdury, zadanie — zrozumieć, która (prawo Larrabiego).
Rozwój na wymaganiach: nie poprawiać ponad. Dogadywanie się — to praca. Nic nie robić na prośbę — wykonane zadanie.
«Negatywny wynik — to też wynik.» (Niels Bohr)
Złe rozwiązanie z dobrym raportem odrzucą z czasem, dobre ze złym — od razu (prawo Akina). Kierować — to nie przeszkadzać.
Bilans jakości dodatni. Nie trzeba, jak psu bak na benzynę. Lepiej wada teraz, niż na rynku. Burza mózgów — drwiny z pomysłów.
Robić nie to, o co proszą, a to, co trzeba. Najlepsze — wróg dobrego. Źle samo wyjdzie. Szybko i źle zapamiętają jako źle; wolno i dobrze — jako dobrze (Korolow).
Co ważne
- Kod musi być przenośny i testowalny: TDD, testy modułowe, jednolita CI.
- W embedded: UART-CLI, logi, skończone automaty — podstawa debugowania.
- Podejście hardware-first: prostota schematów upraszcza soft.
- Projekty na wymaganiach, dokumentacja pisemna.
- Ciągłość: wiedza i czysty repozytorium.
— Editorial Team
Brak komentarzy.