Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 77 Pomógł: 0 Dołączył: 4.02.2014 Ostrzeżenie: (20%)
|
Cześć, programuję w php, js, html, css, czyli taki standard jeżeli chodzi o strony www, frameworki to: laravel, vue.js, materializecss, może niektórzy mnie kojarzą po nicku.
Spotykam się czasem podczas pisania aplikacji z tym, że w pewnym momencie np. w połowie prac, uświadamiam sobie, że kod jest bardziej zawile napisany niż mógłbym być. Załóżmy, że chciałem zastosować do kilku funkcjonalności tą samą część kodu i teraz okazuje się, że, aby tą część wykorzystać, komplikuję sobie świeżo pisane rzeczy, żeby je dostosować do tego co już mam. Teraz przyszło mi na myśl, czy aż tak ważne jest to, aby nie powielać kodu, bo w sumie kierując się taką genezą, wszystko mam (tak mi się wydaje) napisane bardziej zawile, ostatecznie tylko po to, żeby wykorzystać istniejące elementy i dostosować do nich nowe. Przeważnie znajdują się jakieś mini różnice w poszczególnych funkcjonalnościach, które po zsumowaniu robią o wiele większy bałagan niż jakby napisać dla każdej funkcjonalności oddzielnie ten "uniwersalny kod". Dodatkowo, jeśli teraz chciałbym zmienić rzeczy, które są używane w kilkunastu miejscach, to te kilkanaście miejsc przestaje działać z automatu i muszę je wszystkie poprawiać. Nie wiem, czy przedstawienie sprawy w tak ogólny i teoretyczny sposób pozwoli Wam się odnieść do tematu, jeśli nie to podam jakiś przykład. Druga rzecz, to np. 5 lub więcej rozwiązań jednego problemu, gdzie większość wydaje się być niezła. Jak podejmujecie decyzje, czy na szybko, czy jakoś bardziej analizujecie, bo mi schodzi trochę czasu na takie analizy i jest to dość irytujące? Mam w sobie jakąś taką cechę, że strasznie drażni mnie jak zaczyna się robić bałagan i zależy mi bardzo na prostocie i przejrzystości tego co piszę, zarówno od strony użytkownika jak i programisty, chciałbym, żeby to co piszę było idealne i jak mi się nie udaje to mam nerwy. Czy macie podobne problemy, jeśli tak, jak sobie z nimi radzicie? Może to kwestia doświadczenia, programuję zawodowo już praktycznie 2 lata, więc trochę doświadczenia nabrałem, ale to jednak nie 10 lat:p Próbuję sobie wytworzyć jakieś standardy i rozwiązania powtarzalnych problemów, czyli np. stosować jeden lub dwa typy formularzy we froncie, na upload filmów mieć jeden sprawdzony sposób po stronie użytkownika i serwera, usuwanie zasobów też działające w konkretny sposób do wielokrotnego stosowania. Tylko teraz pytanie się pojawia, czy chcąc budować taką swoją bazę rozwiązań nie zostanę w tyle, przez to, że nie zapoznaję się z innymi narzędziami, a pracuję cały czas na tych samych, oczywiście aktualnych wersjach. Co sądzicie? |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%)
|
Cytat Mówię o routingu. Dziwnie Cię zdziwiło, że są metody przypisane do konkretnej akcji z urla. Nie napisałem że coś w tym dziwnego, napisałem, że masz tu strategie o której ja i inni mówiliśmy. Cytat Nieprawda, znajdź mi informację, że w dekoratorze kolejność dekoratorów ma nie mieć znaczenia. Choćby zawsze musi istnieć końcowy dekorator, który nie przyjmuje wartości do konstrukora, więc jeżeli musi istnieć końcowy, to może istnieć początkowy i może istnieć ustalona kolejność. Wgl nie zrozumiałeś dekoratorów. Jedyne co musi istnieć to klasa która rozszerzasz, ona ma jakaś funkcjonalność w Twoim przypadku bazą jest Upload. I kiedy podczas tego uploadu zależy Ci żeby powstała miniaturka, wiec dodajesz do istniejącego obiektu Uploadu zrób mi miniaturkę. Dlatego tworzysz dekorator, którego jedynym zadaniem jest zmienić obiekt bazowy tak żeby zamiast pełnego obrazu zwrócona została miniaturka w jego miejscu. Dla innego route chcesz miniaturkę obrócona o 180 stopni. Wiec bierzesz klase Upload bierzesz dekorator Thumbnail i dekorator Rotate i masz miniaturkę i obrócony. Ale nie ma znaczenia czy najpierw obrócisz potem zmniejszysz czy na odwrót i tak i tak efekt zawsze jest taki sam i tak powinno być u Ciebie, a tak nie jest bo u Ciebie każda klasa zależy od innej. W przypadku prawdziwego dekoratora nadawane ograniczenia/zmiany na obiekcie są od siebie nie zależne, wiec mogę mięć: miniaturkę; miniaturkę i obrócony == obrócony i miniaturka; obrócony, a wszystko to bez jakiejkolwiek zmiany w kodzie. Twoje początkowe założenie było blednę, czyli: Cytat Choćby zawsze musi istnieć końcowy dekorator Nie ma czegoś takiego jak początkowy czy końcowy dekorator, jest obiekt który dekorujesz i jeśli dekoratory maja ten sam interface co ten obiekt, to można je ze sobą składać tak jak było opisane w przykładach, ale tylko i wyłącznie wtedy. Cytat Soryy, ale nie bede sobie "nieulatwial" pracy tylko dlatego ze ktos moze kiedys nie wiedziec jak tego uzyc... Tu wcale nie chodzi o nie ułatwianie pracy, bo po to zaproponowane zostało użycie wzorców, żeby te rozwiązanie było jak najbardziej elastyczne i można było wykorzystać je w wielu projektach, ale wzorce zostały zdefiniowane w taki sposób, żeby każdy kto sporzy na kod, znając je wie jaki będzie efekt. A kiedy kolega Omenomn po roku czy dwóch latach wróci do tego kodu coś zmienić, najpierw znów będzie musiał wdrożyć sam siebie jak to działa i czemu tak to zrobiłem wtedy a nie inaczej. Przeczytaj jeszcze raz uważnie co tam zostało napisane http://blogophp.com/2009/08/16/dekorator/#more-40 Najistotniejsze fragmenty Cytat // obiekty tej klasy beda dekorowane class SimpleText extends Information Cytat Proszę zwrócić uwagę na fakt, iż gdy obiekt dekorowany jest tego samego typu co dekoratory jesteśmy w stanie ?dekorować? również dekoratory obiekt dekorowany !== dekorator i nie możesz go nazwać dekoratorem końcowym. Pomijając już sam fakt, że tak jak tam było: new FirstLetter(new TextLength(new SimpleText())); Dekoratory idą od środka w górę, a u Ciebie odnoszę wrażenie, że idziesz od początku w dół, przynajmniej tak wynikało z pierwszego opisu. Trochę wracając jeszcze do tematu frameworka i jego roli, o czym mówiliśmy wcześniej to przykład od olx: (IMG:http://i63.tinypic.com/bjm9.png) Ten post edytował com 11.01.2017, 19:27:12 |
|
|
|
Omenomn Kod doskonały vs rzeczywistość 4.01.2017, 21:15:08
mrc Stosuj dziedziczenie, kompozycję, SOLID i wzorce p... 4.01.2017, 21:44:46
Omenomn Mrc, używam frameworka (Laravel), tam pewna stylis... 4.01.2017, 22:06:07
mrc 2 lata Zend (edit), 2 lata Kohana, rok Symfony i 3... 4.01.2017, 22:14:57
Omenomn Zenda nie znam, na Kohanie niestety, albo stety da... 4.01.2017, 22:49:52
mrc Nie ma co porównywać doświadczeń. Moje doświadczen... 4.01.2017, 22:57:06
Omenomn Umieszczam kod w miejscach uzależnionych od potrze... 4.01.2017, 23:18:54
mrc Stosuj wyżej podane techniki, a na pewno polepszy ... 5.01.2017, 06:54:55
ZenekN dzięki za informację
Cytathttp://helion.pl/ksiazki... 5.01.2017, 08:14:15
mrc +1 ZenekN
Do odpoczynku dochodzi uprawianie sport... 5.01.2017, 08:27:46
Omenomn Okej mrc, zastanawia mnie tylko dlaczego wychodzis... 5.01.2017, 09:50:41
mrc Bo te techniki zapobiegają problemom z nieczytelny... 5.01.2017, 09:53:35
Omenomn Sądzę, że większość programistów ma z tym problem ... 5.01.2017, 10:18:10
ZenekN Ogólnie mam podobny problem ale chyba dlatego że j... 5.01.2017, 11:26:49
nospor @mrc mowisz o tej ksiazce?
http://ricardogeek.com/... 5.01.2017, 11:30:28
mrc @nospor
Tak, ta książka. Osobiście, wolę drukowan... 5.01.2017, 11:40:39
Omenomn Teraz mam np. problem tego typu, że w systemie, na... 5.01.2017, 17:37:11
vokiel Nie jest trochę tak, że szukasz rozwiązania na pro... 5.01.2017, 23:06:19
Omenomn Właśnie o to mi chodzi, że to moje problemy nie do... 6.01.2017, 09:58:30
mrc Omenomn może ucz się tak: dowiedz się, czym jest f... 6.01.2017, 10:59:16
zegarek84 z góry przepraszam za lekki spam, ale z tematu pod... 6.01.2017, 19:58:35
Pyton_000 Nie ma idealnego kodu, ale za to jest Refaktoryzac... 6.01.2017, 22:18:57
com Omenomn
Pierwsze co zrób to zapomnij o frameworku... 7.01.2017, 18:32:58
Omenomn Sądzę, że umniejszasz trochę frameworkom jednak.
... 9.01.2017, 17:48:48 
daro0 Cytat(Omenomn @ 9.01.2017, 17:48:48 )... 10.01.2017, 16:03:56
com CytatSądzę, że umniejszasz trochę frameworkom jedn... 9.01.2017, 20:05:13
Omenomn CytatJesteś pewny, że dobrze go zrozumiałeś?
Tak,... 9.01.2017, 21:05:32
Pyton_000 Dekotator tutaj jest definitywnie złym rozwiązanie... 9.01.2017, 21:05:59
Omenomn Dobrym rozwiązaniem jest, do przekazywania atrybut... 9.01.2017, 21:20:07
mrc Omenomn, skoro coś Ci w decoratorze nie pasuje, to... 10.01.2017, 07:46:23
Tomplus 10 lat temu ktoś powiedział, że trzeba porzucić PH... 10.01.2017, 07:58:49
Omenomn Dekorator to dobre rozwiązanie, ale nie wystarczaj... 10.01.2017, 09:28:53
daro0 Pracuję w Kohana 3.2/3.3 od 2 lat. A nie starszej ... 10.01.2017, 11:02:49
Omenomn Dokładnie, a jakim trzeba być ekspertem, żeby trak... 10.01.2017, 12:09:44
mrc @Omenomn
To co mówisz, składa się na to, co już w... 10.01.2017, 12:17:15
com CytatDekorator to dobre rozwiązanie, ale nie wysta... 10.01.2017, 15:07:22
Omenomn Chodzi o to, że kod ma rozwiązywać między innymi t... 10.01.2017, 17:12:37
Pyton_000 Skoro chcesz obsługiwać upload po typie pliku to F... 10.01.2017, 20:01:02
daro0 Też mi się wydaje że coś na wzór tego mogło by był... 10.01.2017, 20:30:14
Omenomn Po typie pliku jest tylko jeden upload, który ma z... 10.01.2017, 21:04:33
Pyton_000 Przede wszystkim obsługa zapisu/usuwania pliku pow... 10.01.2017, 21:21:06
daro0 Zakładam że są trzy klasy: Uploader_Image, Uploade... 10.01.2017, 21:31:01
Omenomn ale Wy się cały czas rozszerzeniem zajmujecie, a t... 10.01.2017, 21:38:41 
sazian Cytat(Omenomn @ 10.01.2017, 21:38:41 ... 10.01.2017, 22:34:41
Dejmien_85 Sądzę, że każdy ma podobne rozterki do Twoich.
P... 10.01.2017, 22:34:06
Omenomn Chcesz mi wmówić, że stosowanie polskiego nazewnic... 10.01.2017, 22:40:36
com CytatJak daro0 chciałbyś utworzyć tym rozwiązaniem... 10.01.2017, 22:46:48
Omenomn upload, a przed uploadem odpowiednio się plik, a t... 10.01.2017, 23:11:58
com CytatWłasności też, nie tylko funkcjonalności.
To ... 10.01.2017, 23:33:31
Omenomn No to wtedy robi się nakładkę.
CytatSpójrz na swó... 10.01.2017, 23:34:13
com No dokładnie te same dla tej grupy wideo, tak samo... 11.01.2017, 00:46:59
Omenomn CytatWskaż mi gdzie framework ma coś nie udokument... 11.01.2017, 01:46:22 
solificati Cytat(Omenomn @ 11.01.2017, 02:46:22 ... 11.01.2017, 15:19:06
daro0 Prawda jest taka, że gdybym miał się tak zastanawi... 11.01.2017, 09:40:58
Omenomn Jak się poświęci więcej czasu przy jednym projekci... 11.01.2017, 11:32:25 
ohm Cytat(Omenomn @ 11.01.2017, 11:32:25 ... 11.01.2017, 11:55:48
nospor CytatTylko pytanie czy inni też będą wiedzieli jak... 11.01.2017, 12:08:06
Omenomn Zgadzam się z nospor 11.01.2017, 12:17:16
daro0 Jeszcze rok albo dwa lata temu przy wcześniejszych... 11.01.2017, 16:42:08
Omenomn daro0 seriooo? Ten kod jest naprawdę kiepski...
t... 11.01.2017, 22:14:50
Pyton_000 @Omenomn weź w końcu przeczytaj co to jest Decorat... 11.01.2017, 22:46:02
Omenomn Szlag mnie trafi:
http://blogophp.com/2009/08/16/d... 11.01.2017, 22:56:44
Pyton_000 SimpleText nie jest ostatnim a pierwszym. Na dodat... 11.01.2017, 23:38:25
com Omenomn Specjalnie Ci już podkreśliłem fragmenty z... 12.01.2017, 01:20:37
Omenomn Okej, teraz widzę, że w tych tutorialach oni ostat... 12.01.2017, 08:18:14
daro0 Omenomn
Tym razem nie Kohana i nie wiem czy jest ... 12.01.2017, 09:36:50
Pyton_000 single responsibility principle - słyszał? 12.01.2017, 09:40:39
Omenomn Cytat[PHP] pobierz, plaintext $image = Image::fact... 12.01.2017, 09:53:15
mrc @Omenomn
Męczysz się chłopak niemiłosiernie. Prze... 12.01.2017, 10:07:56
Omenomn Przeczytam na pewno.
Ps.
Nie męczę się, bo już to... 12.01.2017, 20:20:47
com Dalsza dyskusja nie ma sensu wiec na tym poście za... 12.01.2017, 21:56:09
Omenomn i tak głównie chodzi o warstwowe nakładanie klas n... 12.01.2017, 23:32:15
com Ponieważ zaczynasz bardziej sensownie pisać to jes... 13.01.2017, 00:49:21
Omenomn Napisałeś praktycznie to samo co Ja, z tym, że u m... 13.01.2017, 01:33:00
com CytatNapisałeś praktycznie to samo co Ja, z tym, ż... 13.01.2017, 11:37:20
Omenomn To co zrobiłeś jest sztywne i kompletnie nie rozsz... 13.01.2017, 13:03:39 
rafkon1990 Cytat(Omenomn @ 13.01.2017, 13:03:39 ... 13.01.2017, 14:34:21
Omenomn Wydaje Ci się 13.01.2017, 15:08:17
kapslokk A mnie zastanawia, po co w ogóle zadajesz pytania ... 13.01.2017, 15:53:50
Omenomn To się zastanawiaj dalej, możemy gadać o php, a ni... 13.01.2017, 16:07:03
com CytatTo co zrobiłeś jest sztywne i kompletnie nie ... 13.01.2017, 17:28:11
Omenomn CytatNo i co mi po tych danych, owszem potrzebuje ... 13.01.2017, 17:44:28
com Cytatżeby zmienić rozmiar obrazka, musisz przekaza... 13.01.2017, 17:56:56
Omenomn Nie kpij sobie, doświadczeniem nie nadrobisz kumat... 13.01.2017, 18:06:03
com CytatNie kpij sobie, doświadczeniem nie nadrobisz ... 13.01.2017, 18:09:57
Omenomn Szaleństwo! Najlepiej piszmy apki w jednym pli... 13.01.2017, 18:15:04
com Zróbmy tak, wrzuć całą swoja implementacje na gita... 13.01.2017, 18:22:01
Omenomn Ok wrzucę, może ktoś się czegoś nauczy.
https://g... 13.01.2017, 18:24:53
daro0 @Omenomn
Zanim zaczniesz jechać po czyimś kodzie ... 13.01.2017, 18:28:31
Omenomn Po moim jadą wszyscy cały czas
Wrzuciłem link na... 13.01.2017, 18:38:11
com CytatCoś długo te poprawki
Bo tam w tym kodzie ni... 13.01.2017, 22:55:16
Omenomn Gdzie Ty tam masz ten Twój niezrozumiały przeze mn... 14.01.2017, 00:17:57
com CytatGdzie Ty tam masz ten Twój niezrozumiały prze... 14.01.2017, 00:40:45
Omenomn [PHP] pobierz, plaintext $upload = new Upload... 14.01.2017, 05:11:26
daro0 Pod Laravela jest coś interesującego np. do obróbk... 14.01.2017, 08:12:27
Omenomn Wrzucałem już link do intervention image w tym tem... 14.01.2017, 09:26:56
rafkon1990 Jako obserwator tematu dziwię się że com jeszcze c... 14.01.2017, 11:12:20
com CytatCiekawe jak zapiszesz plik bez zapisywania in... 14.01.2017, 13:35:18
Pyton_000 @com Co do abstrakcji to klasa abstrakcyjna nie mu... 14.01.2017, 13:45:27 ![]() ![]() |
|
Aktualny czas: 28.12.2025 - 20:28 |