Witaj na blogu prowadzonym przez Sebana. Spisuję tutaj swoje uwagi na różny temat. Przeważają tematy związane z Internetem, popieranymi przeze mnie rozwiązaniami dotyczącymi wykorzystania komputerów, oraz kilka innych.

Standard kodowania Ruby

04 grudnia 2009 | Klucze: programowanie, ruby, Techblog
14 komentarzy. trackback

Chyba każdy kto pracował przy jakimś projekcie, w którym uczesniczy więcej niż jeden programista czuł potrzebę zapanowania w jakiś sposób nad pisanym kodem. Według mnie pierwszą rzeczą jaką trzeba stalić w takiej sytuacji jest standard kodowania. Taki standard to nic innego jak zasady, których należy się trzymać by kod był czytelny i zrozumiały dla wszystkich.

W firmie w której pracuję Implix są standardy kodowania zarówno dla PHP jak i dla Ruby. Standardu nie można ot tak sobie narzucić. Standard powinien zostać wypracowany przy współpracy wszystkich zainteresowanych. W naszym przypadku standard został zaproponowany przez najbardziej doświadocznego programistę, pozostali mogli się z nim zapoznać, zgłosić uwagi ..., aż w końcu powstała wersja zaakceptowana. Standard kodowania obejmował konwencje nazewnictwa, wcięcia, białe znaki, nawiasy, instrukcje i komentarze. Oczywiście na końcu dokumentu znajdował się przykład całej klasy napisanej zgodnie z standardem i w całości udokumentowanej.

Standard kodowania istnieje już ponad 2 lata. Każdy w zespole tworzy kod zgodnie ze standardem lub przynajmniej się stara. Kod źródłowy powstający w firmie wygląda zawsze podobnie, a nie każda klasa inaczej. Każdy nowozatrudniony pracownik dostaje taki standard do przeczytania. W każdej chwili można zajrzeć do standardu (jest spisany na firmowym wiki). Wszelkie niezgodności ze standardem kodowania są wytykane podczas inspekcji kodu.

Poniżej kilka punktów:

  • linia nie powinna mieć więcej niż 100 znaków
  • nie używam tabulacji, zamiast tego 2 znaki spacji
  • 2 puste linie przed i po modifikatorach dostępu
  • 2 puste linie oddzielają definicje metody
  • każda metoda publiczna powinna mieć dokumentację
  • jeśli metoda przyjmuje więcej niż 1 argument, powinna być wywołana z użyciem nawiasów
  • dodatkowo lubię jak metody klasy są definiowane przed metodami instancji
  • jeśli z nazwy klasy nie wynika wprost do czego służy powinna mieć opis w postaci komentarza
Ten tekst napisałem sugerując się moimi doświadczeniami wynikającymi z pracy z kodem pisanym przez wielu programistów. Czasem lepszych, czasem gorszych, czasem z szerszym, czasem z węższym monitorem ... Ale każdy z nich pisał kod inaczej. Jeden wstawiał tabulacje, inny spacje. Hardkorowcy mieszali metody publiczne z tymi ukrytymi. Programiści! Starajcie się pisać w jakiś spójny, uporządkowany sposób. Nie chcesz odziedziczyć niedbale napisanego kodu, prawda? W takim razie sam zacznij dbać o jego estetykę i nie traktuj każdego projektu na zasadzie "napisz, zgarnij kasę i zapomnij"!


KOMENTARZE

04 grudnia 2009 | b |

Jestem w 100% za!

Czegoś takiego zdecydowanie brakuje u mnie w pracy... w ten sposób dziedziczenie projektów mogłoby nawet być miłe...

04 grudnia 2009 | Marcin Kosedowski |

nie używam tabulacji, zamiast tego 2 znaki spacji

Tu jestem absolutnie na nie. Jedna osoba lubi mieć wcięcie na jedną spację, inna na 6 (a ja na 3). Używając taba zamiast spacji każdy może w swoim edytorze ustawić takie wcięcia jakie mu się podobają. Używając na sztywno dwóch spacji zmiana nie jest już taka prosta.

04 grudnia 2009 | psp |

"nie używam tabulacji, zamiast tego 2 znaki spacji"

wtf? właśnie po to stosuje się tab zamiast 'x spacji' żeby każdemu pasowała wielkość wcięcia którą sobie ustawia - niektórym pasuje wcięcie 2, innym 4, a jeszcze inni wolą 3..

04 grudnia 2009 | sharnik |

Marcin: Tu nie chodzi tylko o to jak komu ładnie w edytorze wygląda, tylko o to, że w Rubym przyjęło się stosować dwie spacje. Wszyscy tak robią.

04 grudnia 2009 | Marcin Kosedowski |

Skoro wszyscy tak robią to zwracam honor:)

04 grudnia 2009 | Seban |

@sharnik wszyscy tak powinni robić, niestety panuje spora dowolność, a czasami dość daleko posunięta anarchia

04 grudnia 2009 | Partybets |

Wracając jednak do wersji 1.9, od tej pory wszystkie bolączki typowe dla 1.8 zniknęły. Między każdą z części może pojawić się dowolna ilość spacji, wielkość liter nie ma znaczenia.

04 grudnia 2009 | Stanisław 'dozzie' Klekot |

@psp: właśnie po to się stosuje x spacji zamiast tabulatora, żeby nie było problemu z lokalnym ustawieniem tabstopa w edytorze. Naprawdę niewielu widziałem ludzi pilnujących spacji i tabów i nie mieszających tabulatorów ze spacjami, a kod pozostałych (którzy używają tabów) wygląda jakby po nim czołgiem ktoś przejechał.

04 grudnia 2009 | Seban |

@Partybets nie rozumiem tego o 1.9 i 1.8

05 grudnia 2009 | Dodek |

linia nie powinna mieć więcej niż 100 znaków
wut, 100? jak już się wprowadza limit długości linii, to lepiej przyjąć bardziej powszechny standard, tj. 80 kolumn

09 grudnia 2009 | demikaze |

@Partybets ja też nie rozumiem tego o 1.9 i 1.8

10 grudnia 2009 | Seban |

Ludzie z Toughtbot przygotowali świeżą ankiete dotyczącą standaru kodowania i komentowania. Zachęcam do wzięcia udziału: http://robots.thoughtbot.com/post/276620679/ruby-community-survey

26 stycznia 2010 | test |

Ile płacą teraz w implixie programistom?

27 stycznia 2010 | Seban |

Ja jestem zadowolony.