Názory ke článku Code Contracts - 1. díl – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Názory ke článku Code Contracts - 1. díl – Programujte.comNázory ke článku Code Contracts - 1. díl – Programujte.com

 

Názory ke článku Code Contracts - 1. díl

Petr Ciml   NOVÝ
18. 10. 2011

Ahoj Štěpáne,

předně děkuji za výborný úvod do problematiky Code Contractů a měl bych na tebe otázku:

Berme vzorovou situaci:

public Object GetValueForKeyFromValueProvider(string key)
{
   Contract.Requires(!string.IsNullOrEmpty(key), "ArgumentNull: key");
   ValueProvider vp = ValueProvidersManager.GetDefaultValueProvider();
   Contract.Requires(vp != null, "InvalidOperation: vp is null");
   return vp.GetValueForKey(key);
}

V tomto případě vidíme chybu při kompilaci: "Error 131 After contract block, found use of local variable 'vp' defined in contract block".

Jak bys tento problém nejlépe vyřešil, tak aby byla otestována podmínka vp != null dřív než padne NullReferenceException. Podle mě to post-condition neřeší a dvojí volání ValueProvidersManager.GetDefaultValueProvider(); (jednou v kontraktu a pak znovu, aby se pořadí těchto řádek mohlo prohodit) nepřipadá v úvahu.

Děkuji, Petr Ciml

Jirka   NOVÝ
23. 10. 2013

#1 Petr Ciml
Podstatné je si uvědomit, že statický kontrolor kontraktů při kontrole "provádí" pouze řádky Contract.něco, případě řeší relevantní atributy. Čili použití kódu mimo lambdu nedává žádný smysl.

Přidej svůj názor

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo e-mailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Reaguješ na příspěvek:
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové názory e-mailem (pouze pro přihlášené)
Sleduj názory ke článku a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.



Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý