Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Struktura funkcji - nazewnictwo - zasada jednej operacji
jackraymund
post
Post #1





Grupa: Zarejestrowani
Postów: 217
Pomógł: 21
Dołączył: 10.06.2011
Skąd: Głogów

Ostrzeżenie: (0%)
-----


Witam,
walczę z nazewnictwem
  1. $companyId = $this->updateCompanySetToArrayAndGetId($matchedData['company']);//wywolanie
  2. public function updateCompanySetToArrayAndGetId($aCompanyName)
  3. {
  4. $isCompanyExistInArray = in_array($aCompanyName,$this->companyArray);
  5. if(!$isCompanyExistInArray)
  6. {
  7. $companyId = $this->sqlUpdater->updateCompanyAndGetId($aCompanyName);
  8. $this->companyArray[$companyId] = $aCompanyName;
  9. return $companyId;
  10. }
  11. else
  12. return array_search($aCompanyName,$this->companyArray);
  13. }

Z zasady, jedna funkcja, jedna operacja,ten kod jest okropny, lecz zarazem nazwa tej funkcji jest okropna(pomijając tą zasadę).
Natomiast załóżmy że chciałbym zrobić to na tej zasadzie i zrobić to w miarę optymalnie.(chodzi o to, aby nie wywołać funkcji z sqlUpdater, gdy rekord znajduje się aktualnie w tablicy).

Jestem otwarty na wszelakie pomysły.

Pozdrawiam


--------------------
Wykonuje zlecenia na pobieranie danych ze stron i różne boty.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 15)
in5ane
post
Post #2





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


Chodzi Ci o samo nazewnictwo metod?

Jeśli np. cała klasa odpowiada za firmę/firmy (company Twoje), no to nazwij taką metodą poprostu update. I do tego masz przecież komentarze i tag @return, w którym możesz opisać, że zwraca dane typu integer, czyli ID firmy i tyle.


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post
NickOver
post
Post #3





Grupa: Zarejestrowani
Postów: 332
Pomógł: 10
Dołączył: 13.03.2014
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


@up Według mnie komentarzy powinno nie używać się w kodzie, nazwy funkcji lub metod powinny mówić wszystko.
  1. private function prepareUpdateCompany($companyName){
  2. if (!$this->isInArray($companyName){
  3. $this->companyArray[$companyId] = $companyName;
  4. return $this->sqlUpdater->updateCompanyAndGetId($companyName);
  5. } else {
  6. return array_search($aCompanyName,$this->companyArray);
  7. }
  8.  
  9. private function isInArray($companyName){
  10. return in_array($companyName,$this->companyArray);
  11. }


BTW Rozumiem że to kod piany na szybko, przed faktoryzacją, ale albo używasz notacji węgierskiej albo nie.
Go to the top of the page
+Quote Post
in5ane
post
Post #4





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


Cytat(NickOver @ 23.03.2015, 16:03:12 ) *
@up Według mnie komentarzy powinno nie używać się w kodzie, nazwy funkcji lub metod powinny mówić wszystko.

A od kiedy, to nie powinno się używać komentarzy w kodzie? facepalmxd.gif


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post
Pyton_000
post
Post #5





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Od zawsze wink.gif
@NickOver miał na myśli komentowanie kodu samego w sobie, nie komentarze dla funkcji czy klasy bo to oczywiście obowiązkowe.

Komentowanie kodu to tylko ukrycie fatalnie napisanego kodu. Skoro ktoś pisze komentarz to znaczy że kod który napisał jest nieczytelny i nie da się wywnioskować w 2s. co on robi.
Dodatkowo komentarze się przedawniają. Mało kto dba o ich aktualizację podczas zmiany kodu.
Dlatego trzeba pisać kod jasny i czytelny aby na podstawie nazwy metody wiedzieć co ona robi bez zagłębiania się w kod. Jesli tak nie jest - jest fatalnie.
Go to the top of the page
+Quote Post
in5ane
post
Post #6





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


@Pyton_000: jeśli o to chodziło, to racja. Sam, gdy piszę, to zawsze komentuję dokładnie metody oraz odpowiednio je nazywam i komentarz wewnątrz metod jest zbędny.



--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post
Dejmien_85
post
Post #7





Grupa: Zarejestrowani
Postów: 251
Pomógł: 23
Dołączył: 23.04.2013

Ostrzeżenie: (0%)
-----


Cytat(Pyton_000 @ 25.03.2015, 12:38:06 ) *
Od zawsze wink.gif
@NickOver miał na myśli komentowanie kodu samego w sobie, nie komentarze dla funkcji czy klasy bo to oczywiście obowiązkowe.

Komentowanie kodu to tylko ukrycie fatalnie napisanego kodu. Skoro ktoś pisze komentarz to znaczy że kod który napisał jest nieczytelny i nie da się wywnioskować w 2s. co on robi.
Dodatkowo komentarze się przedawniają. Mało kto dba o ich aktualizację podczas zmiany kodu.
Dlatego trzeba pisać kod jasny i czytelny aby na podstawie nazwy metody wiedzieć co ona robi bez zagłębiania się w kod. Jesli tak nie jest - jest fatalnie.


Czy mnie się wydaje, czy tutaj ktoś czytał "Clean Code" Wujka Boba?

Ja od jakiegoś czasu czuję odrzucenie, gdy widzę phpdoki, w projektach które tego wymagają jest masa bezużytecznego tekstu, wszyscy generują automatycznie phpdoca, później dorzucają jakiś komentarz na szybko i tak się buduje git-majonez-dokumentacja, która wygląda następująca:

  1. /**
  2. * @var bankRepository
  3. */
  4. $private bankRepository;
  5.  
  6. /**
  7. * Gets account by user id
  8. * @param $userId user id
  9. * @return user account
  10. */
  11. public function getAccountByUserId($userId) { ... }


I tak wygląda niestety większość komentarzy - DODAJĄ tyle informacji, że... WOW! No ale jak się wymaga phpdoca, to się jedzie ostro, wystarczy napisać metodę, później tylko stworzyć komentarz, nasze IDE wygeneruje phpdoca, na górze dopisujemy jakąś linijkę lub dwie i TA-DA, jesteśmy pr0-el0 developerzy, trzymający najwyższe standardy - tak jak nasza państwowa służba zdrowia. ; )

A a najlepsze są komentarze robione metodą typu "copy-paste", w których co jakiś czas znaleźć można jakieś małe kłamstewko - bo komuś w ferworze tworzenia dokumentacji się zapomniało wprowadzić zmiany - i się nawet tym osobom nie dziwię, bo przecież kto zwraca uwagę na komentarze? Ja im nie ufam, one kłamią.

Napisanie komentarza to ostateczność, to porażka programisty w utworzeniu kodu, który jest przejrzysty.

"Clean code reads like well-written prose", Grady Booch.

Ten post edytował Dejmien_85 25.03.2015, 23:47:55
Go to the top of the page
+Quote Post
com
post
Post #8





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

Ostrzeżenie: (0%)
-----


To ja polecam poczytać poco się to robi. Jak korzystasz z IDE to ułatwia Ci to prace bo na bazie ich budowana jest baza do podpowiadania np w takim phpstormie. Który nawet pięknie Ci powie że mu się coś w komentarzach nie zgadza. Przyznaj się po prostu że nie potrafisz z nich korzystać, a nie. Poza tym co za problem jedno polecenie w konsoli i komentarze usunięte.
Go to the top of the page
+Quote Post
Dejmien_85
post
Post #9





Grupa: Zarejestrowani
Postów: 251
Pomógł: 23
Dołączył: 23.04.2013

Ostrzeżenie: (0%)
-----


Cytat(com @ 25.03.2015, 23:53:06 ) *
To ja polecam poczytać poco się to robi. Jak korzystasz z IDE to ułatwia Ci to prace bo na bazie ich budowana jest baza do podpowiadania np w takim phpstormie. Który nawet pięknie Ci powie że mu się coś w komentarzach nie zgadza. Przyznaj się po prostu że nie potrafisz z nich korzystać, a nie. Poza tym co za problem jedno polecenie w konsoli i komentarze usunięte.


Skończ proszę z tym bełkotem, uszy cierpią. ; )

Porady z korzystania z podpowiedzi IDE możesz udzielać w dziale "Przedszkole", my tutaj mówimy o rzeczach innego poziomu, na które jak widać - mimo wielu "punktów" na forum - jesteś jeszcze za młody.

Ten post edytował Dejmien_85 26.03.2015, 00:05:25
Go to the top of the page
+Quote Post
com
post
Post #10





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

Ostrzeżenie: (0%)
-----


Cytat
o rzeczach innego poziomu

