Czy młody programista może narzucać pewne standardy w pisaniu kodu?

0

Czesc, pisze aktualnie aplikacje, a wlasciwie dodaje do niej nowy ficzer i po obejrzeniu kodu stwierdzam, ze jest naprawde zle napisany. Mimo, ze doswiadczenie mam niewielkie, to widac to golym okiem, ze ten kod jest zly, a dodawanie nowych rzeczy do nich wymaga pisania w tym stylu, czyli moim zdaniem bardzo zlym stylem. Aplikacja jest w Angularze i wystepuja takie wywolania, np. jak :

 $scope.$parent.$parent.$parent.$parent ... 

pomijam juz ze wystepuje $scope, ale to $parent(n) to nie wyglada ciekawie. Przykladow jest jeszcze kilka, ale nie ma sensu ich tutaj przytaczac.

Co o tym myslicie, warto sie odezwac i powiedziec, zeby zrobic refactoring tego? + jest taki, ze to nie jest duza aplikacja, bo wlasciwie jest to modul do aplikacji, wiec kodu tez duzo nie ma, idzie sie polapac ogolnie, ale przez to jak jest to stworzone wystepuja troche mindfucki.

0

Zgłoś do TL i tyle.

6

albo do PM, czy TL, a potem idź do WC, bo jakiś SD może mieć OB

0

albo do PM, czy TL, a potem idź do WC, bo jakiś SD może mieć OB
haha, wlasnie tego bym nie chcial :D

0

Raczej nie ruszaj tego sam bez konsultacji jeśli nie czujesz się pewnie w kodzie. Ale jeśli uważasz, że dany fragment jest słaby i masz propozycję jak to można naprawić to w zespole, który jest chociaż trochę przejęty jakością nie powinno być problemu ze zgłoszeniem tego. Pogadaj z kimś kto dłużej siedzi w projekcie i powiedz co Ci się nie podoba. Może być tak, że był jakiś powód takiej konstrukcji (dziwny bug, koszmarny dedlajn, itp) o którym nie wiesz. Jeśli zasugerujesz jakieś rozwiązanie to nie widzę problemu żeby przynajmniej dodać taska na zmiany w tym fragmencie, którego albo sam potem będziesz mógł wziąć albo ktoś bardziej doświadczony się tym zajmie w wolnej chwili.

Oczywiście to wszystko dotyczy przypadku kiedy nie jest to Janusz-soft gdzie jedyne pojęcia to szybko i tanio :P Jeśli terminy by nie goniły i wszystko byłoby robione na czas to dostając do review kod, w którym ktoś przy okazji uprzątnął kupę w kodzie wysłałbym w odpowiedzi lajka za dobrą robotę (oczywiście jeśli ta robota nie wprowadzałaby tony nowych dziwactw :P ).

0

Mimo, ze doswiadczenie mam niewielkie, to widac to golym okiem, ze ten kod jest zly,

przypuszczalnie ten, kto to napisał też doświadczenie ma niewielkie (chyba, że to chwilowe zaćmienie umysłu albo hack, którego ktoś zapomniał usunąć czy dodać komentarza TODO dla potomnych - czasem nawet dobrzy programiści piszą zły kod - ale jeśli takich kwiatków jest więcej, to coś tu nie gra)

pomijam juz ze wystepuje $scope, ale to $parent(n) to nie wyglada ciekawie. Przykladow jest jeszcze kilka, ale nie ma sensu ich tutaj przytaczac.

Generalnie w angularze jest coś takiego jak $rootScope, jeśli ktoś chce robić zmienne globalne.
Chyba, że to faktycznie ma być odwołanie się do konkretnego parenta, ale jeśli tak, to wydaje się, że jest to pisane przez niedoświadczonego programistę, który nie ogarnia idei enkapsulacji danych, i podstaw Angulara i nie wie, że dane z parentów można przekazywać w atrybutach, ew. że można zrobić choćby jakiś serwis.

Pisanie w ten sposób, że każdy obiekt wie wszystko o danych innych obiektów (albo co gorsza modyfikuje te dane) zwykle kończy się tym, że aplikacja jest jak domek z kart - ruszysz coś w jednym pliku, rozwali się coś w kompletnie innym losowym miejscu.

Poza tym jest takie fajne prawo Demeter: https://pl.wikipedia.org/wiki/Prawo_Demeter

