Co by som mal robit inak / co zlepsit v mojom kode

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

Ahojte,

som zaciatocnik v Nette a napisal som svoju prvu aplikaciu – jednoduche diskusne forum. Chcel by som poprosit skusenejsich programatorov v Nette, aby mi poradili co zlepsit v mojom kode, co pisat inak a pod. :)

Prikladam URL ku svojmu github repozitaru: https://github.com/…/simpleForum

Tiez by som mal este nejake dalsie otazky, na ktore sa snazim ziskat odpovede
config mam vyplneny spravne? co by v nom este malo byt?
kedy priradujete premenne do $this->template? nazaciatku/nakonci?
ked zapisujem udaje do databazy – kde by som mal overovat, ci tam posielam spravne udaje? model /prezenter/sablona?

Dakujem za kazdu radu.

Editoval xHRo (27. 6. 2015 12:19)

bazo
Člen | 620
+
+2
-

len tak zbezne: nedavat prec password hashovanie z nette a nahradzovat ho prekonanymi md5 alebo sha funkciami. jedine ak ho chces nahradit za iny bcrypt. VZDY pouzivaj bcrypt alebo nieco lepsie. a naco su ti tam 3 sposoby hashovania hesiel?

preco priradzujes role podla id-ciek userov?

toto je velmi zaujimava konstrukcia $this->findAll()->insert(…), dava ti to zmysel? mne nie

<?php
protected $amr;
    protected $cr;
    protected $tr;
    protected $rr;
    protected $ur;
?>

si lenivy pisat nazvy?

coding standard nezodpoveda nette

config.local sa neverzuje, nbproject nepatri do verejneho projektu

a preco to ma v readme tutorial k source tree?

Caine
Člen | 216
+
0
-

Nazvy rozhodne nepsat zkratkama, je to neprehledny a nic nerikajici.. Napr v PHPStormu napises stejnej pocet znaku napr to „ur“ a uz ti to samo nabizi jako prvni UserRepository..

Pak nedavat vsechno do base presentru, jen to, co tam je skutecne potreba a ne to, co by mozna nekdy mohl nejaky potomek pouzit. Jakmile budes mit tech servisu 50, tak se z toho pak p**** a jeste v kombinaci se zkratkama;D A abys nemusel vsude psat inject metody, muzes pouzit "@inject" anotaci, pripadne https://github.com/Kdyby/Autowired, ktere prida anotaci "@autowire", coz je v podstate lazy inject (tedy servis se vytvori, az kdyz ho skutecne potrebujes).

Editoval Caine (27. 6. 2015 12:41)

Mysteria
Člen | 797
+
0
-

Tři způsoby hashování tam jsou nejspíš proto, že pro přihlášení do fóra využívá údajů z externího zdroje (plugin AuthMe, hra Minecraft) a ten podporuje jenom tyhle tři, takže bcrypt použít nemůže ani kdyby stokrát chtěl. Takže ano, bcrypt je fajn když si řešíš přihlašování sám, ale v tomhle případě to jinak bohužel nejde.

Azathoth
Člen | 495
+
0
-

co se týče validace údajů…já ji dělám 2×. v modelu, abych zajistil konzistenci dat za každou cenu a vyhazuji výjimky, pokud dostanu špatná data (radši uživateli zobrazit 500 než mít špatná data). A v prezenteru si je validuji z formulářů a hlášky píšu do addError…

Azathoth
Člen | 495
+
0
-

dále: parametry si netahej přes context, ale nech si to injectnout…setteremnebo di přihlašování vyhoď do komponenty a té to pošli do konstruktoru. Obecně o všechno z configu by sis měl říct pomocí DI, ne pomocí $this->context.

Na menších projektech je to asi jedno, ale správně bys měl veškerou logiku řešit v modelu. a presentery a kompomenty by měly dělat akorát validaci dat a volání modelu. Např. posílání mailů má být v modelu, ne v admin presenteru.

jinak stejné věci jako psali ostatní…
a možná, když někde používáš setRequired, tak ho používat všude, a ne mít místo toho někde Rule Form::FILLED…, prostě být v tom konzistentní.

možná datum u přidání příspěvků by měl řešit model a ne presenter…

když používáš setRequired, tak u zoho možná mít chybové hlášky…

to template taky cpu proměnné až na konci…

u signUp bys asi měl kontrolovat jedinečnost username…

a samozřejmě, pokud má někdo jiný názor, moc rád si ho vyslechnu.

a samozřejmě je dobré zvážit, zda nechceš přejít z nette database na nějaké orm, třeba doctrine, ale to už je hodně o osobních preferencích a velikosti projektu

xHRo
Člen | 13
+
0
-

Dakujem chalani za vsetky rady, ja to skusim prepracovat a potom to sem uploadnem este raz na kontrolu, ci to splna uz tie nette standardy.

Azathoth – vies mi prosim ta vysvetlit, v com su vyhody orm databaz? toto ma vcelku zaujalo, pre velke projekty ich odporucas? v com su lepsie?