Czy styl kodowania w organizacjach jest czymś opcjonalnym?

30

Ten dokument w stylu programowania ma ogólną zasadę, która mówi:

Reguły mogą zostać naruszone, jeśli istnieją wobec nich poważne osobiste zastrzeżenia.

To koliduje ze sposobem, w jaki myślę, i wiele artykułów mówi, że styl kodowania jest naprawdę ważny. Na przykład mówi to :

Dokument standardów kodowania mówi programistom, jak muszą napisać kod. Zamiast każdego programisty kodującego w swoim preferowanym stylu, zapisują cały kod zgodnie ze standardami opisanymi w dokumencie. Dzięki temu duży projekt jest kodowany w spójnym stylu - części nie są pisane inaczej przez różnych programistów. To rozwiązanie nie tylko ułatwia zrozumienie kodu, ale także zapewnia, że ​​każdy programista, który patrzy na kod, będzie wiedział, czego się spodziewać w całej aplikacji.

Czy zatem źle rozumiem coś z tego dokumentu i cytatu na początku tego pytania? Czy ludzie naprawdę mogą po prostu zignorować styl kodowania?


Może nie byłem wystarczająco jasny, więc z tą edycją zamierzam trochę wyjaśnić.

Piszę dokument dotyczący stylu kodowania dla naszego zespołu i chcę sprawdzić styl za pomocą niektórych analizatorów statycznych. Jeśli to się nie powiedzie, Jenkins wyśle ​​e-maile. I chcę zakończyć przegląd kodu, jeśli styl nie pasuje. To wyraźnie koliduje z pierwszym cytatem.

Ale jeśli cytat ma rację, jaki jest pożytek z dokumentu w stylu kodowania, jeśli ktoś może zrobić, co chce?

BЈовић
źródło
Oczywiście odpowiedź brzmi: to zależy. Wszystkie poniższe odpowiedzi są odpowiednie dla różnych zespołów w różnych firmach o różnych kulturach. Cokolwiek zaproponujesz, powinno pasować do tego, do czego zmierza zespół - i powinieneś o tym wiedzieć, ponieważ oczywiście omawiasz to nieformalnie z członkami zespołu indywidualnie lub w małych grupach. Osobiście wolę a) wszystko, co mogę po prostu ustawić opcje w Emacs, Visual Studio i IntelliJ IDEA, oraz b) absolutnie żadnych twardych zakładek w plikach pod żadnym pozorem! Wszystko inne, czego drużyna chce, jest w porządku.
davidbak
Moim zdaniem, jeśli piszesz przewodnik, to już przegrałeś bitwę. Nie ma możliwości, aby stworzyć wiarygodne dokumenty, które programiści faktycznie przeczytają. Nowoczesne IDE pochodzą z zestawem stylów. Wybierz jeden i nazwij go referencją.
Cerad
Dokument stylu, który połączyłeś, jest „sugerowanym” dokumentem stylu kodowania; to nie jest dokument w stylu „the”. Jeśli tworzysz dokument swojej witryny, użyj tego, o ile dobrze pasuje. Jeśli masz obiekcje, a następnie zmienić swoje doc odpowiednio. Na przykład pomiń stwierdzenia, których nie lubisz.
user2338816
„Zasady mogą zostać naruszone, jeśli istnieją wobec nich poważne osobiste zastrzeżenia”. Czasami jest to kwestia polityczna: faza 1 to opt-in. Bez tego starszy szkolny współpracownik mógłby całkowicie zabić ideę standardów kodu.
brian_o

Odpowiedzi:

12

O ile mogę stwierdzić, stwierdzenie, które was myliło, jest pragmatycznym kompromisem zawartym po to, aby wytyczne mogły służyć jak najszerszej publiczności. W zależności od konkretnego kontekstu (więcej na ten temat poniżej) możesz mieć możliwość dostosowania go i efektywniejszego korzystania z wytycznych.

Widzisz, wytyczne odnoszą się do „silnych sprzeciwów osobistych” jako sposobu uzasadnienia naruszenia. Takie zastrzeżenia nie należy lekceważyć, zwłaszcza jeśli pochodzą od doświadczonych programistów.

Te zastrzeżenia mogą być błędne, pamiętajcie o tym, ale (i to jest bardzo WIELKIE ALE) mogą również wskazywać, że dana reguła jest błędna - ogólnie lub w kontekście konkretnego projektu (jednym z przykładów niewłaściwej reguły jest wymóg podania szczegółowe logowanie do kodu krytycznego dla wydajności).

