💾 Archived View for gemini.10oddechow.pl › gemlog › 0012.gmi captured on 2022-04-28 at 17:28:16. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2021-11-30)

-=-=-=-=-=-=-

O estetyce kodu

2021-10-28

Kilka wieczorów poświęciłem ostatnio na zaimplementowanie nietrywialnej rzeczy w języku, którego dopiero się uczę. Ciekawe doświadczenie, które uczy pokory. Wyrzucałem cały kod do kosza trzy razy i dopiero za czwartym razem udało mi się napisać kod, który i działa poprawnie, i wygląda dobrze.

Czasami mam wrażenie, że moje życie byłoby prostsze, gdybym mniej zwracał uwagę na estetykę kodu.

Będąc Junior Developerem pracowałem z programistką, której staż pracy przewyższał mój wiek. Rozmawialiśmy kiedyś, jak zaimplementować zadanie, które właśnie dostałem. Ja proponowałem takie podejście i śmakie podejście, głośno myśląc i licząc na to, że podyskutujemy i czegoś się nauczę. Ale niestety – ona otworzyła edytor, znalazła jakąś funkcję mierzącą, lekko licząc, kilkaset linii i oznajmiła, że ten kod robi coś podobnego, wystarczy, jeśli go skopiuję, pozmieniam, o, tu, tu i tu i gotowe, do końca dnia będę miał zadanie zrobione.

Po spotkaniu walczyłem chwilę ze sobą, po czym zignorowałem jej „radę” i zrobiłem po swojemu – napisałem ten kod „ładnie”.

Lubię estetyczny kod. Nawet nie chodzi o dobre zasady, dzięki którym kod jest testowalny i łatwy w utrzymaniu. Estetyka jest subiektywna, to coś nie do końca uchwytnego, co istnieje bardziej we mnie, niż w kodzie.

Był kiedyś ważny kawałek kodu w projekcie, nad którym pracowałem, którego każdy się bał. Człowiek, który go napisał, odszedł na emeryturę i nikt do końca nie wiedział, o co tam chodzi, jak ten kawałek działa. Zapadła zatem decyzja, że trzeba ten kod zrefaktorować, żeby był łatwiejszy do przyswojenia. Zgłosiłem się na ochotnika do oczyszczenia tej stajni Augiasza.

Okazało się, że ten kod jest stosunkowo prosty. Wczytuje surowe dane do bufora i poddaje je lekkiej obróbce, po czym przesyła je dalej. Został stworzony zgodnie z wszystkimi prawidłami sztuki pisania niskopoziomowych operacji na buforze znaków, jakie szanujący się programista C powinien znać. Tylko że napisano go... w Javie.

Kod mi się podobał. Robił co trzeba w prosty i elegancki sposób. Nie zrefaktorowałem go. Nie umiałem tego zrobić tak, żeby ten kod był ładniejszy, bardziej estetyczny. To, że przeciętny Javowiec się go bał, to nie był problem kodu, ale Javowca.

Przywiązuję uwagę do tego, aby kod mi się podobał. Nie wystarczy, żeby robił, co trzeba, musi to robić elegancko.

tagi: »programowanie«