Co robisz, gdy pracujesz z kimś, kto ma tendencję do pisania złym stylistycznie kodem? Kod, o którym mówię, jest zwykle poprawny technicznie, ma rozsądną strukturę, a nawet może być algorytmicznie elegancki, ale po prostu wygląda brzydko . Mamy:
- Mieszanina różnych konwencji nazewnictwa i tytuły (
underscore_style
icamelCase
iUpperCamel
iCAPS
wszystkie zastosowane mniej lub bardziej losowo do różnych zmiennych w tej samej funkcji) - Dziwne i niespójne odstępy, np
Functioncall (arg1 ,arg2,arg3 );
- Wiele błędnie napisanych słów w komentarzach i nazwach zmiennych
Mamy dobry system sprawdzania kodu, w którym pracuję, więc musimy przyjrzeć się i naprawić najgorsze rzeczy. Jednak wysyłanie recenzji kodu, która składa się z 50 wierszy „Dodaj spację, jest naprawdę błahostką. Poprawnie przeliteruj„ itarator ”. Zmień tę wielkość liter. Itd.”
Jak zachęciłbyś tę osobę do większej ostrożności i zgodności z tego rodzaju szczegółami?
coding-style
code-quality
teamwork
code-reviews
JSB ձոգչ
źródło
źródło
Odpowiedzi:
Uzgodnij konwencję kodowania
Nawet jeśli jest to jeden pager. Sugeruję, aby cały zespół usiadł i wszyscy zgodzili się na podstawową roboczą konwencję kodowania, z której może korzystać cały zespół.
źródło
Myślę, że po prostu musisz robić to, co robisz. Miej jasny zestaw wytycznych dotyczących kodowania i egzekwuj je podczas przeglądów kodu. Jeśli deweloper otrzyma 50 lub 100 wierszy „Dodaj miejsce tutaj” i „Poprawnie iterator pisowni” za każdym razem, gdy próbuje coś sprawdzić, a tak naprawdę nie jest w stanie się zalogować, zanim wszystkie te zostaną naprawione, ostatecznie Będę musiał zacząć pisać czystszy kod, aby uniknąć kłopotów.
Myślę, że jeśli naprawisz te rzeczy sam, jak sugerował NimChimpsky, będziesz sprzątał po tej osobie na zawsze.
źródło
Wzywam BS wszystkich, którzy twierdzą, że błędy w pisowni nazw zmiennych i formatowanie nie mają znaczenia. Oczywiście przeczytali tylko własny kod. I zauważ to słowo tutaj - przeczytaj. Wyobraź sobie, że czytasz książkę z dużą ilością błędów ortograficznych, niepoprawnie sformatowanego formatowania, niespójnych odstępów między wierszami i różnych innych lenistw rozpowszechnionych w wielu kodach źródłowych. Byłoby to nudne.
Dla zawodu, w którym składnia musi być w 100% poprawna, nie ma po prostu usprawiedliwienia dla żadnego prawdziwego programisty, aby nie mieć czystego, spójnego stylu kodu. Wszystko inne to niechlujstwo i lenistwo. Zawsze kwestionuję poprawność sformatowanego kodu w implementacji.
źródło
Zmieniłbym to sam, a następnie dodałem uprzejmy komentarz w kodzie.
zakłada to, że istnieje już przewodnik po stylu, jak podano w pytaniu:
Tak więc moja sugestia jest ostatecznością. Uważam, że równie szybko mogę ją zmienić i zostawić komentarz, jak wysłać wiadomość e-mail lub cokolwiek innego.
źródło
Myślę, że konwencje, takie jak nazywanie klas i zmiennych, są ważne i powinny być przestrzegane, również elegancki i wydajny kod, ale ryzykując wielokrotnym odrzuceniem mojej odpowiedzi, muszę powiedzieć, że ogólnie paradygmat „ładnego kodu”, który jest bardzo popychany jest w IMHO bardzo przereklamowany.
Po pierwsze, programista, który go napisał, będzie musiał przede wszystkim go utrzymać, a jeśli kiedykolwiek trafi go autobus, a inny programista nie będzie w stanie zrozumieć, jak to działa, ponieważ kod nie jest „ładny”, powiedziałbym, że drugi programista i tak nie jest zbyt dobry. Istnieje wiele automatycznych formaterów / upiększaczy, więc każdy może użyć ich do upiększenia kodu, jeśli to konieczne, bez marnowania czasu będąc „w przepływie” / „w strefie”.
Należy pamiętać, że nie zalecam tutaj kodowania w stylu spaghetti / kowboja, w rzeczywistości widziałem bardzo ładnie sformatowany kod spaghetti (ciała funkcji obejmujące 4-5 ekranów, zmienne globalne rozproszone wokół różnych plików kodu źródłowego, ogólnie złe nazwy) itp.).
źródło
Jeden z moich kolegów pisze HTML w taki sposób, że skóra mi się czołga. Wyobraź sobie mój html ładny i uporządkowany z dwoma wcięciami spacji, zhakowanymi na kawałki tagami dodanymi na końcu mojego, które kończą się na tej samej linii lub na następnej, jak jakiś pijany, który musi objąć cię ramieniem, aby stać. Nowe linie rzadko są wcięte, ale jeśli tak, to jestem pewien, że w pewnej części galaktyki jest jakaś chaotyczna czarna dziura wypluwająca irracjonalne wartości temperatury w taki sposób, że jej cyfry odzwierciedlają liczbę spacji lub tabulatorów używanych w takim wcięciu przez tę kobietę. Jeśli będę miał szczęście, zobaczę tag wejściowy, który jest zamknięty za pomocą „
</input>
”. Całkowity koszmar, który możesz zrozumieć.Wydaje się, że nikt też tego nie rozumie, widząc, jak dla większości wyższych tutaj, zorganizowany kod lub niezorganizowany kod jest dla nich różnicą między naszym nakładaniem szwajcarskiego sera lub amerykańskiego sera na nasze kanapki, co oznacza, że naprawdę mogliby się mniej przejmować. Zacząłem się przesuwać, ponieważ byłem zestresowany innym projektem i myślę, że zaczęła zdawać sobie sprawę, jak trudno było zrozumieć taki kod, zanim chciała poprawić. Moją radą byłoby wykazanie, dlaczego lepiej stylizować kod, niż po prostu poinstruować go, aby to zrobił.
źródło
Ciesz się, że masz to wszystko. Większość programistów da ci pierwszą rzecz na tej liście. Myślę, że zmienne nazewnictwo i odstępy to najmniej ważna rzecz, o którą należy się martwić.
źródło
Wygląda na to, że musisz skonfigurować i zaakceptować konwencję stylów. Jeśli tego nie zrobisz, będziesz mieć biblioteki z 3 wcięciami spacji, inne z 4, niektóre używające Camel Case i inne wykorzystujące underscore_case.
źródło
Czy zmiany, które chcesz wprowadzić do swoich osobistych preferencji, czy też masz jakiś rzeczywisty standard do naśladowania? Jeśli nie masz rzeczywistego standardu, nie rób tego. Najpierw ustal standard. Następnie można uzyskać oprogramowanie, które można ustawić tak, aby kod był refaktoryzowany do ustawień standadrd (przynajmniej niektóre rzeczy).
Jeśli masz standard, zacznij go egzekwować podczas przeglądania kodu. Nie ma sensu mieć standardu, jeśli nie egzekwujesz go podczas przeglądania kodu. Będzie to oznaczało dużo dodatkowej pracy w utrzymaniu, ponieważ ludzie będą musieli naprawić stary kod, który nie spełniał normalnie normalnie, gdy go dotknie.
Nawet bez standardu nalegaj na poprawianie błędów w pisowni w nazwach zmiennych (nie martwiłbym się szczególnie komentarzami), ponieważ doprowadzą one wszystkich do szaleństwa na zawsze.
źródło
Standardy kodowania muszą zostać zidentyfikowane, aby każdy wiedział, czym są, a następnie należy je egzekwować. Nieprzestrzeganie zasad powinno mieć konsekwencje.
Oto rzeczy, które powinny stanowić zachętę:
Jeśli ta osoba albo nie musi się o to martwić, ponieważ nikt nie egzekwuje twoich zasad lub nie obchodzi go, czy są bezproduktywne (i nikt nic z tym nie robi), niewiele możesz na to poradzić.
źródło
Kusiłbym cię, aby zasugerować prywatny czat i sprawdzić, czy oboje moglibyście znaleźć podstawową przyczynę:
Czy współpracownik się spieszy, a ponieważ ktoś chciał wczoraj kodu, stara się, aby coś działało tak szybko, jak to możliwe? Może to być okazja do poinformowania tej osoby, aby w pracy bardziej koncentrowała się na jakości niż szybkości. Mantra typu „Nie spiesz się” może być przydatna, jeśli nie przynosi efektu przeciwnego do zamierzonego.
Jak dana osoba postrzega swoją pracę? Jeśli masz poczucie dumy, możesz mieć kąt, który możesz wykorzystać, aby poprawić swoją postawę. Jeśli jest to praca, która płaci rachunki, wprowadzenie zmian może być o wiele trudniejsze. Czy wiedzą, że nie wykonują świetnej roboty, ale są tak blisko?
Czy ta osoba nie zgadza się z konwencjami i próbuje kodować w proteście? Jeśli tak, to możesz mieć duży problem, ale warto dowiedzieć się, czy tak jest, czy osoba ta jest po prostu leniwa? Jakie rodzaje motywacji mogą być przydatne tutaj, np. Czy możesz odwołać się do chciwości, dumy lub innej wady, aby skłonić osobę do poprawy. Jest to podstępne, ale być może skuteczne, jeśli próba trasy miłego faceta nie prowadzi do nikąd.
Jak zdobywać przyjaciół i wpływać na ludzi Ludzie mają kilka sugestii, jeśli chodzi o przekonywanie, które może zadziałać, takie jak chwalenie ulepszeń i zapewnianie dobrej reputacji.
Jeśli chodzi o to, dlaczego należy to zrobić prywatnie, oto kilka powodów:
Istnieje duża szansa na upokorzenie, krytykę lub inne nieprzyjemności, które lepiej trzymać za drzwiami niż pozostawić na otwartej przestrzeni, gdzie ktoś może poczuć, że ich charakter jest zamordowany.
Chcesz zachęcić tę inną osobę do otwarcia się. Wyzwanie polega na tym, że niektórzy ludzie są tak strzeżeni, że ich zburzenie może zająć dużo czasu.
Jeśli to możliwe, proponuję spróbować zrobić to trochę poza biurem. Wyjdź na lunch, wybierz się na spacer lub zrób coś, aby zmienić otoczenie na tyle, aby dana osoba mogła czuć się bardziej komfortowo. Może to być wyzwanie i wymaga znajomości osoby, ale chodzi tutaj o to, że w biurze niektórzy ludzie będą nosić maskę roboczą, która prawdopodobnie nie będzie tutaj pomocna.
Przygotuj się na rozmowę, która stanie się raczej gorąca lub brzydka, ale może to być dobry znak, jeśli możesz zaangażować drugą osobę i prowadzić dobry dialog. Niektórzy ludzie lubią trzymać rzeczy na otwartej przestrzeni, a inni mogą preferować bardziej subtelne sposoby ich wykonania. Kluczem do sukcesu jest upewnienie się, że słuchasz drugiej osoby na tyle, by wczuwać się w nią i starać się zrozumieć jej stronę.
źródło
Mamy test JUnit, który wyszukuje problemy z formatowaniem. Działa jako część kompilacji. Nieustannie się miewam, pomijając spację między nawiasami otwierającymi if, while lub for. Nasz kod jest jednak konsekwentnie formatowany.
http://code.google.com/p/kawala/wiki/BadCodeSnippetsRunner
źródło
Upiększanie kodu, takie jak brak kontroli, będzie w stanie rozwiązać niektóre z twoich problemów. Jeśli jesteś gotowy za to zapłacić, istnieje oprogramowanie wysokiego poziomu, które osadza reguły w samym kodzie źródłowym, takie jak Parasoft . Parasoft nakłada obowiązek pisania kodu w jednolitym stylu. Możesz także osadzić własne zasady. Gdy takie narzędzia są używane, programiści są zmuszeni do stosowania jednolitego stylu. A po jakimś czasie przyzwyczają się do tego.
źródło
Jeśli używasz Eclipse, włącz opcję Zapisz akcje dla edytorów Java i powiedz wszystkim, aby z niej korzystali. To rozwiązuje problemy z formatowaniem przy każdym zapisie, ale nie naprawia złych wielkich liter. Może to być bardzo pomocne!
źródło
Jak trudno jest przestrzegać konwencji stylu? Rozumiem błędy ortograficzne, ale reszta jest wskaźnikiem niechlujnego myślenia i kodowania. Powiedz osobie, że musi być bardziej konsekwentna, jeśli chodzi o kod produkcyjny, ponieważ nie tylko oni będą na niego patrzeć. Pisanie kodu produkcyjnego w niespójnym stylu jest po prostu niegrzeczne, samolubne i nierozważne.
źródło
LOL. Absolutnie nienawidzisz mojego kodu. Nie mogę przeliterować, żeby uratować mi życie i nie obchodzi mnie to.
Ale wiem, że niektórzy ludzie tak naprawdę dbają o te rzeczy.
Proponuję zwolnić osobę, która pisze ten brzydki kod, jeśli się nie zmieni, a następnie znajdź kogoś, kto sprawi, że będzie naprawdę ładna, i mam nadzieję, że może napisać kod
a jeśli nie mogą, to przynajmniej możesz pokazać klientowi zepsuty ładny kod i go sprzedać!
Ale poważnie. Najpierw skoncentruj się na naprawdę ważnych rzeczach. Jeśli nie możesz znaleźć dobrego, solidnego powodu poza „szkodzi mojej delikatnej wrażliwości”, zignoruj to na razie. Jeśli jest to rzeczywiście ważne, usiądź z osobą i przekonaj ją o tym znaczeniu. Rzeczy takie jak standardy, które ułatwiają odróżnienie poziomu klasy, poziomu metody, wspólnych, stałych zmiennych, mają znaczenie. Jeśli dany programista w ogóle dba o swój zawód, zrozumie i spróbuje zrobić właściwą rzecz.
źródło
Moim rozwiązaniem w przypadku zasobów zleconych na zewnątrz, które nie dały &% $ # na temat formowania (lub łatwych do uniknięcia błędów w tym zakresie) było wymuszenie tego przez serwer kompilacji. Utworzyłem zadanie serwera CI, które uruchamiało się co noc, sprawdzało kod, uruchamiało Jalopy i findbugs, a następnie ponownie sprawdzało kod. Gdy inny zespół dowiedział się, że niestosowanie standardowych konwencji kodu utrudniłoby mu pracę, zaczęli używać swoich IDE w celu utrzymania standardowego formatu.
źródło