Bardzo bym chciał się dowiedzieć jakich w takim razie. I nie wyskakuj mi tu z siłowaniem się na poziom wiedzy...
Go to the top of the page
+Quote Post
Dejmien_85
post
Post #11





Grupa: Zarejestrowani
Postów: 251
Pomógł: 23
Dołączył: 23.04.2013

Ostrzeżenie: (0%)
-----


Cytat(com @ 26.03.2015, 00:13:26 ) *
Bardzo bym chciał się dowiedzieć jakich w takim razie. I nie wyskakuj mi tu z siłowaniem się na poziom wiedzy...


Ech, wystarczy spojrzeć do góry... no ale czego tutaj wymagać (od Ciebie). ; )

Kiedyś może natkniesz się na jakąś książkę Roberta C. Martina, albo innych myślących programistów - bo Tobie to raczej nie zdarza się za często myśleć, prawda? Dawanie setek (w 3 lata 2000 postów i ponad 200 punktów) porad młokosom wyrobiło w Tobie chyba jakieś przeświadczenie, że wszyscy potrzebują porad. Tak zakładam, skoro próbowałeś dawać porady jak się z IDE korzysta - obawiam się, że pomóc może Ci tylko jakaś intensywna terapia.

Ja lekarzem nie jestem, więc Ci niestety nie pomogę. wink.gif

Ten post edytował Dejmien_85 26.03.2015, 00:31:12
Go to the top of the page
+Quote Post
com
post
Post #12





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

Ostrzeżenie: (0%)
-----


Skoro przeczytałeś czysty kod chwała Ci za to ale skoro już o tym mowa:
Cytat
Nie ma nic bardziej pomocnego i satysfakcjonującego, jak dobrze opisane publiczne API. Przykładem
tego może być standardowa biblioteka Java. Bez niej pisanie programów Java byłoby trudne,
o ile nie niemożliwe.
Jeżeli piszemy publiczne API, to niezbędne jest napisanie dla niego dobrej dokumentacji Javadoc.
Jednak należy pamiętać o pozostałych poradach z tego rozdziału. Komentarze Javadoc mogą być
równie mylące, nie na miejscu i nieszczere jak wszystkie inne komentarze


Tobie się przyda czytanie zrozumieniem. Czy ja Ci daje rady pisz sobie jak chcesz, możesz komentarzy nie dawać, nikt Ci tego nie zabroni. Wyjaśniłem Ci tylko czemu tego się używa, to że zaciemnia kod to ja wcale nie twierdze że tak nie jest. Ale dlatego też w łatwy sposób można je z pliku usunąć smile.gif

Kolejny co odbiera wszystko personalnie i ma ból tyłka potem, daruj sobie smile.gif

Poza tym nawet nie zrozumiałeś tego co napisał Pyton_000, który wyraźnie napisał:
Cytat
@NickOver miał na myśli komentowanie kodu samego w sobie, nie komentarze dla funkcji czy klasy bo to oczywiście obowiązkowe.
Go to the top of the page
+Quote Post
Dejmien_85
post
Post #13





Grupa: Zarejestrowani
Postów: 251
Pomógł: 23
Dołączył: 23.04.2013

Ostrzeżenie: (0%)
-----


Cytat(com @ 26.03.2015, 00:38:21 ) *
Skoro przeczytałeś czysty kod chwała Ci za to ale skoro już o tym mowa:


Przeczytałem i cieszy mnie to, że Ty też się w tym orientujesz, choć jak widać się nie stosujesz - ten tekst o publicznym API także pamiętam. Jest to jednak jedyny przypadek, kiedy dokumentacja *może* zostać użyta rozsądnie.

Nie wykluczam tej opcji, pragnę tylko podkreślić fakt, że pisanie dokumentacji "na mus" jest niczym więcej jak generowaniem masy zbędnego i rozpraszającego tekstu. Tak, komentarze są szare (z natury), można nawet przy pomocy IDE zmienić kolor na inny, ale to nie zmienia faktu, że komentarze są w większości przypadków po prostu kompletnie zbędne i nastawienie "there shall be comments!" prowadzi do chaosu.

Dobra, wystarczy na dzisiaj tych kazań, idziem spać!

Szerokości.
Go to the top of the page
+Quote Post
com
post
Post #14





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

Ostrzeżenie: (0%)
-----


