Biały znak: cichy zabójca

Oryginalny post: Whitespace: The Silent Killer

Autor: Jeff Atwood

Zdarzyło Ci się kiedyś mieć taki dzień, w którym wszystko, co wysyłałeś do systemu kontroli wersji, było złe?

Tak w ogóle, to czym dokładnie taki dzień różni się od każdego innego? Ale bądźmy poważni.

Kod, który jest widoczny to kod, który może być niepoprawny. Nie powinno to być zaskoczeniem. Ale czy wiesz, że nawet kod, którego nie widać, również może być zły?

Są to pytania, które doprowadzają młodych programistów do szaleństwa. Spójrzmy na przykład na ten zupełnie niewinny kawałek kodu.

Kod źródłowy - białe znaki niewidoczne

Wygląda w porządku, prawda? Ale poczekaj. Przyjrzyjmy mu się raz jeszcze, trochę dokładniej.

Kod źródłowy - białe znaki widoczne

O. MÓJ. BOŻE!

Jeśli nie jesteś programistą, możesz patrzeć na te dwa obrazki i zastanawiać się, o co chodzi. W porządku. Ale muszę skromnie stwierdzić, że, cóż, nie jesteś jednym z nas. Nie jesteś w stanie docenić, ani nawet wyobrazić sobie, jak to jest spędzać każdą cholerną minutę każdego cholernego dnia na męczeniu się na nad każdym, nawet najdrobniejszym szczegółem programu, który właśnie piszesz. Nie dlatego, że tego chcemy, w żadnym wypadku. Ale dlatego, że świat eksploduje, jeśli tego nie będziemy robić.

Mówię tutaj dosłownie. Cóż, prawie. Jeśli choć jeden średnik znajduje się w złym miejscu, wszystko zaczyna iść nie tak, jak byś chciał. Tak właśnie jest w świecie programowania. I to jest fajne! Czasami! Przyrzekam!

Pakujemy się w tę branżę ponieważ, mówiąc szczerze, jesteśmy maniakami kontrolowania. Tacy właśnie jesteśmy. To właśnie robimy. Wyobraź sobie teraz te wszystkie głupie, bezużyteczne białe znaki, które, na nasze nieszczęście, wiszą sobie na końcach naszych wierszy. One tam są, ale nie możemy ich zobaczyć. Cóż, to są właśnie koszmary, na podstawie których kręci się horrory dla osób z zaburzeniami obsesyjno-kompulsyjnymi. Samo gadanie o tym sprawia, że całe ciało mnie swędzi.

W zależności od tego, jak głęboko w króliczą norę chcesz zajrzeć, jest kilka rzeczy, które możesz zrobić:

  • napisz skrypt, korzystający z wyrażenia regularnego w rodzaju \s*?$, który po każdym buildzie będzie usuwał nadmiarowe białe znaki przed wysłaniem kodu do systemu kontroli wersji,
  • uruchom makro, które usuwa białe znaki z końca wierszy,
  • stwórz regułę, która podświetla dodatkowe białe znaki,
  • używaj swojego IDE z włączoną opcją pokazywania białych znaków albo włączaj ją od czasu do czasu.

OK, w porządku, być może świat nie eksploduje, jeśli w moim kodzie będzie trochę nadmiarowych białych znaków.

Mimo to myślę, że w przyszłości dwa razy upewnię się, że te irytujące białe znaki nie będę akumulowały się w moim kodzie, gdy nie będę patrzył. To że ich nie widzę, nie oznacza, że ich tam nie ma i że nie czekają na okazję, by mnie dopaść.

Data publikacji oryginału: listopad 9, 2009


Zachęcamy do wzięcia udziału w sondzie, jak również do podzielenia się w komentarzach własnymi doświadczeniami związanymi z tematyką dzisiejszego posta.

10 komentarze:

Tomasz Kowalczyk pisze...

Jedna uwaga - proszę, nie kaleczcie języka polskiego takimi słowami jak "komitować". Jeśli nie istnieje dobre tłumaczenie, to zachowajmy oryginalną pisownię i stosujmy oryginalną odmianę, w tym wypadku "commitować". Niewtajemniczeni w systemy kontroli wersji i tak nie będą wiedzieli o co chodzi (w każdym razie łatwiej będzie im szukać w Google), a pozostali nie będą zrzędzić na koślawe tłumaczenia.

LQC pisze...

W ybranie szablonu H TML jako pr zykła d "kodu" wygląda tak j akoś dz iwnie... A jeśli denerwują cię znaki, których nie widzisz, to w tym komentarzu jest kilka spacji zerowej szerokości.

Anonimowy pisze...

Zawsze można zrobić formatowanie kodu w visual studio i wszystko będzie zgodne z ustawieniami w opcjach. Tak więc złe formatowanie kodu nie jest takie straszne.
Osobiście też lubię mieć dodatkowe białe znaki i mój kod wygląda tak:
Console.WriteLine ( "Hello world!" );

Immortal pisze...

@Tomasz Kowalczyk

Masz rację odnośnie tego "komitowania"; już poprawiłem.

Tomasz Kowalczyk pisze...

@LOC, @Anonim - zależnie od języka mam swój ustalony sposób pisania kodu, zgodzę się z tym, że kod HTML jest słabym przykładem na pokazanie problemu. Może dlatego, że nazwanie go "językiem programowania" powoduje u mnie nieprzyjemne dreszcze? ;]

@Immortal - widzę, że trochę "naookoło", ale dzięki. ;] Język polski FTW. ;]

Anonimowy pisze...

Panowie, to nie kod HTML, ale jakiś JSF czy inny serverside, więc jest to programowanie. A że akurat przykład zawiera HTML, no cóż...

Anonimowy pisze...

okropnie sie czepiacie szczegolow, nie patrzycie na ogolny kontext? :P

Immortal pisze...

A dokładniej kawałek szablonu w ASP.NET MVC.

Gluth pisze...

W Eclipse jest opcja, która przy każdym zapisie wywala białe znaki z końca linii. Niesamowicie przydatna.

Anonimowy pisze...

No bez przesady. Może kod z nadmiarem białych spacji jest nieszczególnie elegancki, ale nie można go określać mianem źle napisanego. bBiałe znaki w wiekszości przypadków nie wpływają na działanie programu, a bawienie się w usuwanie każdej niepotrzebnaj spacji jest tylko stratą czasu. Zwłaszcza, że każde nowoczesne IDE ma coś takiego jak formatowanie kodu, co znacznie wspomaga pisanie kodu przez osoby o różnych stylach.

Marcin

Prześlij komentarz

Related Posts with Thumbnails