[inny]Własny framework z auto wstrzykiwaniem |
[inny]Własny framework z auto wstrzykiwaniem |
4.08.2017, 07:28:51
Post
#1
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 2 Dołączył: 26.10.2013 Ostrzeżenie: (0%) |
Witam,
Hobbistycznie napisałem własny framework. Czy ktoś mógłby się wypowiedzieć co o nim sądzi. https://github.com/primosz67/tahona-spark-mvc |
|
|
4.08.2017, 10:21:34
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 467 Pomógł: 6299 Dołączył: 27.12.2004 |
Skoro piszesz teraz cos od podstaw, to wypadaloby isc z duchem czasu i pisac to juz w php7 a nie stac w starociu.
Unikaj zbednych zagniezdzen Nie
a:
Unikaj zbednych linii kodu Nie
a:
ps: przenosze edit: zaprzyjaznij sie z PSR zaprzyjaznij sie z UNIT TESTS - teraz to podstawa return isset($obj) && false === is_null($obj); czemu poprostu nie: return !is_null($obj); ? return is_null($obj) || false === isset($obj); czemu poprostu nie return is_null($obj); ?
Po co tworzysz obiekt $da, ktory nigdzie nie jest wykorzystywany? Polecam dobry edytor do pracy, ktore wylapuje takie bledy. Rowniez przydatny moze byc statyczny analizer, ala PHAN isExist() a moze poprostu exist()? Po co tworzysz kilka funkcji, ktore robia dokladnie to samo?
Na bakier tez jestes z warunkow logicznych
Przeciez to: if (empty($a) || empty($b) || $b == 0 || $a == 0) to jest poprostu to if (empty($a) || empty($b)) Poza tym jak juz tworzysz funkcje do dzielenia to od kiedy 2/0 daje 0? Jaki sens maja takie funkcje?
I cala masa innych podobnych? Dalej juz mi sie nie chce. Idee moze i miales sluszna, ale wykladasz sie na drobnostkach. Jesli pisales to tylko dla nauki to i moze ok. Dla innych celow srednio sie nadaje -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
4.08.2017, 16:00:39
Post
#3
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 2 Dołączył: 26.10.2013 Ostrzeżenie: (0%) |
Skoro piszesz teraz cos od podstaw, to wypadaloby isc z duchem czasu i pisac to juz w php7 a nie stac w starociu. edit: zaprzyjaznij sie z UNIT TESTS mam ale w innym projekcie return is_null($obj) || false === isset($obj); czemu poprostu nie return is_null($obj); ? Fajne
Po co tworzysz obiekt $da, ktory nigdzie nie jest wykorzystywany? Polecam dobry edytor do pracy, ktore wylapuje takie bledy. Rowniez przydatny moze byc statyczny analizer, ala PHAN O dzięki. korzystam z PHP storm,ale on nie wyłapuje takich rzeczy sam. jak Sonar w javie. isExist() a moze poprostu exist()? Po co tworzysz kilka funkcji, ktore robia dokladnie to samo? By je trochę pogrupować. Przyjemniejsze api. [quote name='nospor' post='1220019' date='4.08.2017, 11:21:34 ']
Na bakier tez jestes z warunkow logicznych
Przeciez to: if (empty($a) || empty($b) || $b == 0 || $a == 0) to jest poprostu to if (empty($a) || empty($b)) [/quote ] I mówisz mi że to jest logiczne w PHP że $a==0 to to samo co "empty($a)" ?. a jak $a=int (0) to empty ($a) zwróci true ?!. [quote name='nospor' date='4.08.2017, 11:21:34 ' post='1220019'] Poza tym jak juz tworzysz funkcje do dzielenia to od kiedy 2/0 daje 0? [/quote ] Akurat trafiłeś na klasę do wywalenia:D [quote name='nospor' date='4.08.2017, 11:21:34 ' post='1220019'] Jaki sens maja takie funkcje?
I cala masa innych podobnych? [/quote ] Lepsze Api. Również przełożenie metod do utilsów pozwala mi na szybsze programowanie. Część funkcji jest zgodna z Javovym Apache Commons. (Jestem javovcem, a utilsy tworzyłem tylko dla siebie.). Utilsy nie są tu najważniejsze. Bardziej chodziło mi o idee i to co użytkownik tworząc nowy projekt uzyska. Ten post edytował primosz67 4.08.2017, 16:05:35 |
|
|
4.08.2017, 16:07:42
Post
#4
|
|
Grupa: Moderatorzy Postów: 36 467 Pomógł: 6299 Dołączył: 27.12.2004 |
Cytat O dzięki. korzystam z PHP storm,ale on nie wyłapuje takich rzeczy sam. jak Sonar w javie. Zainstaluj plugin "Php inspections" Cytat By je trochę pogrupować. Przyjemniejsze api. Znaczy duplikujesz funkcje by je pogrupowac? Prosze cie... Cytat I mówisz mi że to jest logiczne w PHP że $a==0 to to samo co "empty($a)" ?. a jak $a=int (0) to empty ($a) zwróci true ?!. Zamiast sie glupio pytac to sprawdz. To sa podstawy. Nawet jak nie masz php pod reka, to mogles zajrzec do manuala http://php.net/manual/en/function.empty.php naprawde, po cos go wymyslono. Cytat The following things are considered to be empty: "" (an empty string) 0 (0 as an integer) 0.0 (0 as a float) "0" (0 as a string) NULL FALSE array() (an empty array) $var; (a variable declared, but without a value) Cytat Akurat trafiłeś na klasę do wywalenia:D Do wywalenie czy nie do wywalenia nie zmienia to faktu, ze na jakims tam etapie uznales ze 2/0 to 0 Cytat Bardziej chodziło mi o idee i to co użytkownik tworząc nowy projekt uzyska. Z takim api to raczej nic nie uzyska Z calym szacunkiem, ale po przejrzeniu pobierznie kodu odechcialo mi sie analizowac co ktos moze na tym zyskac. Moze komus innemu bedzie sie chcialo zastanawiac co mozna na tym zyskac -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
4.08.2017, 17:46:30
Post
#5
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 2 Dołączył: 26.10.2013 Ostrzeżenie: (0%) |
Znaczy duplikujesz funkcje by je pogrupowac? Prosze cie... Nie wiem czy znasz taki termin : syntactic sugar . Myślę że na tym możemy zakończyć. Cytat Zamiast sie glupio pytac to sprawdz. To sa podstawy. Nawet jak nie masz php pod reka, to mogles zajrzec do manuala http://php.net/manual/en/function.empty.php naprawde, po cos go wymyslono. Wymyślono go po to by programiści się mylili . Mogliby ją usunąć, zapewne nie jestem pierwszą osobą, która na takie rzeczy się nadziała. W takich sytuacjach zrobienie klasy String::empty(), która zwróci "false" dla 0 w PHP miałoby więcej sensu. Mniejsza, to tylko mój błąd, że nie sprawdziłem w dokumentacji . Cytat Do wywalenie czy nie do wywalenia nie zmienia to faktu, ze na jakimś tam etapie uznałeś ze 2/0 to 0 Z tego co pamiętam to chciałem rozwiązać jakiś przypadek biznesowy, w którym metoda zwraca 0 w przypadku błędu lub braku jakiejś wartości. Cytat Z takim api to raczej nic nie uzyska Z calym szacunkiem, ale po przejrzeniu pobierznie kodu odechcialo mi sie analizowac co ktos moze na tym zyskac. Moze komus innemu bedzie sie chcialo zastanawiac co mozna na tym zyskac Rzeczywiście Api, ma swoje błędy, wiele też błędów zrobiłem. Rozumiem też, że patrzysz na kod z punktu widzenia programisty PHP, to dla mnie wiele znaczy. Zerknij w przykładowy projekt może powie ci to coś więcej. https://github.com/primosz67/spark-mvc-example, Ten post edytował primosz67 4.08.2017, 17:49:38 |
|
|
4.08.2017, 17:56:37
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
Czemu te klasy nie mają normalnych nazw Spark\Core\Costam?
-------------------- |
|
|
4.08.2017, 18:55:30
Post
#7
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 2 Dołączył: 26.10.2013 Ostrzeżenie: (0%) |
Czemu te klasy nie mają normalnych nazw Spark\Core\Costam? Przez pomyłkę. nie zauważyłem, że PHP ma inny standard niż JAVA. Jak jeszcze kiedyś programowałem w PHP to było Spark_Core_Costam (:sick). Teraz mam nadzieje, że PHP zmieni standard na mała\mała\User . Też zauważyłem że lepiej się czyta np. Utils\StringUtils ,a utils\StringUtils - od razu widzisz co jest nazwą klasy, a co pakietem. Wymyślono go po to by programiści się mylili . Mogliby ją usunąć, zapewne nie jestem pierwszą osobą, która na takie rzeczy się nadziała. W takich sytuacjach zrobienie klasy String::empty(), która zwróci "false" dla 0 w PHP miałoby więcej sensu. Mniejsza, to tylko mój błąd, że nie sprawdziłem w dokumentacji . Właśnie zainstalowałem PHP Inspection i dostałem taką odpowiedź - "'empty(...)' counts too many values as empty, consider refactoring with type sensitive checks". PS:PHP Inspection właśnie polizał moje ego Ten post edytował primosz67 4.08.2017, 18:24:42 |
|
|
4.08.2017, 20:28:12
Post
#8
|
|
Grupa: Moderatorzy Postów: 36 467 Pomógł: 6299 Dołączył: 27.12.2004 |
Cytat Nie wiem czy znasz taki termin : syntactic sugar biggrin.gif. Myślę że na tym możemy zakończyć. Co ma slodzenie do bezsensownej duplikacji funkcji? Stworzyles dwie funkcje, obie robia dokladnie to samo i teraz user ma zagwostke, ktora funkcje ma uzyc i sie zastnawaia czy moze raz ma uzyc tej a raz innej. Na dodatek nazwy funkcji sa bzdurne bo jedna to isExist a druga isDirExist co sugeruje, ze druga sprawdza katalog a pierwsza sprawdza cos innego podczas gdy tez sprawdza katalog. No i te nieszczesne isExists.... Po polsku tez mowisz "jest istnieje"? Bo uwierz, po angielsku tez tak nie mowia. Wiec skoro juz poruszasz kwestie slodzenia to chociac zastanow sie czy wszyscy tez uwazaja ze sol jest slodka Cytat Właśnie zainstalowałem PHP Inspection i dostałem taką odpowiedź - "'empty(...)' counts too many values as empty, consider refactoring with type sensitive checks". Mi ani razu nie podkresla empty a uzywam tego pluginu dluzej od ciebie.PS:PHP Inspection właśnie polizał moje eg I jesli uwazasz, ze dzieki temu podkresleniu ten kod if (empty($a) || $a == 0) jest teraz ok to nadal jestes w duzym bledzie Cytat Z tego co pamiętam to chciałem rozwiązać jakiś przypadek biznesowy, w którym metoda zwraca 0 w przypadku błędu lub braku jakiejś wartości. No wlasnie, to jest kolejny problem w twoim kodzie. Juz nie raz napisales, ze cos zrobiles bo ma to sluzyc tobie. Czyli z jednej strony piszesz kod, ktory ma sluzyc tobie, a z drugiej sie pytasz nas, czy sie nadaje dla innych. Nie, z faktu, ze wiekszosc piszesz pod siebie to sie nie nadaje dla innych.
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
4.08.2017, 21:20:37
Post
#9
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 2 Dołączył: 26.10.2013 Ostrzeżenie: (0%) |
Co ma slodzenie do bezsensownej duplikacji funkcji? Stworzyles dwie funkcje, obie robia dokladnie to samo i teraz user ma zagwostke, ktora funkcje ma uzyc i sie zastnawaia czy moze raz ma uzyc tej a raz innej. Na dodatek nazwy funkcji sa bzdurne bo jedna to isExist a druga isDirExist co sugeruje, ze druga sprawdza katalog a pierwsza sprawdza cos innego podczas gdy tez sprawdza katalog. No i te nieszczesne isExists.... Po polsku tez mowisz "jest istnieje"? Bo uwierz, po angielsku tez tak nie mowia. Wiec skoro juz poruszasz kwestie slodzenia to chociac zastanow sie czy wszyscy tez uwazaja ze sol jest slodka A właśnie zauważyłem, że chodzi ci o duplikacje isExist i isDirExist, , a nie isDirExist i is_dir . Sorki źle cię zrozumiałem. Z tym exist masz racje. Cytat Mi ani razu nie podkresla empty a uzywam tego pluginu dluzej od ciebie. I jesli uwazasz, ze dzieki temu podkresleniu ten kod if (empty($a) || $a == 0) jest teraz ok to nadal jestes w duzym bledzie Nie. Podkreślam tylko, że w ogóle używanie metody empty(), to "duży" błąd. Cytat No wlasnie, to jest kolejny problem w twoim kodzie. Juz nie raz napisales, ze cos zrobiles bo ma to sluzyc tobie. Czyli z jednej strony piszesz kod, ktory ma sluzyc tobie, a z drugiej sie pytasz nas, czy sie nadaje dla innych. Nie, z faktu, ze wiekszosc piszesz pod siebie to sie nie nadaje dla innych. Masa rzeczy tak powstaje, że najpierw piszesz coś z własnej potrzeby, a potem dostosowujesz dla innych. |
|
|
4.08.2017, 22:36:58
Post
#10
|
|
Grupa: Moderatorzy Postów: 36 467 Pomógł: 6299 Dołączył: 27.12.2004 |
Cytat Nie. Podkreślam tylko, że w ogóle używanie metody empty(), to "duży" błąd. Bledem co najwyzej bylo powstanie tej funkcji. A skoro juz jest, to uzywanie jest ok. Sam zreszta jej uzywasz tylko nie znales jej "wszyskich mozliwosci" Cytat Masa rzeczy tak powstaje, że najpierw piszesz coś z własnej potrzeby, a potem dostosowujesz dla innych Moze i tak. Nie mniej jednak uwazam iz na chwile obecna twoj kod nie nadaje sie dla wiekszej publicznosci.
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
20.08.2017, 14:44:04
Post
#11
|
|
Grupa: Zarejestrowani Postów: 3 033 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%) |
Sonar jest tak samo do PHP jak do Javy, tylko dorzucić trzeba bo go nie dają w paczce
vendor, composer.lock wrzuć do gitignora, bo one w repo są zbędne Cytat Z tego co pamiętam to chciałem rozwiązać jakiś przypadek biznesowy, w którym metoda zwraca 0 w przypadku błędu lub braku jakiejś wartości. To świadczy o tym, ze ten przypadek biznesowy ma złe założenia, a sama metoda robi więcej niż powinna. Brak testów dla takiego frameworka strasznie ogranicza jego używalność, bo tylko Ty wiesz i znasz wszystkie jego możliwości, a nikt z nas nie wie nawet czy to działa poprawnie. |
|
|
20.08.2017, 15:02:16
Post
#12
|
|
Grupa: Moderatorzy Postów: 36 467 Pomógł: 6299 Dołączył: 27.12.2004 |
Cytat composer.lock wrzuć do gitignora, bo one w repo są zbędne No chyba nie do konca...
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
20.08.2017, 16:14:25
Post
#13
|
|
Grupa: Zarejestrowani Postów: 3 033 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%) |
Wersje zależności określone są i tak w właściwym pliku i raczej jeśli nie piszemy w Laravelu, to nie dostaniemy nagle BC breaka, wiec zaciągniecie nawet nowszego minora nie powinno mieć wgl wpływu na nasz kod. Ale oczywiscie jak ktos sie uprze to niech zostanie, vendor jednakże trzeba wyrzucić, szczególnie, że tu jest niekompletny nawet
Ok, oczywiście jest jeszcze druga kwestia, wtedy lock jak najbardziej powinien się znaleźć, kiedy repo to służy do pusha na produkcje, ale to jest akurat biblioteka, która ciągle się zmienia, wiec i zmienia się wersja naszych zależności i silne wiązanie w tym wypadku jest niekoniecznie dobrym pomysłem |
|
|
20.08.2017, 16:16:23
Post
#14
|
|
Grupa: Moderatorzy Postów: 36 467 Pomógł: 6299 Dołączył: 27.12.2004 |
Cytat i raczej jeśli nie piszemy w Laravelu, to nie dostaniemy nagle BC breaka, Wlasnie, "raczej".... composer.lock zawiera aktualnie zainstalowane i przetestowane pakiety. To z niego ma isc wszystko na produkcji a nie na produkcji radosnie pobieramy sobie wszystko co nowe bez zadnych testow. w vendor mamy mase zewnetrznych bibliotek pisanych przez ludzi i jak wszystko zawierajacych bledy. I nie mowa tu tylko o Laravel. Ostatnio w symfony zrobili BC break i zamiast strony logowania mialem komunikat o wyjatku. Wszystko dlatego ze ktoryms momencie chlopaki od symfony zmienili kolejnosc Exception Handlerow. Na szczescie composer update robimy na dev/test i zostalo to wylapane w mig i wstrzymane z wrzuta na serwer live. Na bugfixa od symfony musialem czekac prawie miesiac po tym jak im to zglosilem. Nie wyobrazam sobie robic composer update na serwerze live. To jakis zart. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
20.08.2017, 16:42:21
Post
#15
|
|
Grupa: Zarejestrowani Postów: 3 033 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%) |
nospor
Ok, w tym wypadku się z Tobą w 100% zgadzam, tylko że jak mamy dobrze zorganizowany deploy, to najwyższej wyłoży się nam na budowaniu i testach, oczywiście jak rzucamy żywcem paczkę wprost z naszego repo to jak najbardziej, to ma znaczenie, o czym i Ty wspominasz i ja wspomniałem, ale się minęliśmy bo to dodałem chwile później Dobrze uznajmy że lock zostaje, będzie bezpieczniej update na produkcji, nigdy w życiu mówiłem o wersji dev, bo to tutaj to dopiero jest baza do kodu produkcyjnego, to jest tylko zależność w composerze, nie sam kod produkcyjny I w tym momencie właśnie kuleje to co kolega przygotował, przez brak testów. Bo nic nie wiemy o integracji z zewnętrznymi zależnościami i czy tak jak u Ciebie nie ma gdzieś BC breaka. Akurat tego typu framework/biblioteka, powinna być dobrze pod tym względem przetestowana i wtedy mamy aktualny i działający kod. Tu bez wątpienia ratujemy się własnie tym lockiem, ale to nie znaczy, ze to dobre podejście jest Osobiście locka bym widział tu: https://github.com/primosz67/spark-mvc-example, dałeś przykład Symfony tu: https://github.com/symfony/symfony też go nie ma, a tym jest w teorii https://github.com/primosz67/tahona-spark-mvc, za to jest tutaj https://github.com/symfony/symfony-demo, czyli tak jak wspomniałem u nas było by to https://github.com/primosz67/spark-mvc-example bo dopiero tam defakto piszemy kod który wyleci na produkcje Ten post edytował com 20.08.2017, 16:44:47 |
|
|
20.08.2017, 18:57:45
Post
#16
|
|
Grupa: Moderatorzy Postów: 36 467 Pomógł: 6299 Dołączył: 27.12.2004 |
Cytat Osobiście locka bym widział tu: https://github.com/primosz67/spark-mvc-example, dałeś przykład Symfony tu: https://github.com/symfony/symfony też go nie ma, a tym jest w teorii https://github.com/primosz67/tahona-spark-mvc, za to jest tutaj https://github.com/symfony/symfony-demo, czyli tak jak wspomniałem u nas było by to https://github.com/primosz67/spark-mvc-example tongue.gif bo dopiero tam defakto piszemy kod który wyleci na produkcje biggrin.gif ok, teraz ja sie z toba zgadzam
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
21.08.2017, 06:48:58
Post
#17
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
Tu jest dobrze wyjaśnione: https://stackoverflow.com/questions/1289678...version-control
|
|
|
23.08.2017, 16:09:46
Post
#18
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 2 Dołączył: 26.10.2013 Ostrzeżenie: (0%) |
|
|
|
25.08.2017, 08:32:32
Post
#19
|
|
Grupa: Zarejestrowani Postów: 195 Pomógł: 14 Dołączył: 12.01.2006 Skąd: Gotham City Ostrzeżenie: (0%) |
Unikaj zbednych linii kodu Nie
a:
No tu mnie zaskoczyłeś że wolisz taki nieczytelny "syf" z dwoma returnami w jednej instrukcji. Ja tam stanowczo wole więcej linii kodu jeśli tylko objaśnia to lepiej sam kod i powoduje że kod staje się czytelniejszy. Nie wiem czy dalej cie lubię. Musze to teraz przemyśleć -------------------- Temat zamykam i przenoszę do Bangladeszu.
To jest wiadomość śmierci jeśli ją czytasz to znaczy że pozostało ci 30 sekund życia, więc lepiej zacznij się modlić. |
|
|
25.08.2017, 09:24:45
Post
#20
|
|
Grupa: Moderatorzy Postów: 36 467 Pomógł: 6299 Dołączył: 27.12.2004 |
Haha, dzieki emp za zwrocenie uwagi. Kopiowalem na szybko i nawet nie dolukalem. Oczywiscie mialo byc
Wielki brat czuwa Cytat Ja tam stanowczo wole więcej linii kodu jeśli tylko objaśnia to lepiej sam kod i powoduje że kod staje się czytelniejszy. No wlasnie, slowo klucz: JESLI W tym wypadku wydaje mi sie iz moja (poprawiona) wersja jest bardziej czytelna
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
Wersja Lo-Fi | Aktualny czas: 10.05.2024 - 06:49 |