Vra

Microsoft het onlangs'n vrystelling van hul Kode Kontrakte raamwerk op DevLabs met'n kommersiële lisensie.Ons is geïnteresseerd op die gebruik van hulle in ons projek (meestal C#, sommige C++/CLI) om geleidelik vervang al die persoonlike validering kode, maar ek is gretig om te weet oor die ervaring ander mense het met dit voor ons verbind om dit, spesifiek:

  • Dink jy die raamwerk is genoegsaam volwasse is vir'n groot en komplekse kommersiële projekte?

  • Watter probleme het jy loop in terwyl die gebruik van dit?

  • Watter voordele het jy van dit?

  • Is dit tans meer pyn as wat dit is die moeite werd?

Ek besef dat hierdie is'n ietwat subjektiewe vraag as dit vereis mening, maar gegee dat hierdie raamwerk is'n baie belangrike deel van .NETTO 4.0 en (potensieel) verander die manier waarop ons almal skryf validering kode, ek hoop dat hierdie vraag sal oop gelaat word om te versamel ervaring oor die onderwerp om my te help om'n besluit te maak om'n spesifieke, verantwoordbaar vraag:

Moet ons begin om dit te gebruik volgende maand?

Let daarop dat ons nie'n skip kode API, net'n web diens een, so vir die meerderheid van die kode te breek verenigbaarheid in terme van die uitsondering tipe gegooi is nie'n bron van kommer.Maar, soos ek hoop meer mense as net ek sal voordeel trek uit hierdie post en sy antwoorde, enige detail rondom hierdie gebied is meer as welkom.

Was dit nuttig?

Oplossing 2

Ek het al speel rond met die kode kontrakte nog myself op 'n klein, maar matig komplekse selfstandige projek, wat nodig het om te erf van 'n paar BCL klasse en gebruik ander mense.

Die kontrakte ding lyk groot wanneer jy werk in 'n heeltemal geïsoleerde omgewing met net jou eie kode en primitief tipes, maar sodra jy begin met behulp van BCL klasse (wat tot NET 4.0 nie hul eie kontrakte het) die verifieerder kan nie kyk of hulle enige van die sal skend vereis / Verseker / invarianten en so kry jy 'n baie waarskuwings oor moontlike ontevrede beperkings.

Aan die ander kant, is dit nie 'n paar ongeldig of potensieel ontevrede beperkinge wat kon wees werklike foute. Maar dit is baie moeilik om hierdie te vind, want daar is so baie geraas dat dit is moeilik om vas te stel watter jy kan regmaak. Dit is moontlik om die waarskuwings van die BCL klasse te onderdruk deur die gebruik van die neem meganisme, maar dit is 'n bietjie self-defeating as hierdie klasse sal kontrakte in die toekoms te hê en aannames sal hulle die moeite werd om te verminder.

So my gevoel is dat vir nou, omdat in 3.5 is ons probeer om te bou op 'n raamwerk wat die verifieerder nie voldoende verstaan, dat dit waarskynlik die moeite werd wag vir 4.0.

Ander wenke

Die laaste volwasse reaksie op dit was in 2009, en .NETTO 4 is uit.Ek reken ons is te danke vir'n update:

Kode Kontrakte dalk ook volwasse genoeg vir jou Debug stel.

Ek besef dit is ietwat van'n opgradering van die "Onskuldige" te "Meestal Skadeloos".

Die Kode Kontrakte home page skakels na baie deeglike dokumentasie in PDF-formaat.Die dokumentasie beskryf gebruik riglyne in afdeling 5.Om op te som, jy kan kies hoe jy dapper voel oor die Kontrak Tools re-skryf jou IL in jou Vry te bou.

Ons is met behulp van die "moenie herskryf my Vrylating IL" af.

So ver, wat ek die meeste geniet hierdie onverwagte voordeel:daar is minder kode, dus minder kode te toets.Al jou wag klousules weg te smelt.

if(arg != null) { 
    throw new ArgumentNullException("arg"); 
}
// Blank line here insisted upon by StyleCop

word:

Contract.Requires(arg != null);

Jou funksies is korter. Jou doel is duideliker. En, jy hoef nie langer om'n toets te skryf met die naam ArgumentShouldNotBeNull net om te bereik 100% dekking.

So ver, ek het loop in twee probleme:

  • Ek het'n eenheid toets wat staatgemaak op'n kontrak versuim om te slaag.Jy kan argumenteer dat die bestaan van die toets is'n flater, maar ek wou om te dokument hierdie spesifieke verbod in die vorm van'n toets.Die toets misluk op my bou bediener, want ek het nie die tools geïnstalleer.Oplossing:die installering van die tools.

  • Ons is met behulp van twee instrumente wat herskryf IL: Kode Kontrakte en PostSharp.Hulle het nie saam te goed.PostSharp se 2.0.8.1283 vaste die probleem.Ek wil versigtig evalueer hoe enige twee IL-herskryf tools kry saam, al is.

So ver, die voordele is tot die gevare.

Die aanspreek van out-of-datum kommer wat in ander antwoorde:

  • Kode Kontrakte se dokumentasie is baie deeglike, maar ongelukkig in PDF.
  • Daar is ten minste een Kode Kontrak forum aangebied word deur Microsoft.
  • Kode Kontrakte Standaard Uitgawe is gratis as jy enige VS2010 lisensie.
  • .NETTO 4 is uit.Ek het loop in Microsoft se kontrakte wanneer die implementering van generiese versameling koppelvlakke.

Te oordeel deur hierdie draad Ek sou sê dit is nie heeltemal volwasse genoeg om te gebruik vir'n onderneming vlak projek.Ek het nie gebruik dit self, maar die mense is nog steeds loop in foute wat sal bring jou kontrak-kritiese projek tot stilstand gekom.Dit lyk soos'n baie groot raamwerk en die voorbeeld video's hulle het voorsien is opwindend, maar ek wil wag vir:

  • Die bestaan van'n gemeenskap forum. Jy gaan om te wil om te wees in staat om te bespreek onvermydelike probleme wat jy loop in met ander ontwikkelaars, en jy wil om te weet daar is'n ordentlik sterk basis van die ontwikkelaars daar buite te bespreek oplossings.
  • 'n suksesvolle loodsprojek vrylating. Oor die algemeen, wanneer Microsoft Research vrystellings iets wat hulle dink is volwasse genoeg om gebruik te word in'n kommersiële projek, sal hulle werk saam met'n organisasie te loods dit, en dan die vrylating van die projek'n oop-bron as'n bewys van die konsep en die verhoor-deur-vuur van al die groot kenmerke.Dit sou'n baie vertroue dat die meeste van die gewone kontrak scenario's is gedek en werk.
  • Meer volledige dokumentasie. Plain en eenvoudig, op'n sekere punt wat jy gaan om te wil om iets te doen met die kontrakte wat jy nie kan doen nie maar met behulp van Microsoft-Kode Kontrakte.Jy wil in staat wees om vinnig en duidelik rede is dat jou scenario is nog nie ondersteun nie. Die huidige dokumentasie is gaan om te hou jou aan die raai en probeer om verskillende dinge, al is, in my mening, wat sal lei tot'n baie van die verlore tyd.

Dit is nie genoeg volwasse.

Dit sal so gou as Microsoft stel dit met die bekostigbare uitgawes van VS wees, maar sonder die statiese-kode analise dis nie bruikbaar nie.

Die uitgawes van VS, wat dit het, is so intens duur dat net 'n handjievol mense ooit sal in staat wees om dit te kan bekostig.

Dit is 'n skande Microsoft vermoor hierdie wonderlike idee met hul prysbeleid. Ek wens Kode Kontrakte sou hoofstroom geword, maar hulle sal nie.

Epic misluk.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top