[c#] Design by Contract extensie?

Pagina: 1
Acties:

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Weet iemand of er een Design by Contract extensie is voor c#? En dan het liefst een waarbij ik pre/post/invariant in de documentatie/attributen kwijt kan + de mogelijkheid om alles uit te zetten (zodat de compiler ze negeert)

Oja.. het liefst ook opensource/gratis :)

[ Voor 11% gewijzigd door Alarmnummer op 05-12-2004 21:28 ]


Verwijderd

Kan me vergissen hoor, maar volgens mij moet dit wel een goede match zijn, die je ook met Google gevonden had kunnen hebben... Ik heb alleen nog aan DBC gesnuffelt, dus weet niet 100% zeker of dit is wat je zoekt.

offtopic:
Laat maar, ik denk dat je een Framework zoekt die alles voor je afhandelt en ga er vanuit dat je wel weet hoe een DBC werkt etc en meer iets zoekt dat jou werk uit handen neemt.


Design by Contract Framework for C#

[ Voor 41% gewijzigd door Verwijderd op 05-12-2004 21:32 ]


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Verwijderd schreef op zondag 05 december 2004 @ 21:28:
Kan me vergissen hoor, maar volgens mij moet dit wel een goede match zijn, die je ook met Google gevonden had kunnen hebben... Ik heb alleen nog aan DBC gesnuffelt, dus weet niet 100% zeker of dit is wat je zoekt.

