Kontrola Nette projektu + ajax rendering vyřešit lépe
- Kcko
- Člen | 470
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
Ří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
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
Napátkou na co jsem koukal:
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- 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ě.
- 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íž…
- Tohle je asi o zvyku, ale pro interface si vytvářím vlastní soubor
- tahle metoda by šla určitě rozdělit. Vždyť má přes 100 řádků a samý if else. Takhle se to blbě čte.
- Tohle
v nette 2.4 nebude fungovat, je to deprecated. Přepiš to
jako
[$this, 'submitEditForm']
- 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
Oli napsal(a):
Napátkou na co jsem koukal:
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- 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ě.
- 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íž…
- Tohle je asi o zvyku, ale pro interface si vytvářím vlastní soubor
- tahle metoda by šla určitě rozdělit. Vždyť má přes 100 řádků a samý if else. Takhle se to blbě čte.
- Tohle v nette 2.4 nebude fungovat, je to deprecated. Přepiš to jako
[$this, 'submitEditForm']
- 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.
- souhlas
- Určitě, je to starý kód, v současných projektech jede všechno jen z modelů
- 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.
- Dle zvyku, ale asi ano.
- Š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.
- Vím, o tom, ale díky.
- 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.
- Kcko
- Člen | 470
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.
- hitzoR
- Člen | 51
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
<?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…
:)