Myślę, że każdy rozsądny przewodnik po stylu powinien uwzględniać powyższe i starać się zaspokoić ewentualną potrzebę dostosowania się. Teraz, jeśli przewodnik, który Cię pomylił, był skierowany tylko do dojrzałych zespołów z wydajnymi i płynnymi procesami i środowiskiem, można by powiedzieć o wiele mniej dwuznacznie, na przykład tak:

Zasady powinny być ściśle przestrzegane, chyba że zostanie postawione przeciwko niemu wyzwanie - w takim przypadku zakwestionowana reguła powinna pozostać ignorowana, dopóki nie zostanie rozwiązana - albo przez odrzucenie wyzwania, albo zaakceptowanie go i dostosowanie zasad, aby pasowały.

Może ci się to podobać lepiej i możesz chcieć, aby tak było wszędzie, dla wszystkich, ale przyjrzyj się bliżej części „Wyzwanie zostało podniesione / pozostań ignorowane / dostosuj” i zadaj sobie pytanie, jak można je zrealizować. Zadaj sobie pytanie, jak długo może to potrwać w zależności od projektu i zespołu. Jeśli to zajmuje godzinę, czy jest to do przyjęcia? Co jeśli zajmie to dzień, tydzień lub ... miesiąc?

Widzisz, takie podejście typu wyzwanie i zignoruj ​​aż do rozwiązania może otworzyć szerokie drzwi do nadużyć, jeśli zostanie przedstawione jako przewodnik dla każdego projektu. „Tak, tak, słyszymy cię, zróbmy to, jak mówi przewodnik. Najpierw wypełnij ten formularz wyzwania i uzyskaj zgodę CEO / CFO / CTO; spodziewaj się, że zajmie to tydzień lub dwa. Następnie poczekaj, aż zaktualizujemy nasze kontrole kodu ; może to potrwać jeszcze tydzień lub dwa. Tymczasem upewnij się, że Twój krytyczny pod względem wydajności kod wymiotuje poprawnie sformatowane instrukcje rejestrowania przy każdym ruchu rejestru. ”

Nie mogę czytać w myślach autorów przewodnika, ale rozsądnie jest założyć, że chcieli uniknąć używania go do uzasadnienia bałaganu, jak opisano powyżej. Z tej perspektywy po prostu bezpieczniej jest jednoznacznie stwierdzić, że przewodnik nie zakłada żadnego egzekwowania - w ten sposób, choć niezgrabny, nadal pozwala na użycie go w dowolnie szerokim zakresie zespołów i projektów. Prawdopodobnie oczekuje się, że tak szeroki limit pozostawia bardziej dojrzałym i wydajnym zespołom możliwość rozsądnego zawężenia go bez szkody dla wydajności programistów.


Stosując się do konkretnego przypadku, pisząc dokument stylu kodowania dla zespołu i nie sprawdzając kodu, jeśli styl nie pasuje - myślę, że musisz dowiedzieć się, ile czasu może zająć programistom zakwestionowanie określonej reguły, zignorowanie jej, rozwiązane, i należy je zmienić lub odzyskać w zależności od rozdzielczości.

Jeśli wymyślisz sposób, aby ten proces działał bez wprowadzania wielu przeszkód do przepływu pracy programistycznej, to warto rozważyć sformalizowane i łatwe do śledzenia podejście wyzwanie / rozwiązanie zamiast chaotycznego „naruszaj, jeśli płaczesz wystarczająco głośno”.


Na marginesie chciałbym odnieść się do tego, co napisałeś w innym komentarzu : „Załóżmy, że styl kodowania jest idealny, a jeśli tak nie jest itd.”

To naprawdę niebezpieczne założenie. Złamałem mu nos (dwa razy! W jednym projekcie! Miałem ogromne doświadczenie i wyobrażałem sobie, że wiem o tym wszystko, idź na rysunek) i gorąco polecam, żebyś to rzucił. Bezpieczniej jest założyć, że przewodnik po stylu może zawierać błędy i podjąć wysiłek, aby zastanowić się, co zrobić w przypadku wykrycia takich błędów.

komar
źródło
Ujmijmy to w ten sposób: nasz zespół jest mały, a nasz proces nie obejmuje nikogo powyżej mojego szefa (który jest tylko liderem zespołu). Tak więc gry, które opisałeś powyżej, nie będą miały miejsca.
BЈовић
@ BЈовић w tym przypadku wyzwanie / rozwiązanie wygląda na wyraźnego zwycięzcę
komara
53

Umożliwienie ludziom ignorowania stylów kodowania z powodu osobistych preferencji jest złym pomysłem.