Design by Contract Framework for C#
Ik had deze al gevonden, maar hij voldoet niet aan mijn eisen. Ik kan zelf ook wel dbc functies in elkaar plakken, maar ik vind dat mijn code er zo door verziekt wordt. En verder wil ik in ieder geval de pre en post codities van mijn methode beschrijven in mijn documentatie. En ik wil dat de dbc commando`s dan gezien kunnen worden als een uitvoerbaar stuk documentatie.

code:
1
2
3
4
5
6
7
///pre a!=null
///pre b>10
///post result!=null
///invariant Size>0
public void foo(String a, int b){
     ....
}


Eigelijk gaat het me op dit moment voornamelijk om de precondities. Ik vind dat zoveel werk uit handen nemen omdat fouten veel sneller kan opsporen. Vooral de assert van Java vind ik handig omdat ik deze code ook heel eenvoudig uit kan zetten.

[ Voor 16% gewijzigd door Alarmnummer op 05-12-2004 21:39 ]


Verwijderd

offtopic:
Ik ben bang dat jij en ik op een compleet ander niveau zitten en dat ik je ook niet kan helpen. Ik snuffel overal nu nog aan en begin me eindelijk te verdiepen in datastructuren, design patterns, efficientie verbetering, etc.
Volgens mij zitten er slechts weinig mensen op jou niveau. Nu wil ik je geen veer in de reet steken... ;)

  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 19-05 00:34

alienfruit

the alien you never expected

Of je stapt over na Chrome...Design by Contracts

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 20:44

Creepy

Tactical Espionage Splatterer

Let op dat dit geen opsomming wordt van FrameWorks of Extensies. Dan zet ik dit topic alsnog dicht. Post aub wat uitleg waarom je een bepaalde extensie zou gebruiken.

Alarmnummer: zou je je post iets kunnen uitbreiden met de dingen die je al gevonden hebt en waarom deze niet voldoen? Dit om te voorkomen dat er nog meer oplossing gepost worden die jij al hebt onderzocht?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Ik wil niet over naar een andere taal.Ik wil gewoon c# blijven gebruiken.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Creepy schreef op maandag 06 december 2004 @ 09:50:
Let op dat dit geen opsomming wordt van FrameWorks of Extensies. Dan zet ik dit topic alsnog dicht.
Heb je een probleem met mij ofzo??
Alarmnummer: zou je je post iets kunnen uitbreiden met de dingen die je al gevonden hebt en waarom deze niet voldoen?
Check mijn posts.

[ Voor 6% gewijzigd door Alarmnummer op 06-12-2004 10:05 ]


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 20:44

Creepy

Tactical Espionage Splatterer

Alarmnummer schreef op maandag 06 december 2004 @ 10:05:
[...]

Heb je een probleem met mij ofzo??
Nee hoor :) Maar als je dat gevoel hebt kan je mij daarover mailen of de HGA.

[...]
Check mijn posts.
Heb ik gedaan, en helaas staat dat niet in je start post. Er is zelfs al iemand die wat aangaf wat jijzelf al had geprobeerd. Dit had voorkomen kunnen worden.

Daarnaast komt dit topic teveel op me over als "Ik zoek een standaard oplossing wat dit en dit voor me doet". Ik mis hier een daarwerkelijk programmeerprobleem in. Vandaar dat ik ook vraag om uitleg i.p.v. een domme opsomming met extensies / frameworks. Iets waar Programming & Webscripting niet voor bedoelt is.

Om de draad niet verder te vervuilen is dit het laatste wat ik er hier over zeg. Eventuele andere opmerkingen / vragen / klachten kunnen via de mail.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • EfBe
  • Registratie: Januari 2000
  • Niet online
Ik zou zeggen, download Eiffel.NET en ga je gang :)

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 19-05 00:34

alienfruit

the alien you never expected

Ja, maar Eiffel is toch ook een andere taal :? Maar goed anders bouw je even je eigen C# compiler met Design by Contract extensie. Kost je misschien wel een parmaanden maar dan heb je ook wat. Overigens moet ik zeggen dat jou syntax extensie er wel vreselijk uitziet...

  • JeroenB
  • Registratie: November 1999
  • Laatst online: 30-04 12:16
Ik denk dat als je dat framework uit de tweede posting neemt en de methods ombouwt naar attributen, dat je een behoorlijk eind op weg bent. Lijkt me ook niet zoveel werk (verpakking aanpassen alleen in feite).

  • JeroenTheStig
  • Registratie: Mei 2000
  • Laatst online: 20:16
alienfruit schreef op maandag 06 december 2004 @ 12:52:
Ja, maar Eiffel is toch ook een andere taal :? Maar goed anders bouw je even je eigen C# compiler met Design by Contract extensie. Kost je misschien wel een parmaanden maar dan heb je ook wat. Overigens moet ik zeggen dat jou syntax extensie er wel vreselijk uitziet...
Eiffel is de taal waar als eerst design by contract is geimplementeerd (Eiffel is ontwikkeld door meneer Bertrand Meier als ik t goed heb en hij is ook degene die DbC heeft bedacht) en ondersteunt dus volledig design by contract. Sinds kort bestaat hier ook een .NET versie van, dus kun je ook lekker in het framework coden in Eiffel.

Ik gebruik tot nu toe ook Design by Contract in C#, maar ik ben benieuwd wat voor ideeen hier nog meer worden geplaatst

[ Voor 6% gewijzigd door JeroenTheStig op 06-12-2004 14:28 ]


  • JeroenB
  • Registratie: November 1999
  • Laatst online: 30-04 12:16
Wat alienfruit denk ik bedoelde is dat TS aangaf dat'ie sowieso C# wil blijven gebruiken, niet dat hij niet weet wat Eiffel is.

  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 19-05 00:34

alienfruit

the alien you never expected

Ik ben bekend met de taal Eiffel, verder vind ik de implementatie van Design By Contracts zoals Alarmnummer en je url geven zelf niet de code overzichtelijker maken. Ik vind dat je zulke "beperkingen" niet moet aangeven in het commentaar, maar dat het deel moet worden van je syntax door zijn we in Chrome ook met de volgende syntax gekomen:

Delphi:
1
2
3
4
5
6
7
8
method CalculateSquareRoot(aValue: Double):Double;
require
  aValue >= 0;  // require
begin
  // ...
ensure
   // ....
end;


Bovenstaande code vind ik zelf toch overzichtelijker dan jullie suggsties, maar dit kan misschien komen door de invloed die ik op bovenstaande heb gehad voor in Chrome.NET.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
alienfruit schreef op maandag 06 december 2004 @ 15:08:
Ik ben bekend met de taal Eiffel, verder vind ik de implementatie van Design By Contracts zoals Alarmnummer en je url geven zelf niet de code overzichtelijker maken.
Uiteraard is dat het mooiste maar zoals ik al eerder heb aangegeven wil ik wel gewoon c# programmeren en dus niet een andere taal gaan proberen. Ik zoek dus niet naar de mooiste oplossing, maar een oplossing die voldoet aan mijn wensen:
-valt uit te drukken in standaard c# syntax
-staat niet in de methode body.
-moet 100% uit te schakelen zijn (dit is een must) aangezien ik graag erg kostbare checks mag uitvoeren (bv Prolog compilatie proces)

Ik ben dus niet geinteresseerd in de meest perfecte toepassing, maar in een praktische.
Bovenstaande code vind ik zelf toch overzichtelijker dan jullie suggsties, maar dit kan misschien komen door de invloed die ik op bovenstaande heb gehad voor in Chrome.NET.
Ik zie jouw toevoeging tov die van Eiffel niet echt.

[ Voor 59% gewijzigd door Alarmnummer op 06-12-2004 15:24 ]


  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 19-05 00:34

alienfruit

the alien you never expected

Het gaat hier niet om de toevoeging van Eiffel, maar meer de mogelijkheid tot het gebruik van Design by Contract op een afgeleidde van Delphi/Object Pascal. Voor Delphi is het geheel nieuw.
Maar ik kan dezer dagen wel kijken, of ik wat voor je in elkaar gooien dat C# ondersteunt, je zou het namelijk door preprocessor kunnen die vervolgens geldig il code gegeneert, met deze mogelijkheid ;) Hehe.

  • dotcode
  • Registratie: Augustus 2003
  • Laatst online: 17-05 21:04

dotcode

///\00/\\

Volgens mij moet je eens kijken naar AOP, of aspect oriented programming. Hiermee kan je dat soort checks door je code heen 'weaven'. Heel leuk, maar niet zo goed voor je prefomance. Hier is een link naar zo'n framework:
http://www.dcl.hpi.uni-potsdam.de/research/loom/
Pagina: 1