Reklama
Bez wątpienia programowanie jest trudne. To jedno uczyć się języków i uczyć się algorytmy, ale jest to cała inna bestia próbująca napisać kod do złożonej działającej aplikacji, która nie sprawia, że chcesz wyłupić sobie oczy.
W pewnym sensie pisanie czystego kodu przypomina rysowanie, gotowanie lub fotografowanie - wygląda na łatwiejsze niż w rzeczywistości. Więc po co zawracać sobie głowę? Cóż, ponieważ korzyści są tego warte:
- Problemy stają się łatwiejsze do rozwiązania. Kiedy zaczniesz myśleć w czystym kodzie, twoje podejście do rozwiązywania problemów zmienia się. Zamiast brutalnych rozwiązań wymuszających, algorytmy i projektowanie oprogramowania stają się bardziej eleganckie i celowe.
- Na konserwację traci się mniej czasu. Czysty kod jest łatwiejszy do odczytania i zrozumienia, więc spędzasz mniej czasu próbując dowiedzieć się, co faktycznie robią niektóre segmenty, a więcej czasu na naprawianie, przeglądanie, rozszerzanie itp.
- Pomysły są wyraźniej przekazywane. Jeśli współpracujesz z innymi programistami, czysty kod zmniejsza prawdopodobieństwo nieporozumień między wami wszystkimi, co na dłuższą metę oznacza również mniej błędów.
Oto jak możesz zacząć pisać czysty kod.
1. Użyj nazw opisowych
Co to są zmienne, klasy i funkcje? Istnieje wiele sposobów, aby na to odpowiedzieć, ale kiedy naprawdę się nad tym zastanowić, te rzeczy są niczym innym jak interfejsem między programistą a podstawową logiką aplikacji.
Jeśli więc użyjesz niejasnych i nieopisowych nazw zmiennych, klas i funkcji, zasadniczo zaciemniasz logikę aplikacji od dowolnego programisty, który czyta kod, w tym ciebie.
„Nie jestem świetnym programistą; Jestem tylko dobrym programistą i mam świetne nawyki ”.
- Kent Beck
Co nazywa zmienna dxy
naprawdę znaczy? Kto wie. Prawdopodobnie będziesz musiał przeczytać cały fragment kodu, aby odtworzyć jego znaczenie. Z drugiej strony znaczenie zmiennej typu distanceBetweenXY
jest natychmiast rozpoznawalny.
To samo dotyczy klas i funkcji. Nie zadowalaj się CalcTan ()
kiedy możesz CalculateTangent ()
lub CalcTangentAngle ()
zamiast.
2. Daj każdej klasie / funkcji jeden cel
Czy kiedykolwiek zaglądałeś do funkcji o długości setek, a nawet tysięcy linii? Jeśli tak, to wiesz, jak trudny może być przeglądanie, rozumienie i edycja. Komentarze mogą pomóc, ale tylko w ograniczonym stopniu.
„Programowanie dzieli jedno duże niemożliwe zadanie na kilka małych możliwych zadań.”
- Jazzwant
Czysty kod dzieli się na części atomowe. Każda funkcja powinna dążyć do zrobienia jednej rzeczy, a każda klasa powinna dążyć do przedstawienia jednej konkretnej koncepcji. Jest to oczywiście uproszczenie, ale w razie wątpliwości prostsze jest czystsze.
W praktyce takie skomplikowane obliczenia jak GetCreditScore ()
może być konieczne podzielenie na kilka funkcji pomocniczych, takich jak GetCreditReports ()
, ApplyCreditHistoryAge ()
, i FilterOutstandingMarks ()
.
3. Usuń niepotrzebny kod
Z tym złym nawykiem ciągle się zmagam. Zwykle dzieje się tak: chcę naprawić lub zoptymalizować fragment kodu, więc komentuję go i przepisuję tuż pod nim - i chociaż działa, na wszelki wypadek przechowuję stary kod.
„Czy to możliwe, że oprogramowanie nie jest niczym innym, że ma zostać odrzucone: że chodzi o to, aby zawsze postrzegać je jako bańkę mydlaną?”
- Alan J. Perlis
Z czasem gromadzę wiele skomentowanych bloków kodu, które nie są już potrzebne, ale zaśmiecają moje pliki źródłowe. Zabawne jest to, że w wielu przypadkach otaczający kod ewoluował, więc skomentowany kod nie działałby nawet po przywróceniu.
Chodzi o to, że ta praktyka komentowania „kodu zapasowego” stała się przestarzała z powodu kontroli źródła. Jeśli nie używasz czegoś takiego jak Git lub Mercurial, musisz zacznij od razu korzystać z kontroli źródła. Kod czyszczenia czeka na Ciebie.
Pamiętaj, że ważne jest również unikanie pisania powtarzalnego kodu, co można łatwo osiągnąć za pomocą frameworka internetowego. Tu jest kilka frameworki internetowe, których warto nauczyć się jako programista 5 frameworków internetowych, których warto się nauczyć dla programistówChcesz nauczyć się zaawansowanego tworzenia stron internetowych? Zamiast tego unikaj pisania powtarzającego się kodu, używając tych frameworków programistycznych. Czytaj więcej .
4. Czytelność> Spryt
Zbyt wielu programistów łączy „czysty kod” z „sprytnym kodem”, tak jakby spakowanie dziesięciu wierszy w jeden jest jakoś czystsze. Jasne, zajmuje mniej miejsca na ekranie, ale czy rzeczywiście łatwiej to zrozumieć? Czasem może. Ale przez większość czasu? Nie.
„Wszyscy wiedzą, że debugowanie jest dwa razy trudniejsze niż napisanie programu. Jeśli więc jesteś tak sprytny, jak tylko potrafisz, pisząc go, jak go kiedykolwiek debugujesz? ”
- Brian W. Kernighan
Myślę, że programiści uwielbiają sprytny kod, ponieważ wydaje się, że jest to rozwiązana zagadka lub zagadka. Znaleźli specjalny i unikalny sposób na wdrożenie czegoś - „skrót”, jeśli wolisz - i prawie działa to jako potwierdzenie umiejętności programisty.
Ale aby napisać czysty kod, musisz zostawić swoje ego u drzwi.
Zawsze optymalizuj kod dla następnej osoby, która go przeczyta, ponieważ najprawdopodobniej jest to kolejna osoba tak naprawdę to TY i nie ma nic bardziej wstydliwego niż niemożność czytania lub rozumienia własnego spryt.
5. Zachowaj spójny styl kodowania
mam nic przeciwko dobrym tutorialom programowania Co stanowi dobry poradnik programowania?Nie wszystkie samouczki dotyczące programowania są sobie równe. Niektóre przynoszą korzyści Tobie, a inne marnują Twój czas. Oto, czego szukać w samouczku programowania jakości. Czytaj więcej , ale jedną z wad jest to, że początkujący wybierają wiele sprzecznych nawyków, zwłaszcza jeśli dotyczą stylu kodowania.
Nie jestem tutaj, aby zadeklarować, że jeden styl jest lepszy od drugiego. Jeśli chcesz nawiasy klamrowe na własnych liniach, idź do niego. Jeśli chcesz poprzedzać wywołania metod spacjami, dobrze. Jeśli wolisz tabulatory niż spacje, nie daj mi się przekonać.
Ale cokolwiek zrobisz, pozostań konsekwentny!
Piękne jest lepsze niż brzydkie.
Jawne jest lepsze niż niejawne.
Prosty jest lepszy niż złożony.
Złożony jest lepszy niż skomplikowany.
Mieszkanie jest lepsze niż zagnieżdżone.
Rzadki jest lepszy niż gęsty.
Liczy się czytelność.
- Tim Peters, Zen Pythona
Jeśli zamierzasz użyć camelCaseNaming
w przypadku zmiennych nie fałszuj za pomocą nazwa_ podkreślenia
. Jeśli użyjesz GetThisObject ()
w jednym miejscu, nie idźcie FetchThatObject ()
gdzieś indziej. A jeśli łączysz tabulatory i spacje, zasługujesz na zabranie klawiatury.
Zdecyduj, co będziesz robić od samego początku, i trzymaj się tego na zawsze. Niektóre języki, takie jak Python i C #, mają ogólnodostępne przewodniki po stylach, których możesz chcieć przestrzegać.
6. Wybierz odpowiednią architekturę
Istnieje wiele różnych paradygmatów i architektur, których można użyć do tworzenia projektów. Zwróć uwagę, jak ta wskazówka dotyczy wyboru dobrze jeden dla twoich potrzeb, a nie o wyborze Najlepsza jeden tam. Nie ma tutaj „najlepszego”.
„Bez wymagań i projektu programowanie polega na dodawaniu błędów do pustego pliku tekstowego.”
- Louis Srygley
Na przykład wzorzec Model-View-Controller (MVC) jest obecnie bardzo popularny podczas tworzenia stron internetowych, ponieważ pomaga utrzymać porządek i zaprojektować kod w sposób minimalizujący wysiłki konserwacyjne.
Podobnie wzorzec Entity-Component-System (ECS) jest obecnie bardzo popularny w tworzeniu gier, ponieważ tak jest pomaga modularyzować dane i logikę gry w sposób, który ułatwia utrzymanie, a jednocześnie tworzy kod, który jest łatwiejszy czytać.
7. Opanuj idiomy języka
Jedna z trudności w opanowanie nowego języka programowania 7 przydatnych sztuczek do opanowania nowego języka programowaniaPodczas nauki kodowania możesz być przytłoczony. Prawdopodobnie zapomnisz o rzeczach tak szybko, jak się ich nauczysz. Te wskazówki pomogą ci lepiej zachować wszystkie nowe informacje. Czytaj więcej uczy się niuansów, które oddzielają go od wszystkich innych języków. Te niuanse mogą być różnicą między brzydkim, skomplikowanym kodem a pięknym, łatwym w utrzymaniu kodem.
Rozważ Python, Java i JavaScript. Wszystkie bardzo się od siebie różnią, w stopniu wymagającym inny sposób myślenia w zależności od wybranego języka.
„Język, który nie wpływa na sposób myślenia o programowaniu, nie jest wart poznania”.
- Alan J. Perlis
Podczas gdy w Pythonie chodzi o kompaktowe pisanie kodu i kaczych znaków, Java jest bardziej otwarta na gadatliwość i jawność. Każdy język ma idiomy (takie jak wyliczenia list w Pythonie), które zachęcają do określonego sposobu kodowania. Dobrze byłoby się ich nauczyć.
Istnieją również „anty-wzorce”, którymi należy się martwić, które są zasadniczo nieoptymalnymi wzorami projektowymi, które powodują nieefektywny, zawodny lub w inny sposób zły kod. Przestudiuj i oducz wszystkie powszechne anty-wzorce związane z wybranym językiem.
8. Przestudiuj kodeks mistrzów
Jeśli chcesz napisać czysty kod, najlepszą rzeczą, jaką możesz zrobić, to zobaczyć, jak wygląda czysty kod i spróbować zrozum, dlaczego tak jest - i nie ma lepszego sposobu na zrobienie tego niż studiowanie plików źródłowych mistrzowie przemysłu.
Oczywiście nie możesz po prostu wejść do siedziby Microsoftu i zerknąć na ich projekty, ale zawsze możesz przeglądaj znane projekty open-source Jak wyświetlić i edytować kod źródłowy aplikacji typu open sourceChociaż korzystanie z oprogramowania typu open source może być dobrym wyborem, musisz także zainwestować w odpowiednią społeczność. GitHub jest jednym z najlepszych miejsc do zrobienia tego, nie tylko ze względu na samą ilość ... Czytaj więcej . Nie wiesz od czego zacząć? Spróbuj prezentowane projekty na Github.
„Każdy głupiec może napisać kod zrozumiały dla komputera. Dobrzy programiści piszą kod, który ludzie mogą zrozumieć. ”
- Martin Fowler, Refaktoryzacja: poprawa projektu istniejącego kodu
W końcu to jeden z powodów dlaczego istnieją projekty typu open source Dlaczego ludzie wnoszą wkład w projekty Open Source?Rozwój oprogramowania typu open source to przyszłość oprogramowania. Jest to świetne dla użytkowników, ponieważ oprogramowanie typu open source jest zwykle dostępne za darmo i często bezpieczniejsze w użyciu. Ale co zmusza programistów do udostępniania kodu za darmo? Czytaj więcej : aby inni mogli się od nich uczyć. A jeśli zdecydujesz się wziąć udział w takim projekcie, może przyspieszyć proces uczenia się 5 pomysłów na projekt, które pomogą Ci szybciej nauczyć się programowaniaIstnieje kilka sposobów na złagodzenie krzywej uczenia się podczas programowania. Zabrudz ręce i ucz się szybciej dzięki pobocznym projektom, które możesz rozpocząć w dowolnym momencie. Baw się z tymi pięcioma. Czytaj więcej .
Osobiście pierwszy raz zobaczyłem naprawdę czysty kod, kiedy natknąłem się na projekt Pythona dla pewnego hobbysty. Kod był tak elegancki, że prawie zrezygnowałem z programowania, ale ostatecznie wiele mnie nauczył.
9. Napisz dobre komentarze
„Napisz dobre komentarze” to najstarsza rada w świecie programowania. W rzeczywistości, gdy tylko nowicjusze zostaną przedstawieni komentarzom, są zachęcani do komentowania tak często, jak to możliwe.
Ale wydaje się, że za bardzo skręciliśmy w przeciwnym kierunku. W szczególności nowicjusze mają tendencję do nadmiernego komentowania - opisywania rzeczy, których nie trzeba opisywać i pomijanie sedna tego, czym tak naprawdę jest „dobry komentarz”.
„Zawsze koduj tak, jakby facet, który ostatecznie zachowa twój kod, będzie brutalnym psychopatą, który wie, gdzie mieszkasz.”
- John Woods
Oto dobra ogólna zasada: istnieją komentarze wyjaśniające, DLACZEGO istnieje kawałek kodu, a NIE JAKI on faktycznie jest. Jeśli kod jest napisany wystarczająco czysto, powinien wyjaśniać, co robi - komentarz powinien rzucić światło na intencję, dlaczego został napisany.
Komentarze mogą być dobre dla ostrzeżeń (tj. „Usunięcie tego spowoduje uszkodzenie A, B i C”), ale w większości powinno odkryć rzeczy, których nie można natychmiast zebrać z kodu (tj. „użyj tego parametru, ponieważ X, Y i Z ”).
10. Refaktor, Refaktor, Refaktor
Podobnie jak edycja jest częścią procesu pisania, tak samo refaktoryzacja jest częścią procesu kodowania. Niechęć do refaktoryzacji to najszybszy sposób na zakończenie niemożliwego do utrzymania kodu, więc pod wieloma względami jest to właściwie najważniejsza wskazówka do rozważenia.
Krótko mówiąc, refaktoryzacja jest tylko wymyślnym terminem czyszczenia kodu bez wpływu na jego faktyczne zachowanie.
„Ilekroć muszę myśleć, aby zrozumieć, co robi kod, zadaję sobie pytanie, czy mogę go przeredagować, aby to zrozumienie stało się bardziej widoczne”.
- Martin Fowler, Refaktoryzacja: poprawa projektu istniejącego kodu
Moją mądrością jest powiedzenie: „Nie komentuj złego kodu. Przepisz to. ” Jak wyjaśnia Fowler w powyższym cytacie, jeśli kod kiedykolwiek wydaje się wystarczająco zagmatwany, że trzeba go skomentować, być może trzeba go zrestrukturyzować.
Ponadto, edytując fragmenty kodu tu i tam w całym projekcie, zawsze pozostawiaj kod w lepszym stanie niż wtedy, gdy go znalazłeś. W tej chwili może się to wydawać uciążliwe, ale na dłuższą metę się opłaci (i może nawet powstrzymać wypalenie psychiczne Programowanie wypalenia zawodowego: jak odzyskać utraconą motywacjęPisanie tych wszystkich wierszy kodu może być wyczerpujące fizycznie i emocjonalnie. Wszystko, czego potrzebujesz, aby wrócić, to świadomość, że motywację można odzyskać. Czytaj więcej ).
Zawsze jest coś nowego do nauczenia się
Programista, który uczy się pisać czysty kod, jest podobny do powieściopisarza, który uczy się pisać czystą prozę: nie ma właściwego sposobu, aby to zrobić samo w sobie, ale istnieje wiele złych sposobów, aby to zrobić i zajmie to lata mistrz.
Niektórzy ludzie nie mają tego, czego potrzeba i ostatecznie na dobre porzuciłem programowanie 6 znaków, że nie jesteś programistąNie każdy jest programistą. Jeśli nie masz całkowitej pewności, że chcesz zostać programistą, oto kilka znaków, które mogą skierować Cię w dobrym kierunku. Czytaj więcej - i to dobrze, bo jest ich mnóstwo inne prace techniczne, które nie wymagają kodowania Kodowanie nie jest dla wszystkich: 9 zadań technicznych, które można uzyskać bez niegoNie zniechęcaj się, jeśli chcesz być częścią dziedziny techniki. Istnieje wiele miejsc pracy dla osób bez umiejętności kodowania! Czytaj więcej . Ale dla wszystkich innych czysty kod jest czymś, do czego absolutnie warto dążyć, nawet jeśli dotarcie tam zajmuje resztę życia.
Joel Lee ma tytuł licencjata w informatyce i ponad sześć lat doświadczenia zawodowego w pisaniu. Jest redaktorem naczelnym MakeUseOf.