Cytat w twoim pytaniu wydaje się pozwalać programistom po prostu powiedzieć: „Nie zamierzam używać tego stylu, ponieważ go nie lubię”.

Jest to sprzeczne z całym celem, który polega na tym, że wszyscy członkowie zespołu robią to samo, aby zachować spójność i czytelność.

Zgadzam się, że stylowy dokument z takim stwierdzeniem jest prawdopodobnie bezcelowy.

Niemniej jednak wskazana jest pewna elastyczność w przestrzeganiu wytycznych dotyczących stylu:

  • Niewolnicze przestrzeganie wytycznych może uniemożliwić najlepszy sposób napisania określonego fragmentu kodu . Programiści powinni być w stanie zignorować wytyczne i udowodnić, że to, co zrobili, jest najlepszym, najbardziej czytelnym sposobem na osiągnięcie czegoś w tym przypadku.
  • Praca ze starszym kodem może wymagać elastyczności. Prawdopodobnie nie jest dobrym wykorzystaniem twojego czasu na zmianę stylu dużej istniejącej bazy kodu. Jeśli znacznie przepiszesz konkretną sekcję, możesz sformatować ją w preferowanym stylu. Jeśli jednak dokonasz niewielkiej zmiany, może być lepiej użyć istniejącego stylu kodu.
  • Oszukiwanie drobnych naruszeń przewodnika po stylu nie jest dobrym wykorzystaniem czasu. Przegląd kodu to dobry moment na podkreślenie każdego kodu, który jest znacznie niezgodny ze stylem zespołu. Jednak łapanie i naprawianie „błędów” w małym stylu może stać się zajęty pracą, która koncentruje się na złych rzeczach. Oczywiście, przegląd kodu nie powiedzie się, jeśli styl został rażąco zignorowany. Ale nie podoba mi się pomysł prowadzenia analizatora i wskazywania każdego źle umieszczonego nawiasu lub wcięcia, nie wspominając o tym, że ktoś zawiedzie kogoś na tej podstawie.

Podsumowując: zapewnij elastyczność w przestrzeganiu wytycznych dotyczących stylu, aby jak najlepiej spełnić potrzeby Twojego zespołu - ale nie z arbitralnych powodów, takich jak osobiste preferencje.


źródło
4
Lepiej byłoby powiedzieć, że jeśli istnieje dobry powód do łamania zasad, to je łam. Nie da się wymienić wszystkich dobrych powodów, ale sugeruję, że zwykłe osobiste preferencje nie są jednym. Przewodnik po stylu Python zawiera przemyślaną sekcję, w której należy łamać zasady.
Michael Hoffman
1
Zautomatyzowane sprawdzanie nitpick stylu może być przydatne: ale tylko w połączeniu z łatwym przyciskiem, aby zastosować wszystkie zalecane zmiany, i sposobem na powiedzenie „nie, z jakiegoś powodu złamałem tę zasadę”. W zależności od poziomu procesu może to być coś, co wymaga uzasadnienia w przeglądzie kodu / itp.
Dan Neely
1
Przestrzeganie stylu kodu jest tak ważne w mojej firmie, że PyLint egzekwuje standardy PEP8 w naszym kodzie w ramach naszego procesu budowania. Zatwierdzenia zmniejszające kondycję kodu są automatycznie odrzucane.
sethmlarson
1
Sprawdź wystarczającą liczbę zasad, aby uzyskać oczekiwany wynik. Zignoruj, zaktualizuj lub zrezygnuj z tych, które powodują problemy. Zastosuj odpowiednią ilość zdrowego rozsądku, aby wymienić szczęście i produktywność
Sean Houlihane
2
Z biegiem lat doszedłem do wniosku, że jedyną naprawdę przydatną częścią przewodników po stylu jest prawidłowe wcięcie kodu. Nie musisz nawet wciskać wszystkich w ten sam sposób - po prostu odpowiednio wcinaj. Przewodniki po stylach, które napisałem, zawierają na ogół nie więcej niż 3 reguły (zwykle tylko jedną regułę - odpowiednio wcięcia, aby nie wyglądały brzydko). Jeśli wejdę do sklepu i zobaczę, że kod wygląda już dobrze, nie polecam nawet stylu kodowania.
slebetman
13

Istnieją style stylu i przewodniki po stylach, które pomagają zwiększyć czytelność kodu. I istnieje czytelność, aby pomóc w złożoności.

Dlatego ostatecznie to, czy naruszyć (nazwałbym to adaptacją) styl kodowania dopasowany do twoich potrzeb organizacyjnych, sprowadza się do tego, jak bardzo pomaga to w zrozumieniu.

Pamiętajcie, wszystko i podkreślam, WSZYSTKO, od programowania OO, poprzez paradygmaty funkcjonalne, po różne modele współbieżności, istnieje wyłącznie po to, by pomagać ludziom radzić sobie ze złożonością.

Każdy głupiec może napisać kod zrozumiały dla komputera. Dobrzy programiści piszą kod, który ludzie mogą zrozumieć. - Martin Fowler, 2008

treecoder
źródło
Twoja odpowiedź nie jest jednoznaczna TAK lub NIE. Czy mówisz, że to jest naprawdę opcjonalne? Z resztą - zgadzam się.
BЈовић
3
Tak, jest opcjonalny, jeśli jego naruszenie naprawdę pomaga (pomyśl o starszym kodzie). Nie, nie tylko jeśli to zrobisz, ponieważ masz na to ochotę i nie przyniesie to żadnych rozsądnych korzyści. Mówię więc, że nic nie jest osadzone w kamieniu. Złam cokolwiek lub nic dla ostatecznego celu zmniejszenia złożoności.
treekoder
3
@ BЈовић Treekoder zasadniczo mówi, że źle się skupiłeś. Zasady nie są magią. Nie zamierzasz magicznie poprawiać wszystkiego, ściśle przestrzegając zestawu zasad. Musisz więc pomyśleć: „Co te zasady mają osiągnąć?” zamiast tego, i pracujesz w kierunku tego celu. Reguły mówią ci, jakie powinny być twoje domyślne; jeśli przestrzeganie zasad działa wbrew celowi, który zostały osiągnięte, to nie warto w tym przypadku podążać .
jpmc26
6

Czy styl kodowania w organizacjach jest czymś opcjonalnym?

Organizacje decydują się na style kodowania - nie ma wymogu posiadania tego na pierwszym miejscu.

Więc cytat, który czytasz, odnosi się do największego problemu, jaki widzę, dotyczącego kodowania „stylu” i prawdziwych „hakerów” supergwiazd - dołączasz nowego faceta, a on pisze kod, który zrzuci zombie i sprawi, że twoje stare serwery będą krzyczeć szybko. .. ale jego styl kodowania różni się od „akceptowanego stylu organizacyjnego”. Odmawia zmiany, a proces dostosowania się do jego konkretnego stylu będzie czasochłonny i kosztowny. Co teraz?

Większość super hakerów, których znam, ma ego tak duże, jak ich umiejętności, i chcą, aby organizacja się do nich dostosowała , a nie na odwrót. Może więc twój standard stylu kodowania powinien przypominać wytyczne dotyczące stylu kodowania , abyś mógł pozwolić temu zabójczemu hakerowi pisać płonący, szybki i niesamowity kod z pewną dewiacją stylu, ale upewnij się, że wszyscy inni to rozumieją, dopóki nie osiągną jego epickiego hakera status, muszą przestrzegać zasad (a nawet pomóc posprzątać po nim).

Oczywiście jest to koszmar zarządzania, ale zarządzanie ludźmi z branży technologicznej w ogóle przypomina trochę hodowanie kotów. Dlatego większość firm ma „wytyczne dotyczące stylu”, a nie „standardy stylu”. Kompilacje nie kończą się niepowodzeniem, a przeglądy kodu nie kończą się automatycznie z powodu naruszenia stylu we wszystkich firmach. Możesz zdecydować, jaki problem z zarządzaniem chcesz mieć - zezwalaj hakerom na supergwiazdę i miej „wytyczne” lub stracisz supergwiazdy i bardziej spójny styl kodu.

Jim
źródło
1
Re: „Większość super hakerów, których znam, ma ego tak duże, jak ich umiejętności”: Nie sądzę, że to prawda. Mogą wydawać się, że mają duże ego, ponieważ nie ulegają automatycznie opinii innych, ale te, które znam, są bardzo otwarte, jeśli potrafisz uzasadnić to, co robisz. (Chociaż nie jestem pewien, czy „ego” jest dokładnie przeciwieństwem konformizmu).
ruakh
2
„Większość super hakerów, których znam, ma ego tak duże, jak ich umiejętności, i chcą, aby organizacja się do nich dostosowała, a nie na odwrót”. Wątpię, aby jakikolwiek programista był tak dobry, że przewyższałby koszt takiego podejścia i wątpię, aby taki inżynier był zatrudniony bardzo długo.
Andy
1
„Kompilacje nie kończą się niepowodzeniem, a przeglądy kodu nie kończą się automatycznie z powodu naruszenia stylu we wszystkich firmach” Właściwie pracowałem dla firmy, która faktycznie poszła tą drogą, a wynik był obiektywnie lepszy niż przed luźnym egzekwowaniem standardy.
Andy
3

Czy zatem źle rozumiem coś z tego dokumentu i cytatu na początku tego pytania? Czy ludzie naprawdę mogą po prostu zignorować styl kodowania?

To zależy.

Miejsce, w którym aktualnie jestem, nie ma przewodnika po stylu i nie jest to wielka sprawa. Istnieją pewne niewielkie różnice między programistami, ale nie na tyle, aby wpłynąć na czytelność, wykrywalność lub spójność w jakikolwiek znaczący sposób. I mamy wystarczająco dużą grupę i wystarczająco silną kulturę, aby wymusić, że każdy nowy członek zespołu będzie zgodny (lub inaczej).

W poprzednich firmach szybko się rozwijaliśmy i mieliśmy ludzi, którzy nie znali języka i jego idiomów. W tej firmie napływ ludzi oznaczał, że nie było kultury, która wymuszałaby dobre pisanie. A ludzie, którzy nie znają języka, musieli dostosować wiele rzeczy. Tam zautomatyzowane warcaby stylu były najbardziej efektywny sposób dokonywania korekt i rzeczywiste napisany przewodnik był najlepszy sposób na przeszkolenie nowych ludzi w naszych oczekiwań.

Osobiście nie dbam o przewodniki po stylach, a tym bardziej o zautomatyzowane wymuszanie stylu. Jeśli dana osoba nie jest w stanie nawet przyswoić podstawowych idiomów, dlaczego zatrudniasz je jako programista? A jeśli są tak kiepskim graczem zespołowym, że ciągle będą pisać kod, z którym inni mają trudności w pracy, dlaczego w ogóle je zatrudniasz?

Telastyn
źródło
1
Aby odpowiedzieć na ostatnią część: decyzja kierownictwa o outsourcingu niektórych bibliotek była decyzją wysokiego kierownictwa. Mój zespół nie ma wpływu na to, kto tam pracuje. Ich styl kodowania jest zupełnie inny.
BЈовић
„Mamy wystarczająco dużą grupę i wystarczająco silną kulturę, aby wymusić, aby każdy nowy członek zespołu był w linii”. Brzmi, jakbyś miał przynajmniej jakieś wytyczne dotyczące stylu, po prostu nie są spisane?
@ dan1111 - na pewno? Mam na myśli, że prawdopodobnie sprowadzają się do tego, by „nie wkurzać kolegów z drużyny”, ale pytanie dotyczyło konkretnie dokumentów i publikacji.
Telastyn
2

To bardziej psychologiczna sztuczka zamiast dosłownej interpretacji tego, jak najlepiej zarządzać stylami kodowania. To sprawia, że ​​zespół / firma / menedżer / lider jest mniej autorytarny. Skoncentrowałbym się bardziej na wyjątkach sytuacyjnych niż osobistych. Niezależnie od dokumentu kodowego celem jest ułatwienie czytania. Mylący kod powinien zostać rozwiązany i zmieniony, jeśli zostanie to uznane za konieczne. Jest mnóstwo narzędzi do załatwiania drobnych, żmudnych rzeczy, więc używaj ich.

Istnieją wyjątki od każdej reguły. Daj ludziom „trochę” miejsca do poruszania się. Im mniej wszyscy są zaangażowani w akceptowanie zasad stylu kodowania (Witamy nowego faceta.), Tym bardziej są skłonni do walki. Wiele rzeczy jest czarno-białych, ale niektóre są otwarte na interpretację.

Celem powinno być zaangażowanie wszystkich w ducha wytycznych kodowania zamiast walki o każdy najmniejszy szczegół i interpretację.

Tak, nadejdzie czas, kiedy dokument w stylu kodowania nie ma sensu, a profesjonalni i dorośli programiści powinni znać różnicę.

JeffO
źródło
Sugerujesz więc, aby wdrożyć zadanie w Jenkins, które ma ponownie sformatować plik, gdy tylko ktoś coś sprawdzi? BTW „pokój wiggle” to chyba coś podobnego jak w tej odpowiedzi.
BЈовић
Jeśli załatwi sprawę i uniemożliwi godzinną dyskusję na temat czegoś, co można poprawić bez żadnego wysiłku, dlaczego nie. Odpowiedzi są podobne, ale myślę, że ma to więcej wspólnego z morale i nastawieniem zespołu. Możesz mieć anarchię bez kodowania standardów równie łatwo, jak mieć ich zbyt wiele.
JeffO
2

Na podstawie wprowadzonych przez Ciebie zmian dążysz do właściwego celu.

Korzystanie z przewodnika po stylach ma wiele zalet, ale dwie najważniejsze, moim zdaniem, to czytelność kodu między członkami zespołu oraz brak „głupich” zatwierdzeń (jak tylko biała spacja lub dodatkowe linie i tym podobne).

Aby osiągnąć cel, wybrany (lub stworzony) przewodnik po stylu powinien być prosty i łatwy do przestrzegania. Spróbuj naprawdę skoncentrować się na tym, czego potrzebujesz. Nikt nie lubi wracać i przepisywać dużej próbki kodu, aby uszczęśliwić linijkę. Ale wciąż może być jakaś korzyść.

Upewnij się, że członkowie zespołu zatwierdzą przewodnik po stylu. Trzymając ich przy tym, upewnijcie się, że się zgodzą, bo inaczej będzie to wieczna walka.

Upewnij się, że naruszenia stylu są „ostrzeżeniem”, a nie „niepowodzeniem”, pozwól człowiekowi zdecydować, czy naruszenie spełnia się z niepowodzeniem. Powód tego jest prosty. Wierzę w prosty przepływ pracy. Jeśli gdzieś w fazie „testowania” dojdzie do „niepowodzenia”, nie można przejść do produkcji. Używam jest dla bezpieczeństwa. Nawet poprawki muszą przejść przez fazę testowania (choć krótszą). Czy naprawdę możesz powiedzieć, że nie popchniesz tej krytycznej poprawki do produkcji, ponieważ ktoś użył „zamiast”? Co powiesz na użycie pętli for zamiast każdej? Co, jeśli pętla for ma jakieś ulepszenia w stosunku do każdego? są decyzje, których maszyna (linter) nie może podjąć, więc upewnij się, że masz człowieka, oceniaj ostrzeżenie, a nie maszyna rzuci awarię.

Jeśli chodzi o ignorowanie przewodnika po stylach, będziesz musiał to oceniać indywidualnie dla każdego przypadku. Upewnij się, że „odchylenie” ma prawdziwy powód. Oni przyjdą. Zadaniem recenzentów jest upewnienie się, że istnieje dobry powód odchylenia, a nie trywialny.

Coteyr
źródło
0

Myślę, że nastrojowa muzyka polega na tym, że jeśli przyjęta jest mądrość, że standardy kodowania są nieprawidłowe lub niekompletne, to mniejszym złem jest naciskanie, jeśli deweloperzy są zgodni, a nie przejść przez żmudny proces uzyskania dokument zmieniony i ponownie sprawdzony.

Należy również zauważyć, że standardowe zasady egzekwowania kodu z przeszłości nie są zwykle takie, jak się teraz robi.

W dawnych czasach po prostu trzymałeś książkę na końcu biurka programisty i cytowałeś rozdział i werset, dlaczego jego kod narusza sekcję 34.5.5767.

Mamy teraz narzędzia do analizy kodu statycznego i auto dokumentacji, które zabierają wiele kłopotów ze standardami kodu.

Jeśli to wszystko nie powiedzie się, nadal możesz przekazać go z powrotem programistom, podnieść w recenzji kodu lub po prostu zmienić samodzielnie, jeśli masz na to ochotę.

Robbie Dee
źródło
Załóżmy, że styl kodowania jest idealny, a jeśli tak nie jest - ludzie mogą go zmienić. Czy ludzie nawet w tym przypadku mogą to zignorować?
BЈовић
Trudno powiedzieć - zwłaszcza jeśli nie ma ogólnego konsensusu. Wydaje mi się, że w grę wchodzą tutaj starszeństwo programistów i / lub mediacja ...
Robbie Dee
0

Twoje pytanie dotyczy pogodzenia dwóch cytatów. Myślę, że to, co napisał treecoder, ogólnie odpowiada na twoje pytanie. Jest to twoja naczelna zasada przy pisaniu wytycznych dotyczących stylu.

Mówiąc dokładniej, ponieważ jesteś odpowiedzialny za ustalenie wytycznych dotyczących stylu kodowania (to moje założenie, ponieważ jesteś pisarzem dokumentów), możesz zdecydować, co jest opcjonalne, czy nie, i do jakiego stopnia pozwolisz na elastyczność w swoim osobistym stylu zespół. W razie potrzeby otrzymasz informację zwrotną. Ale kiedy wytyczne zostaną wprowadzone, trzymaj się ich.

Możesz więc pogodzić dwie pozorne sprzeczności w ten sposób:

Pomyśl o pierwszym cytacie skierowanym do ciebie jako decydenta stylu, zanim dokument z wytycznymi będzie kompletny. Jeśli określony standard stylu nie działa w Twoim zespole, liczy się to jako „silny osobisty sprzeciw”, a twoje wytyczne to odzwierciedlą.

