![]() ![]() |
Post
#11361
|
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 27.04.2016 Ostrzeżenie: (0%)
|
Dziękuję.
|
|
|
|
Post
#11362
|
|
|
Grupa: Zarejestrowani Postów: 520 Pomógł: 102 Dołączył: 15.07.2014 Skąd: NULL Ostrzeżenie: (0%)
|
http://php7-tutorial.com
Ciekawa strona, można się przetestować "na żywo" czy umiemy przepisać skrypt pod php7. |
|
|
|
Post
#11363
|
|
|
Grupa: Zarejestrowani Postów: 375 Pomógł: 20 Dołączył: 28.07.2006 Ostrzeżenie: (0%)
|
Składał ktoś PIT-37 po terminie? Teoretycznie grozi za to mandat karny, ale czy go wystawiają za niewielkie spóźnienie?
Ten post edytował WebCM 29.04.2016, 21:21:45 |
|
|
|
Post
#11364
|
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%)
|
Zanieś ręcznie do US i dołącz do tego "czynny żal" i powinno być po kłopocie.
PS. ZUS bardziej jest bezwzględny (IMG:style_emoticons/default/smile.gif) US przymyka oko na takie drobne rzeczy. |
|
|
|
Post
#11365
|
|
|
Grupa: Zarejestrowani Postów: 361 Pomógł: 22 Dołączył: 10.02.2015 Ostrzeżenie: (0%)
|
Co sądzicie Panowie o takim stylu kodowania, spotkałem się z nim podczas generowania różnych "rzeczy" z poziomu konsoli symfony, gdzie np wygenerowany formularz taką konwencję przyjmuje.
Pytam z czystej ciekawości (IMG:style_emoticons/default/wink.gif) Ten post edytował Fred1485 2.05.2016, 19:23:40 |
|
|
|
Post
#11366
|
|
|
Grupa: Zarejestrowani Postów: 965 Pomógł: 285 Dołączył: 19.06.2015 Skąd: Warszawa Ostrzeżenie: (0%)
|
Ja tam lubię method chaining ;d Wkurza mnie pisanie wszystkiego po kilka razy - tak mam raz obiekt do którego chcę się odwołać, a później tylko piszę po kolei co chce zrobić (IMG:style_emoticons/default/smile.gif)
|
|
|
|
Post
#11367
|
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%)
|
|
|
|
|
Post
#11368
|
|
|
Grupa: Zarejestrowani Postów: 361 Pomógł: 22 Dołączył: 10.02.2015 Ostrzeżenie: (0%)
|
@up Też taki sposób zapisu bardziej mi odpowiada. Ten średnik w nowej linii to głupota (IMG:style_emoticons/default/tongue.gif)
|
|
|
|
Post
#11369
|
|
|
Grupa: Zarejestrowani Postów: 965 Pomógł: 285 Dołączył: 19.06.2015 Skąd: Warszawa Ostrzeżenie: (0%)
|
Cytat Ten średnik w nowej linii to głupota To też kwestia gustu (IMG:style_emoticons/default/smile.gif) Imo czytelniej jest jeśli średnik jest w nowej linii bo wtedy mam oddzielony taki jakby blok jak w przypadku klamerek. (IMG:style_emoticons/default/smile.gif) Poza tym łatwiej mi później dodać nową linijkę na końcu. Tak samo w przypadku tablic, zawsze po ostatnim elemencie dostawiam przecinek (IMG:style_emoticons/default/wink.gif) |
|
|
|
Post
#11370
|
|
|
Grupa: Zarejestrowani Postów: 520 Pomógł: 102 Dołączył: 15.07.2014 Skąd: NULL Ostrzeżenie: (0%)
|
Też jestem za fluent interface ("method chaining").
Praktycznie używam gdzie się da jak tylko biblioteki oferują, lub sam coś robię. Mniej do pisania przez co też czytelniej wiele dla mózgu (IMG:style_emoticons/default/biggrin.gif) |
|
|
|
Post
#11371
|
|
|
Grupa: Zarejestrowani Postów: 160 Pomógł: 27 Dołączył: 22.09.2008 Skąd: Tarnów Ostrzeżenie: (0%)
|
Nie lubię fluent interface. Nie przestrzega prawa Demeter, nigdy nie wiadomo, jaki typ obiektu jest po strzałkach ani jaki rezultat zwraca funkcja. Przekazując sobie każdą wartość do zmiennej nadaje się jej nazwę, przez co wiadomo, czym ten rezultat jest.
Zaraz posypie się hejt wszystkich lubiących fluent. Kolejnym ważnym aspektem przeciw fluent jest to, że łamie się SRP, ponieważ kilkakrotnie zmienia się kontekst a co za tym idzie, robi się wiele rzeczy na raz. Nie mówiąc już o testowaniu, które jest coraz trudniejsze wraz ze wzrostem metod, które uruchamiamy jedna po drugiej (niezależnie od tego, czy używamy fluent, czy nazywamy sobie rezultaty funkcji). Ten post edytował mrc 2.05.2016, 19:59:51 |
|
|
|
Post
#11372
|
|
|
Grupa: Zarejestrowani Postów: 520 Pomógł: 102 Dołączył: 15.07.2014 Skąd: NULL Ostrzeżenie: (0%)
|
(...)nigdy nie wiadomo, jaki typ obiektu jest po strzałkach ani jaki rezultat zwraca funkcja. Przekazując sobie każdą wartość do zmiennej nadaje się jej nazwę, przez co wiadomo, czym ten rezultat jest. (...) Mógłbyś rozwinąć pierwsze zdanie? (To że nie wiadomo jaki typ obiektu). Co do rezultatu. Fluent` zwarca obiekt, domyslnie by pewnie nic nie zwracał (gdyby się go nie zastosowało), bo skoro metoda mogła by zwrócić coś innego to większość osób by pewnie tak zrobiło.. Cytat robi się wiele rzeczy na raz Do tego wiele osób to używa według mnie. ### to nie hejt tylko pytanie ### |
|
|
|
Post
#11373
|
|
|
Grupa: Zarejestrowani Postów: 160 Pomógł: 27 Dołączył: 22.09.2008 Skąd: Tarnów Ostrzeżenie: (0%)
|
@Ksar, programując w C++ masz coś takiego:
Kod SomeObject o; SomeOtherObject.doSomeStuff().doSomeOtherStuff().doNextStuff(); Gubisz tutaj typ, nie masz informacji o tym, co zwraca doSomeStuff oraz doSomeOtherStuff(). Możesz to zamienić na: Kod SomeObject o; SomeStuff some = o.doSomeStuff(); SomeStuff other = some.doSomeOtherStuff(); NextStuff next = other.doNextStuff(); W pierwszym nie wiesz, co zwracają funkcje, w drugim wiesz. W pierwszym nie przyjdzie Ci na myśl to, że dwie pierwsze funkcje zwracają ten sam typ, w drugim masz jasno wszystko. Ofc. przykład podałem w C++, ponieważ łatwiej jest zauważyć różnicę. Podobnie to działa w JS, PHP, Java czy innych C#. Zaraz mi powiesz, że czytelność jest dla Ciebie najważniejsza. I przez takie gadanie powstają bagniste spaghetti nie trzymające się żadnych zasad. Co do robienia wielu rzeczy na raz - z tego co kojarzę jesteś młodym programistą, więc zapamiętaj raz na zawsze: każda funkcja którą napiszesz ma robić tylko jedną rzecz. Jeżeli używasz gdzieś fluent, to jest spore ryzyko tego, że funkcja używająca go nie robi jednej rzeczy na raz. |
|
|
|
Post
#11374
|
|
|
Grupa: Zarejestrowani Postów: 520 Pomógł: 102 Dołączył: 15.07.2014 Skąd: NULL Ostrzeżenie: (0%)
|
(...)Zaraz mi powiesz, że czytelność jest dla Ciebie najważniejsza. I przez takie gadanie powstają bagniste spaghetti nie trzymające się żadnych zasad. (...) każda funkcja którą napiszesz ma robić tylko jedną rzecz. Jeżeli używasz gdzieś fluent, to jest spore ryzyko tego, że funkcja używająca go nie robi jednej rzeczy na raz. Ale debila to ze mnie nie rób, bo pisałem tak: Cytat bo skoro metoda mogła by zwrócić coś innego to większość osób by pewnie tak zrobiło.. ^ ja się w to wliczam. Co do funkcji(metody) - robię tak, zaskocze tez cb ze fluent dodaje gdy juz wszystko zrobione i przetestowane. A nie jak ci się zdaje na początku lub w trakcie. |
|
|
|
Post
#11375
|
|
|
Grupa: Zarejestrowani Postów: 2 592 Pomógł: 445 Dołączył: 12.03.2007 Ostrzeżenie: (0%)
|
Różnica w czytelności nie jest tak wielka jakby mogło się wydawać na pierwszy rzut oka:
Co do robienia wielu rzeczy na raz - z tego co kojarzę jesteś młodym programistą, więc zapamiętaj raz na zawsze: każda funkcja którą napiszesz ma robić tylko jedną rzecz. Jeżeli używasz gdzieś fluent, to jest spore ryzyko tego, że funkcja używająca go nie robi jednej rzeczy na raz. Zawsze gdzieś będzie fragment kodu, który zbierze wywołanie kilku rzeczy na raz (IMG:style_emoticons/default/tiredsmiley.gif) Natomiast przykład powyżej pokazują, że fluent przy niewielkiej (IMHO) poprawie czytelności zmienia ilość zadań wykonywanych przez settery. W drugim przypadku metody te tylko zapisują dane, zmieniając aktualny stan obiektu, natomiast w pierwszym wykonują 2 działania: zapis i odczyt/zwrot wartości. |
|
|
|
Post
#11376
|
|
|
Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%)
|
Skoro już mowa o fluent to do poczytania http://ocramius.github.io/blog/fluent-interfaces-are-evil/ (IMG:style_emoticons/default/wink.gif)
|
|
|
|
Post
#11377
|
|
|
Grupa: Zarejestrowani Postów: 1 268 Pomógł: 254 Dołączył: 11.06.2009 Skąd: Świętochłowice Ostrzeżenie: (0%)
|
Też mnie zawsze fluent API trochę mierzi, ale z drugiej strony: czy takie jQuery byłoby aż tak popularne, gdyby tego nie miało? To jest de facto znak rozpoznawczy tej biblioteki. W obecnej chwili, jak pisze się tego typu liba w JS, to po prostu nie da się nie zaimplementować fluent API. Ba, nawet stworzono liba, żeby takie fluent API wprowadzić bezpośrednio do DOM → http://lea.verou.me/chainvas/
Nie mówię, że to jest złe czy dobre – bardziej się zastanawiam skąd aż taka popularność tego w pewnym segmencie JS devu. I nie, odpowiedź "bo to JS" nie jest poprawna (IMG:style_emoticons/default/wink.gif) |
|
|
|
Post
#11378
|
|
|
Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%)
|
tak tylko w 90% w JQ wykonujesz coś na obiekcie i nie interesuję Cie co ta funkcja zwraca, bo liczy się efekt, a nie sam wynik.
|
|
|
|
Post
#11379
|
|
|
Grupa: Zarejestrowani Postów: 1 268 Pomógł: 254 Dołączył: 11.06.2009 Skąd: Świętochłowice Ostrzeżenie: (0%)
|
Ok… Ale czym się zatem różni:
Kod $user = new User() ->setName( 'Name' ) ->setSurname( 'Surname' ); od: Kod const elem = $( 'elem' ) .html( 'html' ) .height( 100 ); ? (IMG:style_emoticons/default/wink.gif) Zasada jest dokładnie taka sama: liczy się dla nas efekt, nie wynik. Więc skoro w PHP jest to przez wielu uważane za anti-pattern, to dlaczego w JS – już nie? |
|
|
|
Post
#11380
|
|
|
Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%)
|
No w tym przypadku nie ma różnicy, ale w php częściej to wynik ma znaczenie, bo z tym $user coś się potem robi, w JQ też czasem, ale w wielu przypadkach już same wywołanie tego na jakimś elemencie daje nam oczekiwany rezultat. A czy nie jest uznawane za anti-pattern to bym polemizował, bardzie to kwestia tego iż się przyjęło, w takich bibliotekach bo tam modyfikujesz pewien stan obiektu DOM. A druga sprawa, że ten język jest silnie prototypowy i tak został zbudowany. ES2015 jest zbyt młody, żeby mówić o tym co w innych językach wypracowane zostało już przez lata.
A nawet w twoim przykładzie, setter sugeruje, że ustawiasz jakaś właściwość, ale nie mówi nic o fakcie iż zostanie zwrócony obiekt. To by musiało wyglądać wtedy tak:
|
|
|
|
![]() ![]() |
|
Aktualny czas: 14.06.2026 - 02:16 |