Co o tym myslicie, warto sie odezwac i powiedziec, zeby zrobic refactoring tego? + jest taki, ze to nie jest duza aplikacja, bo wlasciwie jest to modul do aplikacji, wiec kodu tez duzo nie ma, idzie sie polapac ogolnie, ale przez to jak jest to stworzone wystepuja troche mindfucki.

To też, chociaż generalnie drobny refactoring można robić też przy pisaniu nowych rzeczy, mimochodem (oczywiście wtedy ryzykujesz, że coś zepsujesz - dlatego do refaktoru dobrze mieć napisane testy).

1

[...] ten kod jest zly, a dodawanie nowych rzeczy do nich wymaga pisania w tym stylu, czyli moim zdaniem bardzo zlym stylem. Aplikacja jest w Angularze [...]

Nic dodać, nic ująć :P

A tak na poważnie to zgłoś, dobry zespół powinien być merytokratyczny, nie ważne ile masz doświadczenia, ważne, że mówisz z sensem (oczywiście Ci bardziej doświadczeni mają zdecydowanie częściej rację). Oczywiście nie możesz też zgłosić tego w sposób "ten fragment kodu to g$%^o k#&@a!", bardziej w stylu pytania "czy moglibyśmy uprościć ten fragmnet, bo wydaje mi się, że można to zrobić czytelniej". Swoją drogą zastanawiam sie kto robił tam code review, jak to wyglada u Ciebie w firmie?

0

przypuszczalnie ten, kto to napisał też doświadczenie ma niewielkie (chyba, że to chwilowe zaćmienie umysłu albo hack, którego ktoś zapomniał usunąć czy dodać komentarza TODO dla potomnych - czasem nawet dobrzy programiści piszą zły kod - ale jeśli takich kwiatków jest więcej, to coś tu nie gra)

niestety takich 'kwiatow' jest wiecej. Ja rozumiem ze jest to maly modul, ale tutaj nie ma zadnych serwisow/fabryk, zeby miec jedna instancje obiektu i do niej sie odwolowyac, jesli potrzebujemy jakiejs funkcji, a nie $scope.$parent(n) razy, zeby dostac sie do glownego kontrollera.

Jest takze mieszanie kontrollerow w template i w dyrektywach, ja przywyklem do pisania isolate scope, dzieki czemu w kontrolerze Y mamy takie myczki jak $scope.$parent.$parent.$index. Pomijajac, to ze nie wiedziec czemu ktos ( celowo ? ) napisal funkcje przypisujac do zmiennej zamiast do $scope, zeby pewnie wymusic prywatnosc metod, ale ta funkcja jest bardzo wazna i teraz nawet za cholere sie do niej nie dostane przez magiczne $parent(n).

Jak na angulara to uwazam ze jest tam za duzo problemow ktore moga istniec w jQuery, ale to jest Angular, no pany. Pomyslow to mam bardzo duzo, ale musialbym to przerobic z kims kto to pisal, zeby sie cos nagle nie je*lo ze tak powiem.

Powiedzcie mi, czy ten kod nie powinien przejsc refactoring skoro tak wyglada? Ja mam dopiero 2 msc doswiadczenia, ale takie podstawowe rzeczy to wiem.

Generalnie w angularze jest coś takiego jak $rootScope, jeśli ktoś chce robić zmienne globalne.

Ja nawet tego staram sie nie praktykowac, musialby to byc ARCY MEGA wazny obiekt, zebym go tam umiescil, ale stan obiektu jakiegos elementu trzymalbym w service, a tutaj tego nie ma i tez sie zle czyta ten kod potem.

To też, chociaż generalnie drobny refactoring można robić też przy pisaniu nowych rzeczy, mimochodem (oczywiście wtedy ryzykujesz, że coś zepsujesz - dlatego do refaktoru dobrze mieć napisane testy).

Tak dodalem nowy ficzer z tym okropnym $scope.$paren(n) do 3 bo boje sie ze jak cos rusze inaczej to pierdyknie gdzie indziej, a testow tego modulu chyba nie ma..

A tak na poważnie to zgłoś, dobry zespół powinien być merytokratyczny, nie ważne ile masz doświadczenia, ważne, że mówisz z sensem
pracuje dopiero 2 miesiace i jest mi nie ukrywam troche glupio mowic, ze cos mi nie pasuje. Nie znam historii tej aplikacji, moze byla pisana kiedys jak sie uczyli, a teraz juz jest inaczej, ale tak czy inaczej stary kod (przynajmniej takiej jakosci) powinno sie poprawic moim zdaniem. Bo okej, ja sie polapalem, ale sami powiedzcie, jak to wyglada? Z tym opisalem co dalem wyzej.