Pomyśl o drugim cytacie zaadresowanym do twojego zespołu po zakończeniu dokumentu. Po ustaleniu wytycznych dla zespołu i napisaniu dokumentu ważne jest, aby wszyscy programiści w zespole przestrzegali wytycznych dotyczących stylu.

Price Jones
źródło
0

Ludzie nie mają większego znaczenia, o ile mają styl kodowania. Jeśli firma nalega na styl kodowania, mocno naciska na palce około 49% swoich programistów.

Problem polega na tym, że wielu programistów nie ma nic przeciwko dostosowywaniu swojego stylu kodowania do jakiegoś powszechnego standardu w firmie, ale bardzo im przeszkadzają ci, którzy są lepsi (lub po prostu bardziej dbają o) politykę firmy.

Oznacza to, że stworzenie standardu stylu kodowania może być ogromną stratą czasu, źródłem niekończących się kłótni, przyczyną nieskończonej niechęci i ogólnie ogromnym marnotrawstwem czasu i energii.

gnasher729
źródło
0

Od lat zmagam się ze wskazówkami dotyczącymi stylu kodu, podobnie jak wielu innych na tym forum. Obejmuje to zarówno przewodniki stylu walki, które uważam za wstrętne, jak i próby zachęcania innych do korzystania z przewodników stylu, aby ograniczyć ich styl, aby był bardziej czytelny jako całość.

Korporacja korzysta ze wspólnego standardu kodowania. Przy opracowywaniu oprogramowania dla firmy należy wziąć pod uwagę wiele ważnych rzeczy, takich jak szkolenie nowych programistów w zakresie pobierania kodu poprzedniej generacji. Pisząc kod, nie zawsze o tym myślisz. W rzeczywistości wielu programistów decyduje się nawet nie brać pod uwagę, w jaki sposób inni mogą chcieć podejść do kodu 5 lub 10 lat po ich odejściu. Przewodnik po stylu kodowania jest sposobem, w jaki korporacja może skoncentrować się na tych 5 i 10-letnich celach, ułatwiając programistom pracę w większym zakresie.

Z drugiej strony przewodniki stylu kodowania są notorycznie niedoskonałe, ponieważ nie jest możliwe opracowanie idealnego stylu kodowania i zapisanie go. Właściwie zaczynasz spotykać się z zabawnymi narożnymi przypadkami, w których matematyczne dowody zaczynają zawodzić, jeśli próbujesz je doskonalić. Wiemy więc, że przewodniki po stylu kodowania są niedoskonałe. Mogą nie koncentrować się idealnie na tym, czego potrzebujemy od 5 do 10 lat.

Gdybyśmy „wymusili” styl kodowania, poświęcilibyśmy wartość teraz dla wartości później. Można by to nazwać „inwestycją”, gdybyśmy byli pewni, że uzyskamy zwrot z naszych wysiłków, ale każdy programista, który pracował ze źle napisanym przewodnikiem po stylu kodowania, może zaświadczyć, że te zyski z „czytelności” są drogo opłacane przez rozpraszających programistów z dala od ich kodu. Z mojego doświadczenia wynika, że ​​istnieje bardzo niewielka liczba przypadków, w których wymuszone style kodowania mają wartość, zwykle w oprogramowaniu dla wyjątkowych lodowców, gdzie oprogramowanie może być używane przez 30 lub 40 lat!

Zamiast tego uważam, że najskuteczniejsze jest potraktowanie przewodnika po stylu kodowania jako manifestu: „Uważamy, że jest to najlepszy styl kodowania dla naszej grupy”. To kilka płynnych myśli udokumentowanych słowami. Słowo „uwierz” jest ważne: jeśli zmieniają się przekonania, przewodniki stylu kodowania powinny się z nim zmieniać.

Właśnie tutaj pojawia się cytat z „silnego osobistego sprzeciwu”. W świecie, który nazwałbym „doskonałym”, piszesz kod, który uważasz za najlepszy, i żyjesz z konsekwencjami. Często lubimy przeoczyć „miękkie” konsekwencje podczas programowania, ale w tym przypadku są one ważne. Nie mam problemu z tym, że piszesz we własnym stylu, jeśli nie masz nic przeciwko, żebym nigdy nie dawał ci niczego ważnego i długotrwałego w rozwoju.

Pomyśl o całym systemie jak o polu golfowym. Styl kodowania toruje łatwą ścieżkę na torze wodnym. Jeśli utrzymasz standard kodowania, upewnimy się, że życie jest tak łatwe, jak to tylko możliwe. Im bardziej popadniesz w zera, stosując własne standardy kodowania, tym bardziej będziesz musiał udowodnić swoją wartość zespołowi.

Jeśli przyjdę w poniedziałek rano i stwierdzę, że spędziłeś cały weekend na rozwiązywaniu problemu, nad którym martwimy się od roku, i zrobiłeś to we własnym „specjalnym” standardzie kodowania, nie powiem ci napraw to. Powiem ci, żebyś wziął prysznic. Jeśli Twój „specjalny” standard kodowania jest wyjątkowo „specjalny”, mógłbym nawet zasugerować programistom poziomu podstawowego „przejrzenie” kodu w celu rozpowszechnienia wiedzy o tym, jak działa Twój kod i od razu wspomnieć, że jeśli coś wydaje się trudne do odczytania, powinien on / ona Posprzątaj to. Dostarczyłeś firmie wystarczającą wartość w ten weekend, że nie warto nawet wspominać o rażących naruszeniach standardów kodowania, które popełniłeś.

Oczywiście ta metafora golfa nie ma sobie równych. Jeśli poproszę cię o wykonanie zadania rangi i pliku, być może dodając nowe pola do jakiejś formy, a ty zdecydujesz się skorzystać z okazji, aby zmienić cały kod wypełniający formularz, aby pasował do twojego określonego stylu, używając kilku podejrzanych znaków, takich jak makra definiujące i jakąś okropną technikę meta-programowania szablonów, której właśnie nauczyłeś się podczas wymiany stosów, zostaniesz poproszony o powrót i naprawienie tego. Zdecydowałeś się działać, to są konsekwencje.

( Oświadczenie: całkowicie napisałem implementację is_base_ofrozwiązania trudnego zadania i zarabiałem na każde piekło, które dostałem za to od starszych programistów. Mówię, że było warto. Nadal dostaję radosny bąbel śmiechu za każdym razem spojrzenie na sposób, że kliny wzorzec jak 7 niepowiązanych części C ++ specyfikacji razem zrobić coś niezwykłego. Weź, ty starszych programistów! to jest to, co masz do zabrania boostna tego konkretnego projektu! )

Cort Ammon - Przywróć Monikę
źródło
-1

Najlepiej wydaje się korzystać ze zautomatyzowanego formatera kodu, który jest wbudowaną funkcją prawie każdego środowiska IDE pochodzenia i powinien istnieć dla prawie każdego mniej lub bardziej rozpowszechnionego języka programowania. To po cichu eliminuje wiele niepotrzebnej pracy i tarcia podczas przeglądów kodu.

W pełni uzasadnione jest wymaganie od wszystkich programistów opracowania nawyku stosowania formatera do nowo utworzonej sekcji kodu.

Najgorsze, co możesz zrobić, to zażądać niestandardowego stylu kodowania, którego nie obsługuje istniejący formater kodu.

W stosunkowo rzadkich przypadkach niektóre sekcje mogą być sformatowane inaczej, jeśli formatyzator robi to naprawdę okropnie, ale zwykle lepiej jest dopasować formatyzator, aby wszyscy lepiej formatowali.

Może to być kilka użytecznych reguł, których formater nie może obsłużyć (na przykład jak nazwać zmienne), ale jeśli tylko te pozostaną, można je stosunkowo łatwo zastosować.

h22
źródło
niestety nie odpowiada to bezpośrednio na pytanie . W każdym razie +1, za dobrą radę i praktyczne rozwiązanie bezsensownego podejścia do stylu. Skonfiguruj formatyzator i gotowe.
Bruno Schäpper
Nadal uważam, że posiadanie tylko formatera jest najlepszym rozwiązaniem problemu ze stylem kodowania, ponieważ zapewnia on spójny styl i eliminuje możliwość mobbingu bez potrzeby, aby wszyscy nowi programiści nieprawidłowo umieszczali spacje i końce linii. Widziałem, że działa to naprawdę dobrze w rzeczywistych sytuacjach, dlatego polecam to rozwiązanie i nie usuwam pytania.
h22
-1

Rzeczywiste rozwiązanie (nie tylko filozofia)

Zezwalaj na komentarze kodu, aby zastąpiły podszywanie się i kompiluj listy tych komentarzy, jeśli chcesz (jak to często bywa z komentarzami do zrobienia)

Daj swoim programistom możliwość pracy poza konwencją w sposób wyraźny i uzasadniony - a podczas przeglądów kodu przez ludzi może być sprawdzany w razie potrzeby.

Adam Tolley
źródło