Diskuze: Co by jste na PHP zlepšili?

PHP PHP Co by jste na PHP zlepšili? American English version English version

Avatar
Inoue Yūki
Redaktor
Avatar
Inoue Yūki:

Tak si tu sedím nad snídaní, dívám se do svých starých kódů, a přitom mě napadá otázka: "Co by jste na PHP zlepšili?". Určitě je toho spoustu - strašně pojmenované a definované funkce, nedodělané OOP...

Takové diskutabilní téma. :)

Odpovědět 12.6.2013 11:02
Avatar
Kit
Redaktor
Avatar
Odpovídá na Inoue Yūki
Kit:

Zkus se podívat na specifikaci PHP6 a porovnávej.

Nahoru Odpovědět 12.6.2013 11:06
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Inoue Yūki
Redaktor
Avatar
Inoue Yūki:

Mno, PHP6 nijak velký skok nepřinese, jen snad ta podpora Unicode a řetězce alá Python ($neco->lenght())

Nahoru Odpovědět 12.6.2013 11:11
Avatar
Inoue Yūki
Redaktor
Avatar
Inoue Yūki:

Navíc PHP je strašně tolerantní, a nachylný k chybám. Ten problém PHP6 ještě zvětšil.

Nahoru Odpovědět 12.6.2013 11:14
Avatar
Kit
Redaktor
Avatar
Odpovídá na Inoue Yūki
Kit:

Na PHP bych asi nejraději zlepšil programátory, kteří ho používají. Některé aplikace vypadají fakt strašně. Asi by nebylo od věci z PHP vyházet cca 80-90 % funkcí.

Nahoru Odpovědět 12.6.2013 11:17
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Inoue Yūki
Kit:

Náchylnost k chybám se dá snadno eliminovat metodou TDD, která je podle mne pro PHP důležitější než pro ostatní jazyky.

Nahoru Odpovědět 12.6.2013 11:23
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

PHP 6 vypadá skvěle a pokud udělali řetězce konečně jako objekty, tím lépe.

Nahoru Odpovědět  +1 12.6.2013 11:27
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Řetězce v PHP už jsou objekty. Jen ty metody jim stále chybí :)

Nahoru Odpovědět 12.6.2013 11:33
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Inoue Yūki
Redaktor
Avatar
Odpovídá na Kit
Inoue Yūki:

Tak nějak. Když se koukám na některé kódy, bolí mě oči. :D O tom vyházení funkcí - to by taky nebyl špatný nápad, něco by se dalo zautomatizavat...
Já náchylnost k chybám eliminuju frameworky, a když už čistý PHP, tak už si holt musím dávat pozor. Ale PHP někdy povolí takový paskvil, který by jiný jazyk ani nedovolil přeložit.

Určitě, přiřazený metod k řetězcům je skvělí, snad více lidí přejde k OOP. Ale nejspíš to udělá ještě větší bordel u OOP...

Nahoru Odpovědět 12.6.2013 11:52
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Inoue Yūki
David Čápka:

OOP je v PHP dobře implementováno, nic mi v něm nechybí.

Nahoru Odpovědět 12.6.2013 11:55
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Inoue Yūki
Redaktor
Avatar
Inoue Yūki:

Když vyšlo PHP4, myslel jsem, že k OOP při PHP nikdy nepůjdu. PHP5 to trochu zpravilo, ale oproti jiným jazykům má PHP mnohem horší OOP.

Nahoru Odpovědět 12.6.2013 11:59
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Inoue Yūki
David Čápka:

Ne, má ho úplně stejné.

Nahoru Odpovědět 12.6.2013 12:06
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Inoue Yūki
Kit:

Java šla cestou, že každou funkci uložila do nějaké třídy jako metodu. Ukázalo se, že je to správná cesta. Funkcí pro práci s řetězci je v PHP tolik, že v nich je už docela velký zmatek.

Frameworky také bývají plné chyb. Podle mne mohou být zajímavé pouze moduly PEAR a PECL. S ostatními frameworky mám převážně špatné zkušenosti, často jsem je z poloviny musel přepsat, aby dělaly co mají.

Nahoru Odpovědět 12.6.2013 12:07
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Inoue Yūki
Kit:

V čem je horší OOP v PHP proti ostatním jazykům?

Nahoru Odpovědět 12.6.2013 12:08
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Petr Nymsa
Redaktor
Avatar
Petr Nymsa:

