• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Projekt webowy do zarządzania przepisami | REST API | Symfony 4, React

VPS Starter Arubacloud
+3 głosów
1,381 wizyt
pytanie zadane 5 maja 2019 w Nasze projekty przez `Krzychuu Stary wyjadacz (13,940 p.)
otagowane ponownie 5 maja 2019 przez `Krzychuu

Witam,

właśnie skończyłem mój projekt napisany w Symfony 4 i React i  chciałbym żebyście go ocenili. Od razu powiem że front nie jest moją mocną stroną i było to moje pierwsze zetknięcie się z React, tutaj totalnie się pogubiłem i już nie chciałem kończyć frontu ( API pozwala na trochę więcej niż jest dodane we froncie ), po prostu stwierdziłem że muszę napisać front od nowa. Projekt będę dalej rozwijał, mam już parę fajnych pomysłów co mogę dodać oprócz tego co już jest. Panelu admina też nie ma, akcję admina zrobiłem w zakładkach. Co do backendu to starałem się wypełnić luki z mojego ostatniego projektu warsztatu i myślę że w jakimś stopniu wyszło coś z tego :P. Na koniec chciałbym powiedzieć że bardzo mi zależy na ocenie tego projektu, ponieważ staje teraz przed wyborem czy szukać pracy jako Junior PHP Developer czy jeszcze się douczyć i potem zacząć szukać, byłoby mi bardzo miło jakbyście napisali czy nadaje się na Junior PHP Dev.


Funkcje:

  • Logowanie, rejestracja | Front i Backend
  • Szukanie użytkownika + akcje dla admina ( usunięcie i edycja informacji o użytkowniku ) | Front i Backend
  • Edycja użytkownika ( zamiana hasła, zamiana informacji o użytkowniku ) | Front i Backend
  • Tworzenie ról i dodawanie/usuwanie dla użytkowników | Backend
  • Dodawanie nowego przepisu | Front i Backend
  • Edycja/usuwanie przepisu | Backend
  • Dodawanie/usuwanie/edytowanie składników, kroków i zdjęć | Backend

Front: React

Backend: Symfony

Demo: ( tylko do przeklikania, wszystkie zabezpieczenia wyłączyłem ): Demo

 

Z góry dziękuje za poświęcony czas na analizę kodu.

komentarz 5 maja 2019 przez niezalogowany
fajna inicjatywa pod naukę frameworka :) sam chcę poznać Symfony i własnie robię jeden z kursów z Udemy ;) Ty też uczysz się Symfony z Udemy?
1
komentarz 5 maja 2019 przez `Krzychuu Stary wyjadacz (13,940 p.)
Dzięki, ogólnie wychodzę z założenia że praktyczne zastosowanie najbardziej uczy i staram się iść tą metodą. Jak zaczynałem naukę Symfony to przeczytałem dokumentację a potem powoli wiedzę którą zdobyłem z dokumentacji wdrażałem do projektu, a potem pokazywałem projekt tutaj na forum i dostawałem feedback co należy poprawić.

1 odpowiedź

+3 głosów
odpowiedź 7 maja 2019 przez Ehlert Ekspert (212,630 p.)
wybrane 8 maja 2019 przez `Krzychuu
 
Najlepsza
  1. Nie korzystasz z PHP_CodeSniffera, albo robisz to kiepsko. Popraw formatowanie i dokumentację. 
  2. Widzę dziwną tendencję do zwracania boola, praktycznie zawsze. I praktycznie zawsze jest to zbędne. Metody w Twoich serwisach powinny być typu void. Jeśli coś się nie powiedzie poleci wyjątek. Jeśli serwis powinien znaleźć usera, to niech wcześniej będzie walidacja. Walidacja przeszła? Serwis nie ma usera? Rzuć wyjątek.
  3. Nazwałeś klasy z logiką *Service. Osobiście kiedyś tak robiłem, ale nie jest to dobra praktyka. Nazwy takie jak Service, Manager, Helper ewidentnie wskazują, że to co się za nimi kryje może robić WSZYSTKO. To nie jest dobry kierunek. Wywal zapis do repo (to tylko propozycja, jest to założenie z którym nie każdy się zgadza). Tworzenie do Factory. 
  4. Czemu w folderze Event zamiast eventa mamy Subscriber?
  5. User i UserDTO w 90% to ten sam kod. Proponuję zrobić w dto publiczne pola.
  6. Wywal zakomentowany kod.
  7. Każdy plik php kończymy pustą linią.
  8. Jeśli chodzi o testy, to poczytaj o wzorcu Object Mother
  9. Założenie jest takie, że testy mają dokumentować kod. Dodaj więc opisy albo pisz czytelniejsze testy. Btw, jeśli z testami jest coś nie tak (brzydkie duże itp itd), to może problem leży w kodzie, który testujesz? wink
  10. Validatory pytały gdzie ich testy devil
  11. W każdym validatorze sprawdzasz czy constraint jest dobrego typu. Niepotrzebnie. Robi to za Ciebie framework.
  12. Challenge, pisz kontrolery w taki sposób, aby dało się je testować (jednostkowo, nie end to end)laugh
  13. W projekcie brakuje readme. Warto też zainteresować się jakimś środowiskiem. Scotch Box, homestead, docker?
komentarz 8 maja 2019 przez `Krzychuu Stary wyjadacz (13,940 p.)

Dziękuje za ocenę.

1. Codesniffera mam podpiętego pod IDE, i wszystko działa tzn. podświetla mi błędy dopóki ich nie usunę. W docs robiłem entery ale nie wyświetlało się że jest źle tzn. jak dawałem enter to było tylko że jest spacja a nie powinno być, usuwałem ją i było wszystko dobrze, jeszcze raz spojrzę na konfiguracje.

2. Tzn coś w tym stylu?

/**
 * @param array $payload
 * @param User $user
 * @return void
 */
public function changePassword(array $payload, User $user): void
{
    if (!$this->validUserPassword($user, $payload['oldPassword'])) {
        throw new BadRequestHttpException("The passwords is not the same");
    }

    $user->setPassword($this->encodeUserPassword($user, $payload['password']));
    $this->entityManager->flush();

    return;
}

tak coś przeczuwałem że źle robię bo zawsze duże kontrolery mi wychodziły :P

3. Jak mógłbym nazwać UserService?, myślałem nad zmianą na UserCrud i wywalenie innych metod takich jak changePassword do innego serwisu np ChangeUserPassword.

5. Chciałem uniknąć przesłania hasła do klienta i wymyśliłem że zrobię to w DTO, są jakieś inne metody żeby wykluczyć niektóre pola? Stworzyć serializer groups? Dodać nowe query w repo?

8. Czytałem i podoba mi się on, tylko ktoś podpowiedział że przy takich małych klasach jest to niepotrzebne.

9. Próbowałem swoich sił przy użyciu TDD, ale nie zawsze to wychodziło, teraz będę konsekwentny i będę robić tylko w TDD.

12. Teraz dzięki wyjątkom wywalę trochę kodu z kontrolerów, oprócz tego pokombinuje co jeszcze mogę zmienić.

13. Właśnie miałem się wziąć za README i opisać co API potrafi, czytałem trochę o docker i spróbuje wdrążyć go do projektu. 

komentarz 8 maja 2019 przez Ehlert Ekspert (212,630 p.)

Odkąd zdarza mi odpowiadać na Twoje pytania, to widzę progres w kodzie. Mimo wszystko jest jeszcze dużo rzeczy do przepracowania. Widzę że wciąż nie do końca rozumiesz ideę i działanie formularzy. Myślę że jeśli je ogarniesz to kontrolery o wiele stracą na rozmiarze.

Kolejna sprawa to jakiś kierunek architektoniczny. Na ten moment masz jeden wielki rozgardiasz. Nie karzę Ci się rzucać na architekturę hexagonalną, bo to nie czas, ani projekt na takie zabawy. Warto mimo wszystko zainteresować takim minimum architekturalnym:

  • Zastanów się jakby miał wyglądać Twój kod bez symfony. Nie mówię tutaj o plain php, ale o czystym kodzie pokazującym intencje działania apki. Bez żadnych formularzy, tylko sama logika i dane.
  • Może warto wydzielić folder na domenę? Uniezależnić ją od reszty aplikacji. Korzystając z interfejsów oraz symfonowego di jest naprawdę duże pole do popisu.
  • Co do testów. Nie każę Ci pisać w tdd, bo to wymaga trochę zdolności. Ale traktuj testy tak samo jak kod który sprawdzają. W TDD piszesz testy zanim powstanie właściwy kod. Równie dobrą praktyką jest pisanie testów równolegle z implementacją. Testy zbyt skomplikowane? Może trzeba jeszcze raz przemyśleć jak ma wyglądać przedmiot testowany smiley

Tyle z mojego marudzenia
https://www.youtube.com/watch?v=DVRJNPnezIk&t=1s
https://www.youtube.com/watch?v=F-HA6ujsm1c

komentarz 9 maja 2019 przez `Krzychuu Stary wyjadacz (13,940 p.)
edycja 9 maja 2019 przez `Krzychuu
Hmm, czyli jeszcze jakoś inaczej powinienem implementować formularze w kontrolerach? Obejrzę filmiki które podesłałeś i spróbuje zaimplementować rozwiązanie z domeną w moim projekcie. Jak oceniasz moje umiejętności, dam radę znaleźć pracę jako Junior PHP Dev?

Ps: folder na domenę czyli chodzi o DDD?

Podobne pytania

0 głosów
1 odpowiedź 216 wizyt
+1 głos
1 odpowiedź 477 wizyt
pytanie zadane 18 czerwca 2022 w Java przez `Krzychuu Stary wyjadacz (13,940 p.)
0 głosów
2 odpowiedzi 394 wizyt

92,454 zapytań

141,262 odpowiedzi

319,089 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...