Ale phpdoca generuje się do opisu API przecież, a nie dla siebie żeby zaśmiecać sobie tym kod. Komentarze w normalnych IDE można zwijać i to tez nie problem. Poza tym jak już mówiłem można je łatwo usunąć. Jeśli z kodu korzystać ma ktoś inny to znacznie prościej jest mu przejrzeć coś takiego dajmy przykład SF2
http://api.symfony.com/2.0/Symfony/Compone...on/Request.html
Niż analizować coś takiego
https://github.com/symfony/symfony/blob/2.7...ion/Request.php
Gdzie dostaje 1984 linie kodu.
To że Ty będziesz pisał ładnie, nie znaczy, że jak dostaniesz czyjś kod to będzie tak samo. Jasne, że znacznie prościej jest jak nie ma ich wcale, ale mało osób trzyma sie w php jakichkolwiek zasad. Są standardy typu PSR a większość tu obecnych nigdy o nich nie słyszała itd. Więc o wiele prościej jest wygenerować sobie takiego phpdoca, niż przegladać lina po lini np te 1984 wiersze żeby poznać jego budowę, a potem jeszcze użyć smile.gif

Ale ja wcale nie powiedziałem nic takiego jak Ty mówisz, sam sobie dopowiedziałeś. Kiedy pisze coś wewnętrznego i zamkniętego to wcale komentarzy bym nie potrzebował, one generowane są dla wygody pracy z IDE, ale nie problem je po zakończeniu dev usunąć.

Niemniej jednak rozumiem o co Ci w głównej mierze chodziło smile.gif

Tylko z drugiej strony to ze cos jest dobre dla wiekszej ilosci przypadkow i sprawdzi sie w cpp,c#,javie itd to nie znaczy ze tamo bedzie w przypadku jezyka skryptowego. Narazie puki nie mamy wersji 7 nie ma silnego typowania. Mozliwosci na tym poziomie sa bardzo ograniczone wiec taki phpdoc ulatwia Ci zadanie bo widzisz co masz przekazac i co zwroci Ci dana metoda. Inaczej jest w jezykach wysokiego poziomu gdzie masz typowanie i bez problemu z samej deklaracji da sie wszystko wyczytac zagladajac np w cpp do samego naglowka. I tam sie to faktycznie sprawdza ale niestety nie tu.


Kolejna sprawa komentarze to nie tylko phpdoc. Masz tez adnotacje jak chociazby w sf dla routingu i template czy tez doctrine smile.gif

Ten post edytował com 26.03.2015, 01:36:09
Go to the top of the page
+Quote Post
NickOver
post
Post #15





Grupa: Zarejestrowani
Postów: 332
Pomógł: 10
Dołączył: 13.03.2014
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Cytat(Pyton_000 @ 25.03.2015, 13:38:06 ) *
Od zawsze wink.gif
@NickOver miał na myśli komentowanie kodu samego w sobie, nie komentarze dla funkcji czy klasy bo to oczywiście obowiązkowe.

Komentowanie kodu to tylko ukrycie fatalnie napisanego kodu. Skoro ktoś pisze komentarz to znaczy że kod który napisał jest nieczytelny i nie da się wywnioskować w 2s. co on robi.
Dodatkowo komentarze się przedawniają. Mało kto dba o ich aktualizację podczas zmiany kodu.
Dlatego trzeba pisać kod jasny i czytelny aby na podstawie nazwy metody wiedzieć co ona robi bez zagłębiania się w kod. Jesli tak nie jest - jest fatalnie.


Również czytałeś czysty kod?

@topic
Tak jak Python napisał nie chodziło mi o komentarze takie hmmm... Generalne lecz o komentarze typu ta metoda w tej linijce robi to i to. Jeśli musisz to pisać to kod jest napisany źle ponieważ nawet jeśli masz kod który już napisany nie będzie edytowany to i tak robi się problem jeśli osoba która go czyta nie zna języka w którym jest napisany.
@up @up1 @up2 i chyba @up3
Nie sądzicie że ten temat, dizał i całe forum nie jest najlepszym miejscem na obrzucanie się docinkami kto umie więcej a kto mniej?
Go to the top of the page
+Quote Post
com
post
Post #16





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

Ostrzeżenie: (0%)
-----


NickOver A czy jak kogoś obrzucałem docinkami? Dejmien_85 wystartował do mnie bo odebrał personalnie to co napisałem, a ja tylko wytłumaczyłem mu merytorycznie poco to jest i wcale nie reagowałem na jego osobiste zaczepki, wiec luz chłopie, nie ma co do tego wracać smile.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 17:38