Kontrola Nette projektu + ajax rendering vyřešit lépe

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Kcko
Člen | 470
+
0
-

Dělám s Nette nějakou dobu a pořád se považuji za začátečníka. Vytáhl jsem z minulého roku takový velmi jednoduchý a neobsáhlý začínající fotbalový projekt a kdyby se někdo chtěl podívat a případně mi okomentovat kritické nebo nevhodné části kódu.

S Nette ajaxem nejsem příliš velký kamarád, a tady jsem se s tím nějak popasoval (jedná se o ukládání výsledků a překreslení tabulky týmů a zápasů), ale přijde mi to nějak pomalé a nevím jestli to nejde napsat nějak lépe.

Github: https://github.com/…soccer-nette
Demo: http://soccer.rjwebdesign.cz/…ion/detail/1
Dump db je v rootu webu.

Za cokoliv podnětného budu rád (je to vlastně výpis nějakých nastavených fází v turnaji a k tomu přísluší týmy a zápasy a zadávání výsledků).

Editoval Kcko (10. 9. 2016 17:09)

GEpic
Člen | 566
+
0
-

Říká vám něco soubor .gitignore? Co se týče jinak GITu, vy jste nejspíš nikdy nepracoval v teamu, že?

Jinak mě osobně trošku trápí Coding Standard

A odkaz na demo bohužel nefunguje.

PS:
K čemu slouží tyto konstanty?:

	const COMPETITION_ID = 1;
	const SEASON_ID = 1;

Editoval GEpic (10. 9. 2016 16:54)

Kcko
Člen | 470
+
+1
-

Odkaz opraven (byl to link z localhostu),.

add GIT – pracuji v git týmu ;-), tohle jsem tam nahrál opravdu dost naprasáka a bez závislostí, to vím.
add Constanty – pozůstatek, už k ničemu.
add gitignore (viz výše, neměl jsem chuť ted vyjmenovavat a vypínat to co tam být nemá, snad se někdo zaměří jen na komponenty a presentery ..)

Oli
Člen | 1215
+
0
-

Napátkou na co jsem koukal:

  1. config.local.neon je jen lokální. Neměl by být v gitu a jsou tam jen specifická nastavení (připojení k databázi, …). Služby mají být v config.neon
  2. tohle je fuj. Pokud se projekt nebude rozrůstat a zůstanou jen cca 4 presentery, tak je to asi jedno. Pro rostoucí, udržovatelný projekt by se Database\Context mělo volat jen v nějaké servisní/modelové vrstvě.
  3. tahle metoda se mě zdá složitá, možná by šla zjednodušit, rozdělit na víc metod. A možná taky ne, nezkoumal jsem ji blíž…
  4. Tohle je asi o zvyku, ale pro interface si vytvářím vlastní soubor
  5. tahle metoda by šla určitě rozdělit. Vždyť má přes 100 řádků a samý if else. Takhle se to blbě čte.
  6. Tohle v nette 2.4 nebude fungovat, je to deprecated. Přepiš to jako [$this, 'submitEditForm']
  7. tady bych udělal fallback pro normální dotaz if $presenter->isAjax() else $presenter->redirect('this'). A klidně by to mohlo být jako událost.
Kcko
Člen | 470
+
0
-

Oli napsal(a):

Napátkou na co jsem koukal:

  1. config.local.neon je jen lokální. Neměl by být v gitu a jsou tam jen specifická nastavení (připojení k databázi, …). Služby mají být v config.neon
  2. tohle je fuj. Pokud se projekt nebude rozrůstat a zůstanou jen cca 4 presentery, tak je to asi jedno. Pro rostoucí, udržovatelný projekt by se Database\Context mělo volat jen v nějaké servisní/modelové vrstvě.
  3. tahle metoda se mě zdá složitá, možná by šla zjednodušit, rozdělit na víc metod. A možná taky ne, nezkoumal jsem ji blíž…
  4. Tohle je asi o zvyku, ale pro interface si vytvářím vlastní soubor
  5. tahle metoda by šla určitě rozdělit. Vždyť má přes 100 řádků a samý if else. Takhle se to blbě čte.
  6. Tohle v nette 2.4 nebude fungovat, je to deprecated. Přepiš to jako [$this, 'submitEditForm']
  7. tady bych udělal fallback pro normální dotaz if $presenter->isAjax() else $presenter->redirect('this'). A klidně by to mohlo být jako událost.
  1. souhlas
  2. Určitě, je to starý kód, v současných projektech jede všechno jen z modelů
  3. No, ona je složitá sama o sobě, dělá to co má, s Nette toho moc společného nemá, přijde mi to OK.
  4. Dle zvyku, ale asi ano.
  5. Šla, hodil sem to tam ze starého projektu, který neběžel na Nette, přepisovat se mi nechtělo, šlo mi o to aby to dělalo co to dělat má, souhlasím jinak.
  6. Vím, o tom, ale díky.
  7. Fajn, díky.

Vím, o tom, že půlka věci je tam řešená blbě nebo zastarale (je to projekt z konce roku 2014, v podstatě to není ani projekt, jeden večer jsem se nudil tak jsem si procvičoval Nette)

Nějaké myšlenky tam jsou podle mě dobré = komponenty na zápasy, tabulky a výsledky a primárně mi šlo o ten ajax, přijde mi to vykreslování pomalé tak jestli to nejde nějak zrychlit.

Díky za rozbor.

CZechBoY
Člen | 3608
+
0
-

@Kcko pokud je něco pomalýho tak použiju profiler a zjistím kde to vázne (třeba db dotazy/indexy, nějaká rekurze, volání toho stejnýho kodu vícekrát atd.)

Kcko
Člen | 470
+
0
-

CZechBoY napsal(a):

@Kcko pokud je něco pomalýho tak použiju profiler a zjistím kde to vázne (třeba db dotazy/indexy, nějaká rekurze, volání toho stejnýho kodu vícekrát atd.)

To ne spíš ten Ajax a to překreslování nevím jestli mám korektně ;-) byla to metoda pokus omyl až to začalo fungovat.

iNviNho
Člen | 352
+
0
-

Pozrel som iba jeden presenter a odporucam obcas pisat aj komentare cez anotacie :)

Aaa vobec sa mi nepaci, ze zavislosti pri triedach predavas rucne a nenechas to na nette :(

Kcko
Člen | 470
+
0
-

iNviNho napsal(a):

Pozrel som iba jeden presenter a odporucam obcas pisat aj komentare cez anotacie :)

Aaa vobec sa mi nepaci, ze zavislosti pri triedach predavas rucne a nenechas to na nette :(

Jakou závislost máš konkrétně na mysli?

hitzoR
Člen | 51
+
0
-

iNviNho napsal(a):

Pozrel som iba jeden presenter a odporucam obcas pisat aj komentare cez anotacie :)

Aaa vobec sa mi nepaci, ze zavislosti pri triedach predavas rucne a nenechas to na nette :(

Jen tak rychle jsem to prolít, ale žádnou chybu tam nikde nevidím. V presenteru si závislosti vkládá přes metodu inject a v modelu to má správně přes konstruktor.

iNviNho
Člen | 352
+
0
-
<?php
	$control = new Components\Tables($this->database, $this->modelTable);

		return $control;

?>

toto som myslel… neviem ci mate na to specialny dovod, ale ja by som skor pouzil nejaku interface aby som nemusel tam stale vkladat tie zavislosti rucne… a napr ak by presenter nevyuzival $this->database ale iba jeho komponenta, tak o tom presenter nemusi a ani nema vediet…

:)

CZechBoY
Člen | 3608
+
0
-

@iNviNho no obecně nevidim nikde žádnou factory (jedna tam je, která se dokonce předává z presenteru :-) ).

iNviNho
Člen | 352
+
0
-

@CZechBoY skrátka to som myslel :)