Jak kodujesz bez obrażania?

27

Rozumiem przez to, jak sobie radzisz z tworzeniem kodu opartego na kodzie udostępnianym programistom, którzy pracowali nad nim od lat i są z nim bardzo obeznani?

Nie chcę nadepnąć na nikogo, ale nie dostaję tak subtelnych skarg na sposób, w jaki robię różne rzeczy, czy to, jak wstawiam biały kod, czy jak często loguję się do SVN (zbyt często). Chociaż mogę z łatwością zmieniać te rzeczy - ogólnie chcę być lepszym programistą zespołu.

Nie jestem pewien, co robić, poza pytaniem, ale może macie jakieś przemyślenia, które mógłbym przećwiczyć.

AKTUALIZACJA

Nie ma tu żadnego przewodnika po stylu - po prostu ludzie nie są przyzwyczajeni do dzielenia się bazą kodu. Każdy ma swój mały, wyciszony świat kodu.

To jest sklep Perla, ale jestem pewien, że dotyczą one dowolnego języka

AKTUALIZACJA 2

CTO, który później został CEO, był kompletnym megalomanem i był głównym źródłem tych skarg. Jeśli nie robiłeś rzeczy dokładnie tak, jak lubił, bez względu na to, czy korzystał z komputera Mac, Emacsa, czy 4 tabulacji zamiast 2, czy też ubierał się w określony sposób, byłeś gorszy. To była okropna sytuacja, którą próbowałem skorygować, ale jedyną prawidłową odpowiedzią było dla mnie wyjście.

Jestem przekonany, że był to przypadek zastraszania w miejscu pracy, a następnie jestem bardziej świadomy tego, co może być subtelnym zastraszaniem i niewłaściwym zachowaniem w środowisku pracy.

Każdemu programistowi, który szuka odpowiedzi na taką sytuację, natychmiast wyjdź. Nie możesz pracować zespołowo, aby wyjść ze złej sytuacji w zespole.

qodeninja
źródło
3
Czy uważają, że zbyt często wpisujesz kod? A może zbyt rzadko?
Adam Jaskiewicz,
3
Przynajmniej podwójne sprawdzenie wskaźników powstrzyma cię przed obrażeniem komputera ( xkcd.com/371 )
riwalk
4
Jeśli kodujesz w C #, zaproponuj, aby wszyscy używali StyleCop. Jeśli piszesz w innym języku, szuka podobnych narzędzi. Niech ślepy program będzie arbitrem w 80% przypadków.
Job
3
Nie powinieneś sprawdzać rzeczy, chyba że zostanie to zrobione w rozsądnym zakresie. Dlatego powinieneś zaktualizować kopię roboczą do najnowszego kodu (rozwiązywanie wszelkich konfliktów), pomyślnie zbudować lokalnie i uruchomić testy (lub, jeśli nie masz testów automatycznych, wykonaj własne testy dymu, aby sprawdzić, czy zmiany działają zgodnie z oczekiwaniami i nie psuj czegoś innego) przed odprawą. Ale jeśli to robisz, a oni nadal czują, że zamykasz kod „zbyt często”, naprawdę nie rozumiem ich sensu.
Adam Jaskiewicz,
2
Jeśli martwisz się utratą pracy lub tworzeniem „punktów kontrolnych” dla pracy, która może popsuć rzeczy, powinieneś wykonywać tę pracę w gałęzi, a nie w pniu. Nadal można zrobić, nawet jeśli oni nadal pracować z bagażnika.
Adam Jaskiewicz,

Odpowiedzi:

38

Zapytać. To znaczy zapytaj ludzi, z którymi pracujesz. Staraj się trzymać ustalonego stylu istniejącego kodu. Zapytaj zwłaszcza, czy istnieje lista standardów kodowania dokumentów i postępuj zgodnie z nią. Jeśli nie ma, napisz pierwszy szkic na podstawie tego, co zaobserwujesz w kodzie, a następnie poproś pozostałych członków zespołu o jego krytykę. Wykonasz usługę dla firmy (i nowych programistów, którzy przyjdą za tobą), zaczynając dokumentować przyjęte praktyki kodowania. Jedynym ryzykiem jest złapanie się w środek, jeśli okaże się, że dawni strzelcy nie zgadzają się ze sobą co do tego, co jest lub nie jest dopuszczalne.

Nie bój się też być sobą . Możesz być nowym facetem, ale jesteś członkiem zespołu, a twoje opinie są aktualne. Jeśli możesz wymyślić lepszy sposób na zrobienie czegoś, zasugeruj to. Szanuj innych członków zespołu i ustalony sposób robienia rzeczy, ale nie pozwól im się popychać. Firma nie zatrudniłaby cię, gdyby nie doceniała twojego wkładu.

Bardzo pomoże, jeśli znajdziesz w zespole kogoś, kto wydaje się przyjazny i szczególnie chętny do odpowiedzi na pytania. (Jeśli jest to dobry zespół, powinien to być każdy, ale zespoły nie zawsze są takie.) Twój szef mógł wyznaczyć kogoś, kto pomoże Ci zacząć. Użyj tej osoby jako zasobu. Zapisz pytania, jakie ci się przydają, a następnie poproś tę pomocną osobę, aby od czasu do czasu na nie odpowiadała.

Jeśli chodzi o wpisywanie kodu „zbyt często”, dlaczego nie utworzyć własnego oddziału dla okresowych zatwierdzeń, a następnie połączyć się z powrotem do pnia, gdy kod będzie gotowy? Nie robi to nikomu krzywdy, a kiedy twoi współpracownicy zobaczą, że czerpiesz korzyści z SVN, które chcieliby, mogą pójść za tobą.

Caleb
źródło
14
Alternatywą dla rozgałęzienia jest użycie GIT lokalnie. Ma bezproblemowy interfejs SVN i nigdy nie zobaczą twoich godzinnych zobowiązań.
mattnz
4
+1 za proaktywne tworzenie standardowego dokumentu kodowania z wyświetlanego kodu i uzyskiwanie konsensusu. Całkowicie krytykuje się BS za to, że nie przestrzega stylu kodowania jednej osoby, który sam nie podąża za stylem innej osoby.
David Harkness
24

Odnośnie białych znaków: po prostu zrób to, ale kod już to robi. Idź z prądem.

Odnośnie do odpraw SVN: udokumentuj je bardzo wyraźnie. Pomaga to ludziom zrozumieć, co dzieje się w kodzie. (Kontynuacja: Jakie są ich zastrzeżenia do częstych meldowań?)

Ogólnie: zacznij tworzyć standardowy dokument kodowania. Nie próbuj wypełniać go 100 regułami. Po prostu dodaj reguły, gdy tylko się pojawią.

Ponadto: zadawaj pytania innym programistom. To daje im szansę na zważenie, zanim zrobisz coś, co im się nie spodoba. Ponadto buduje relacje. Ponadto dowiesz się więcej o tym, jak działa sklep.

Stephen Gross
źródło
1
Przyzwoita odpowiedź, ale niekoniecznie nie podoba mi się „Idź z prądem” w białych znakach. Jeśli jest to rozsądne (ale po prostu nie tak, jak byś to zrobił), tak, idź z prądem. Ale, podobnie jak w przypadku kodu, który widziałem i nie ma spójnej białej spacji, ustalenie dobrych praktyk (jak sugeruje Caleb) może przejść długą drogę.
JasCav,
7

Jeśli chodzi o styl formatowania kodu (białe znaki, tabulatory, gdzie nawiasy klamrowe itp.), Należy postępować zgodnie z obowiązującym standardem w kodzie. Jeśli nie ma, nie sądzę, żeby mieli na co narzekać. Jeśli chodzi o to, czy wstawiasz nawiasy klamrowe na ich własną linię, czy nie, umieszczasz spacje wokół list parametrów metod itp. Jest osobistą preferencją i powinieneś poddać się panującemu stylowi, ponieważ na dłuższą metę tak naprawdę nie ważne . Liczy się konsekwencja.

Jeśli chodzi o sprawdzanie kodu w SVN, starałbym się ewangelizować to, co uważam za właściwy sposób robienia rzeczy, zamiast pozwolić sobie na parowanie. Nie sprawdzam mojego kodu, chyba że buduje i przechodzi testy, a jeśli wprowadzam kilka niepowiązanych zmian, dzielę swoją pracę na kilka zatwierdzeń. Jeśli coś zostanie na jakiś czas zepsute, tworzę gałąź i tam wykonuję swoją pracę. Zatwierdzenia otrzymują opisowe komentarze. Z mojego doświadczenia wynika, że ​​działa to lepiej niż metoda „sprawdź stos zmian w piątek o 5:00” i wydaje się, że jest to „najlepsza praktyka” zgodnie z większością tego, co przeczytałem tutaj i gdzie indziej.

Adam Jaskiewicz
źródło
4

Najpierw przeczytaj dokument dotyczący konwencji kodowania (jeśli go nie ma, poproś go o napisanie jednego z nich, abyś mógł go przestrzegać)

Następnie zauważ i podejmij świadomy wysiłek, aby postępować zgodnie z tym i tym, co mówią. Może ci się wydawać, że są surowe, ale standardy kodowania są ważne, lepiej jest teraz wskazać, co jest nie tak, niż pozwolić, aby później pojawił się problem, gdy wprowadzasz większe zmiany.

Jestem pewien, że zrobisz to samo za rok lub dwa, gdy jakiś nowicjusz nadepnie Ci na palce :)

Tom Squires
źródło
tak, nie mają żadnych konwencji, po prostu nie mieli żadnych nowych programistów od dłuższego czasu.
qodeninja,
1
@codeninja, w jaki sposób mogą narzekać, jeśli ich nie przestrzegasz? Muszą uzgodnić zestaw konwencji, zanim będą mogli oczekiwać, że zmienisz sposób kodowania. Powiedz im, że
Tom Squires,
to miejsce było koszmarem, CTO, który później został CEO, był kompletnym megalomanem. Jeśli nie robiłeś rzeczy dokładnie tak, jak lubił, bez względu na to, czy korzystałeś z komputera Mac, Emacsa, czy 4 tabulacji zamiast 2, czy też ubierałeś się w określony sposób, byłeś gorszy. Całkowity koszmar.
qodeninja
Zauważyłem, że użyłeś czasu przeszłego. Skoczył statek? :)
Tom Squires
3

Zapytaj o standardy kodu firmy. Zwróć większą uwagę na szczegóły. Jeśli widzisz, że inni podążają za bardzo specyficzną formą białych znaków i wzorów klamrowych, postępuj zgodnie z nimi. Jako starszy możesz argumentować, że jest to wybredna, ale jako Jr. lub nowy facet w projekcie musisz pokazać, że możesz śledzić, zanim będziesz mógł prowadzić.

Zrozum także, że każdy nowy programista w projekcie będzie miał niezbędny czas „przyspieszenia”. Więc nie przejmuj się tym.

P.Brian.Mackey
źródło
1

Najlepsze, co możesz zrobić, to postępować zgodnie z radami, które ci udzielają. Nie ma sposobu, aby powiedzieć z wyprzedzeniem, czego chcą. Chyba że jesteś medium.

Sugeruję jednak, aby ludzie udzielali ci porad, dokumentuj je. Czy masz wiki? Jeśli tak, użyj go. Jeśli nie, dobrym pomysłem może być plik tekstowy z kodem źródłowym. Zbuduj dobrze zorganizowany przewodnik po programach. Pomoże ci pamiętać, jak to zrobić, a jeśli ktoś zaprzecza wcześniejszej radzie, którą ci udzielono, daje ci punkt odniesienia do omówienia niekonsekwencji. Ponadto, gdy kolejna osoba dołącza do zespołu, nie będzie musiała przechodzić przez to, przez co przechodzisz.

Sugeruję, abyś nie przypisywał rad zawartych w dokumencie osobom (więc „bloki kodu powinny być wcięte trzema spacjami”, a nie „Bill powiedział mi, że bloki kodu powinny być wcięte trzema spacjami”). Jeśli jednak możesz zapisać te informacje w dyskretny sposób (np. W komentarzu do zatwierdzenia, napisz „dodana reguła dotycząca wcięć na podstawie porady Billa”), może to być pomocne w rozwiązywaniu sprzeczności, ponieważ możesz natychmiast uzyskać dwa punkty widzenia na czymś. Myślę tutaj o tym, że jeśli otrzymujesz sprzeczne rady, musisz unikać stania się piłką nożną przez dwóch kolegów, którzy się z czymś nie zgadzają. To trochę zakryte podejście, ale może być ostrożne.

Tom Anderson
źródło
0

Łatwo jest znaleźć przewodnik po stylu i postępować zgodnie z nim. Większość nie ma w nich nic obraźliwego i nie pozwoli ci obrażać innych.

nmichaels
źródło