Osobně by mě pomohlo kdyby funkce a vše okolo bylo mnohem přehlednější. Některé názvy funkcí ani skoro nic neřeknou co dělají. Dále (to už je o zvyku) mi nesedí (nebo nejsem spíš zvyklý) dynamické typování. Prostě když kouknu na kód Javy / C# apod vidím co je co. Když kouknou na kód PHP nevím jestli je tam uložené číslo, string, objekt ... ale asi to je o zvyku

Nahoru Odpovědět 12.6.2013 12:11
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Petr Nymsa
David Čápka:

Co je tam uložené poznáš ze správně zvoleného názvu proměnné :)

Nahoru Odpovědět  +2 12.6.2013 12:16
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na David Čápka
Petr Nymsa:

To je fakt :) Ale ty funkce jsou matoucí ... ne všechny ale občas prostě nevím jak je vlastně hledat. Jsem zvyklý prostě ze C# že když hledám funkce pro práci ze stringy najdu ji pod objektem string (například Replace, Trim, Split, Join ,...). Ale funkce strpos už není tak pěkný. Sice vím že to bude zřejmě zkratka pro string position ale stejně :)

Nahoru Odpovědět 12.6.2013 12:18
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Petr Nymsa
David Čápka:

Ano, ty funkce jsou naprosto hloupě pojmenované i navržené, bohužel jsou tam potřeba z důvodu kompatibility. Hodně věcí se již zlepšilo, třeba pro práci s datem a časem je tam teď třída a funkce používat nemusíš. Jestli v šestce přidají metody na stringy a třeba i pole, zas se to zlepší.

Nahoru Odpovědět 12.6.2013 12:20
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na David Čápka
Petr Nymsa:

Věřím v to :) PHP se mi líbí, sice ještě jsem v něm nevytvořil nic moc pěknýho ale op rázdninách chci vytvořit nějaký vlastní "redakční systém" pro svůj web. Prostě správu článků apod.

Jinak myslím že z OOP tam nic nechybí.

Pro všechny. Jaké máte zkušenosti se Zend Frameworkem. Mám knihu PHP 5 a MySQL a popisují tam PEAR, Zend framewrok a ještě jeden , teď si nevzpomenu na jméno.

Nahoru Odpovědět 12.6.2013 12:25
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Inoue Yūki
Redaktor
Avatar
Odpovídá na Kit
Inoue Yūki:

Například směle vynechali mnohonásobnou dědičnost. :)

Nahoru Odpovědět 12.6.2013 12:28
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Inoue Yūki
Petr Nymsa:

Například C# ji také nemá a nevadí to. Kvůli tomu existují Interface a pokud vím, PHP už je má taky.

Nahoru Odpovědět 12.6.2013 12:31
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Inoue Yūki
Redaktor
Avatar
Inoue Yūki:

Funkce v PHP jsou někdy naprosto hrozně pojmenované, někdy skvěle, někdy přejímají z jiných jazyků... Mě osobně se PHP líbí, a doufám, že jednou se dostane na stejnou úroveň jako třeba Java. :)

Ale stále PHP byl původně šablonovací systém, takže už teď to dotáhl daleko. :)

Nahoru Odpovědět 12.6.2013 12:31
Avatar
Inoue Yūki
Redaktor
Avatar
Odpovídá na Petr Nymsa
Inoue Yūki:

Interface je něco trochu jiného než extends. Mě osobně by to ulehčilo práci, kdyby to bylo jako v Pythonu:

class Trida extends Trida2, Trida3:
Nahoru Odpovědět 12.6.2013 12:33
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Inoue Yūki
David Čápka:

Většina programovacích jazyků nepodporuje vícenásobnou dědičnost, jelikož nadělá více problémů než užitku.

Nahoru Odpovědět 12.6.2013 12:35
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Inoue Yūki
Redaktor
Avatar
Inoue Yūki:

Všechny vnitřní PHP fuknce jsou procedurální, a proto "dobrý OOP" PHP nedovoluje. Kombinovat je s OOP je hnus, ale bohužel v PHP to jinak nejde. :)

Nahoru Odpovědět 12.6.2013 12:36
Avatar
Odpovídá na Petr Nymsa
Lukáš Hruda (Luckin):

Vícenásobná dědičnost a interface jsou 2 různé věci. Někdy se pomocí interface dá vícenásobná dědičnost obejít, ale určitě ho nenahrazuje. Osobně jsem vícenásobnou dědičnost použil jen jednou, ale bylo to zrovna v případě, kde by mi interface nebylo moc platné.

 
Nahoru Odpovědět 12.6.2013 12:36
Avatar
Kit
Redaktor
Avatar
Odpovídá na Inoue Yūki
Kit:

Vícenásobná dědičnost je problém. Osobně si myslím, že ani v Pythonu by neměla být. Pokud potřebuješ vícenásobnou dědičnost, máš zřejmě chybu v návrhu.

Nahoru Odpovědět  +1 12.6.2013 12:38
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Inoue Yūki
Redaktor
Avatar
Inoue Yūki:

Nebo si vemte chybnou implementaci self::. V PHP obyčejný Singlenton nenapíšeš.

Nahoru Odpovědět 12.6.2013 12:39
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Inoue Yūki
David Čápka:

OOP není o tom, jak se pracuje s řetězci nebo poli. Je o návrhu aplikace a rozdělení aplikace do spolupracujících objektů. To PHP umí velmi dobře, např. na stejné úrovni jako Java.

Nahoru Odpovědět  +1 12.6.2013 12:39
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Inoue Yūki
David Čápka:

Máš nějaké mylné informace. Zaprvé je Singleton antipattern a neměl bys ho používat (stejně jako vícenásobnou dědičnost), zadruhé jde v PHP udělat úplně normálně.

Nahoru Odpovědět  +1 12.6.2013 12:41
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Inoue Yūki
Kit:

Singleton je antipattern, neměl by se používat.

Nahoru Odpovědět 12.6.2013 12:41
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Lukáš Hruda (Luckin):

Nemyslím si, že by na vícenásobné dědičnosti bylo něco špatného, pokud člověk ví co dělá a použije to pouze tam, kde k tomu má dobrý důvod.

 
Nahoru Odpovědět 12.6.2013 12:43
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Lukáš Hruda (Luckin)
Petr Nymsa:

Netvrdím že Interface slouží k vytvoření vícenásobné dědičnosti. Nijak ji nepoužívám. Ale dá se to tak použít.

Interface zatím osobně také moc nepoužívám. Ve hře zatím pro označení, vytvoření objektů které podporujů světla (jdou ovlivnit světlem)

Nahoru Odpovědět 12.6.2013 12:44
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Lukáš Hruda (Luckin)
David Čápka:

No právě, ono těch důvodů moc není :) Vždy jde udělat abstraktní předek a podědit to 2x.

Nahoru Odpovědět 12.6.2013 12:44
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Inoue Yūki
Redaktor
Avatar
Odpovídá na Kit
Inoue Yūki:

Jistě, že by se neměl používat, ale přesto je to jeden z nejznámějších (a podle mě i celkem užitečných) návrhových vzorů. Osobně používám MVC, ale když potřebuju, proč si nevytvořit singlenton registr?

Nahoru Odpovědět 12.6.2013 12:47
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Inoue Yūki
David Čápka:

Když si uděláš běžnou statickou třídu, dosáhneš stejného efektu.

Nahoru Odpovědět 12.6.2013 12:48
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Inoue Yūki
Redaktor
Avatar
Inoue Yūki:

Vždycky se ti ale někde může náhodou vytvořit její instance, což už by bylo špatně.

Nahoru Odpovědět 12.6.2013 12:50
Avatar
Odpovídá na David Čápka
Lukáš Hruda (Luckin):

"Vždy jde udělat abstraktní předek a podědit to 2x"
Moc nechápu jak přesně tohle myslíš.

 
Nahoru Odpovědět 12.6.2013 12:50
Avatar
Kit
Redaktor
Avatar
Odpovídá na Inoue Yūki
Kit:

Singleton je k ničemu. Proč bych ho měl používat?

Nahoru Odpovědět 12.6.2013 12:56
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Lukáš Hruda (Luckin)
Petr Nymsa:

abstract class Zvíře

public abstract NajezSe()
....

abstract class Savec : Zvire
public abstract SajMleko()
....

class Clovek : Savec
Nahoru Odpovědět 12.6.2013 12:56
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Kit
Redaktor
Avatar
Odpovídá na Inoue Yūki
Kit:

Náhodou se žádná instance nevytvoří. Asi si to s něčím pleteš.

Nahoru Odpovědět 12.6.2013 13:00
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Inoue Yūki
David Čápka:

Když si vytvoříš instanci třídy, která má vše statické, tak s tou instancí nepůjde nic dělat :)

Nahoru Odpovědět 12.6.2013 13:00
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Inoue Yūki
Redaktor
Avatar
Inoue Yūki:

Nepletu. Na projektech někdy pracuje více programátorů najednou. Máš třeba statickou třídu Registry, používáš jí jen jednou, ale pak ti někdo přijde (a jelikož PHP pustí všechno) a načte ti další instanci, což Singleton nedovolí.

Nahoru Odpovědět 12.6.2013 13:01
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Inoue Yūki
David Čápka:

K tvému původnímu dotazu si myslím, že PHP je objektovým návrhem velmi vyspělé a jediným problémem je zátěž v těch starých funkcích, které však nepředstavují takový problém a zároveň se objevují třídy, které je nahrazují.

Nahoru Odpovědět  +1 12.6.2013 13:02
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Inoue Yūki
Redaktor
Avatar
Inoue Yūki:

Dobrá, nechme toho. :)

sdraco: Souhlasím. Řekl bych, že kdyby PHP vyházelo procedurální funkce, a nahradilo je třídama (a nejlépe i aktualizovali jména metod), tak by to byl už jazyk na úrovni.

Nahoru Odpovědět 12.6.2013 13:04
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Inoue Yūki
David Čápka:

Já moc doufám, že se to stane :D Kde jsi našel tu informaci, že na stringách budou metody? Nedaří se mi to dohledat.

Nahoru Odpovědět 12.6.2013 13:06
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Odpovídá na Petr Nymsa
Lukáš Hruda (Luckin):

Možná jsem to nesprávně pochopil, ale nepřijde mi, že by toto nějak řešilo problém s vícenásobnou dědičností.

 
Nahoru Odpovědět 12.6.2013 13:06
Avatar
Inoue Yūki
Redaktor
Avatar
Nahoru Odpovědět  +1 12.6.2013 13:09
Avatar
Inoue Yūki
Redaktor
Avatar
Inoue Yūki:

(Ještě dodám, že je to jen spekulace. :))

Nahoru Odpovědět 12.6.2013 13:10
Avatar
Kit
Redaktor
Avatar
Odpovídá na Inoue Yūki
Kit:

Jen tak porovnání Singletonu se statickou proměnnou
http://moisadoru.wordpress.com/…call-in-php/

Ale Singleton i statická proměnná se ve své podstatě chovají jako globální proměnná, takže používání obojího je zavrhováno.

Nenapadá mě, k čemu bych Singleton nebo statickou proměnnou použil. Statické třídy používám vlastně jen v testech, abych ten test oddělil od testované třídy.

Nahoru Odpovědět 12.6.2013 13:12
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Inoue Yūki
Redaktor
Avatar
Inoue Yūki:

Mno, já například právě u Registru. Tedy například:

Registry::storeObject($object)
:)

(Edit: to je příklad k použití statický třídy)

Editováno 12.6.2013 13:18
Nahoru Odpovědět 12.6.2013 13:17
Avatar
Kit
Redaktor
Avatar
Odpovídá na Inoue Yūki
Kit:

Hmm, pěkný. Ale proč to musí být Singleton? Proč to děláš staticky, když můžeš použít

$registr = new Registry();  // vytvořím registr
$registr->klic = $object;   // zapíšu do registru
echo $registr->klic;        // přečtu z registru

Žádnou statiku ani Singleton nepotřebuji. Počet instancí si ve třídě ohlídám. Pokud chci zablokovat klonování, nadefinuji metodu __clone().

Nahoru Odpovědět 12.6.2013 13:28
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Inoue Yūki
Redaktor
Avatar
Inoue Yūki:

Protože tím ušetřím řádek vytvoření instance a dalších 4+/- řádků při napsání __clone(). :)

Nahoru Odpovědět 12.6.2013 13:58
Avatar
Kit
Redaktor
Avatar
Odpovídá na Inoue Yūki
Kit:

Ten řádek vytvoření instance napíšu pouze jednou v celé aplikaci. To není zrovna významná úspora. Chci přece jen jednu instanci. Podobně i __clone() se v takových případech píše na jeden řádek, ale de facto ani není potřebný.

Jak v takových případech řešíš, když Registry potřebuješ při testování nahradit stubem? Pokud to uděláš dynamicky, je to velmi jednoduché:

$registr = new RegistryStub();

a na zbytku programu nemusíš měnit ani písmenko. Pokud to uděláš staticky, je to sice proveditelné, ale můžeš si těmi editacemi tu aplikaci poškodit. Nehledě k tomu, že to strašně zdržuje.

Nahoru Odpovědět 12.6.2013 14:08
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Inoue Yūki
Redaktor
Avatar
Inoue Yūki:

Nechápu, proč bych měl pro testování vytvářit novou třídu? K jejímu testování přeci můžu použít originál nehledě na to, že při registru ani testování není potřebné, jelikož je její definice jednoduchá.
A jak říkám - tvá definice registru neřeší problém více programátorů.

Mno, ale tohle už není předmětem diskuze.

Nahoru Odpovědět 12.6.2013 14:15
Avatar
Kit
Redaktor
Avatar
Odpovídá na Inoue Yūki
Kit:

Pokud ta třída manipuluje s databází, tak jí přece při testování nebudu dávat k dispozici ostrá data. Podstrčím jí jen stub databáze, který třeba místo provádění SQL modifikací ty dotazy loguje a při selectech dodává různé testovací výstupy, které testovaná metoda dál zpracovává.

Předmětem diskuze je, že požaduješ vlastnosti PHP, které jsou zbytečné.

Editováno 12.6.2013 14:23
Nahoru Odpovědět 12.6.2013 14:21
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Inoue Yūki
Redaktor
Avatar
Inoue Yūki:

Jestli třída manipuluje z databází, jednoduše nebude Singleton. :) Při databázových vrstvách nevidím její využití.

Nahoru Odpovědět 12.6.2013 14:26
Avatar
Kit
Redaktor
Avatar
Odpovídá na Inoue Yūki
Kit:

Právě v souvislosti s databází vidím nejčastější chybné použití Singletonu. Kromě toho ty tvé Registry jsou de facto také databáze.

Nahoru Odpovědět 12.6.2013 14:36
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Inoue Yūki
Redaktor
Avatar
Inoue Yūki:

Použití Singletonu v databázích není moc výhodné, osobně používám modely, které se připojují ke kontrolerům.
Ale jsou to dočasné databáze, a jejich data se načítají při každém obnovení stránky. Proto je možné pracovat s ostrými daty, pokud jsou ty data správně nastavena použitím public/private/pro­tected, což by měla být i tak.

Nahoru Odpovědět 12.6.2013 14:41
Avatar
Kit
Redaktor
Avatar
Odpovídá na Inoue Yūki
Kit:

Když v Registry potřebuješ při testování své třídy simulovat různá výstupní data nebo potřebuješ logovat vstup do Registry, tak to děláš jak?

Kontrolery a viewery se v MVC připojují k modelům. S databází pracuje jen model, ale i ten je potřeba otestovat.

Editováno 12.6.2013 14:53
Nahoru Odpovědět 12.6.2013 14:50
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Inoue Yūki
Redaktor
Avatar
Inoue Yūki:

Jak už jsem říkal - Registry má jednoduchou definici, a není třeba ji testovat. Navíc nemá žádná výstupní data. Jednoduše zaznamenává všechny vnitřní třídy a nastavení, které si pak rozeberou vedlejší třídy. A vstup do Registry se může logovat jednoduše, stačí přidat další datový člen a do něj logovat.
Kdo říkal, že mluvím o MVC? :)

Nahoru Odpovědět 12.6.2013 14:57
Avatar
Kit
Redaktor
Avatar
Odpovídá na Inoue Yūki
Kit:

Osobně používám MVC, ale když potřebuju, proč si nevytvořit singlenton registr?
... osobně používám modely, které se připojují ke kontrolerům.

Každou třídu je nutné testovat. Ty tvé Registry podle tvé definice jsou vlastně modelem. Takže žádná statika není potřebná.

Přece do Registry nebudu přidávat vlastnost, kterou nebudu potřebovat v produkci. Testy zákazník nedostane a přece je nebudu v každém vydání odmazávat.

Nahoru Odpovědět 12.6.2013 15:07
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Inoue Yūki
Kit:

Nepsal jsem nic o testování Registry, ale o testování tříd, které tuto třídu potřebují.

Editováno 12.6.2013 15:13
Nahoru Odpovědět 12.6.2013 15:11
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 63 zpráv z 63.