0
Maciej Cąderek napisał(a):

[...] ten kod jest zly, a dodawanie nowych rzeczy do nich wymaga pisania w tym stylu, czyli moim zdaniem bardzo zlym stylem. Aplikacja jest w Angularze [...]

Nic dodać, nic ująć :P

Większość kodu pisanego w Angularze to jakieś szity XD Może dlatego, że wszyscy wierzą, że wystarczy dodać Angulara i automatycznie kod staje się ładny i utrzymywalny, a niestety to tak nie działa...

Krzywy Młot napisał(a):

jest mi nie ukrywam troche glupio mowic, ze cos mi nie pasuje.

Niepotrzebnie. Jak masz uwagi, to powinieneś o tym powiedzieć. Oczywiście na zasadzie krytyki kodu a nie człowieka ("ten kod jest zły, bo to i to" a nie "ten kto pisał to kretyn").

0

Swoją drogą zastanawiam sie kto robił tam code review, jak to wyglada u Ciebie w firmie?

Zalezy od zespolu, wiem ze sa takie zespoly, ze katuja niezle, ale ten kod raczej przez ten zespol nie przechodzil :D

Majac takie potezne narzedzie jak Angular to uwazam ze trzeba go sie trzymac na tyle ile to mozliwe, bo jak wiadomo ma wieksze ograniczenia niz taki React, ale do takiej aplikacji, co pisze to jest spoko, a nie raz ng-show w angularze a raz gdzies ukryty w sassach ... Sorki, ale musialem sie troche wyzalic :D

1

Podsumowując:

  • kod jest tak słabej jakości, że nawet Ty mając dwumiesięczne doświadczenie to widzisz,
  • nie ma code review,
  • nie ma testów więc refactoring to droga przez mękę,
  • piszecie w Angular 1 ;)

Ja na Twoim miejscu zacząłbym po cichu chodzić na rozmowy do innych firm.

0

Podsumowując:
kod jest tak słabej jakości, że nawet Ty mając dwumiesięczne doświadczenie to widzisz,
nie ma code review,
nie ma testów więc refactoring to droga przez mękę,
piszecie w Angular 1 ;)

code review ogolnie jest, w backendzie to tak cisna, ze masakra, ale czemu ten kod nie mial (a sadze ze tak bylo, bo wiatpie ze taki kod by puscili) to tego akurat nie wiem.
testy tez ogolnie we firmie sa, ale ten produkt go nie ma.
angular 1 jest dlatego, ze to nie jest nowy produkt tylko z jakiegos tam okresu, gdzie angular 2 byl tylko zapowiedzia. Mamy sie przestawic na Reacta (blagam) albo Angualara 2

Ja na Twoim miejscu zacząłbym po cichu chodzić na rozmowy do innych firm.

Nie az tak to chyba nie, bo z tego co sie orientuje to kwestia zespolu po prostu, choc nie ukrywam tez o tym myslalem, ale powodem bylby bardziej stack technologiczny

0

Nie znam historii tej aplikacji, moze byla pisana kiedys jak sie uczyli, a teraz juz jest inaczej,

angular 1 jest dlatego, ze to nie jest nowy produkt tylko z jakiegos tam okresu, gdzie angular 2 byl tylko zapowiedzia. Mamy sie przestawic na Reacta (blagam) albo Angualara 2

Pytanie czy pisaliście coś w React albo w Angular 2. Mam takie wrażenie, że brzydki kod apek pisanych we frameworkach jest często wynikiem tego, że team dopiero się uczy danego frameworka tworząc produkcyjną aplikację (albo uczy języka JS czy programowania ogólnie pisząc kod na produkcji). A jak wiadomo pierwsze próby bywają nieudane.

Wydaje mi się, że lepiej zrobić wcześniej jakieś prostsze aplikacje w X, niż rzucać się z entuzjazmem "przepisujemy cały projekt na framework X, zajmie nam to z pół roku ale będzie nowocześniej". Robienie dużej aplikacji we frameworku, którego nikt jeszcze nie zna (i cały team się go dopiero uczy) rzadko kiedy jest dobre. Jak dla mnie lepiej wprowadzać to częściowo, np. użyć Reacta czy Angulara 2 do jakiegoś pomniejszego projektu, albo do wewnętrznej firmowej aplikacji, i pozwolić, żeby team nabył trochę doświadczenia i know how.

1 użytkowników online, w tym zalogowanych: 0, gości: 1