Autor Zpráva
xxar3s
Profil
Myslíte že je správne keď programátori zaplevelujú zdroják zbytočnným kódom, ktorý obchádza používanie výnimiek?

Napríklad predchvílou som našiel v jednej implementácii serviceprovideru metódu GetService ktorá by vôbec nemala volať ContainsKey ani vracať null

        public object GetService(Type serviceType)
        {
            return (services.ContainsKey(serviceType)) ? services[serviceType] : null;
        }

metóda by mala vyzerať takto:

        public object GetService(Type serviceType)
        {
            return services[serviceType];
        }

ak nastane výnimočná situácia že services neobsahuje daný typ tak sa vyhodí výnimka, ktorá má byť programátorom obslúžená. tým že programátori obchádzajú výnimky robia kód zložitejším, pomalším(testujú existenciu kľúča 2x), a náchylnejším na chyby. Potom sa mi namiesto KeyNotFoundException vyhodí NullArgumentException a ja musím hľadať kde v kóde je chyba. hodnota null by sa mala IMHO používať iba vo výnimočných prípadoch.
ShiraNai7
Profil
xxar3s:
Určitě tohle patří do PHP sekce? Ukázka kódu rozhodně není PHP..
K tématu - souhlasím, "obcházet" (nebo spíš nepřímo měnit) výjimku v tomto případě není správný postup. Ale určitě existují případy getterů, kde vracet nějakou default hodnotu smysl má.
Párkrát jsem do getter různých parametrů implementoval takto, aby se dal použít libovolně (s výjimkou nebo i s default hodnotou), příklad:
public function getParameter($name, $default = null, $exception = true)
{
    if(isset($this->params[$name]) || array_key_exists($name, $this->params)) return $this->params[$name];
    if($exception) throw new \RuntimeException("Undefined parameter '{$name}'");
    return $default;
}

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: