Feedback

C# - Überprüfung von Übergabeparameter - Deklarativ

Veröffentlicht von am 11/20/2008
(2 Bewertungen)
Um den Code übersichtlicher zu gestallten und kompakter zu gestallten empfiehlt sich eine wiederverwertbare Klasse. In diesem Fall eine Statische Klasse.

Eine einfache Klasse auf dessen Basis die Funktionen von dem .NET 4.0 Feature Contract in ähnlicher Weise nachgebaut werden kann.
// Implementierung
///<example>
///Contract.Ensure ( () => !string.IsNullOrEmpty ( filename ), "Filename is not allowed to be null or Empty" 
);
///</example>
public class Contract
{
	public static void Ensure ( Func<bool> predicate, string message )
	{
		if ( predicate () )
		{
			throw new ArgumentException ( message );
		}
	}
}
Abgelegt unter Contract, Deklarativ.

3 Kommentare zum Snippet

Rainer Hilmer schrieb am 11/21/2008:
ich verstehe nicht wieso das besser ist als
string filename = "";
if (filename.Equals(null) || filename.Equals(string.Empty))
throw new ArgumentException("Filename is not allowed to be null or Empty");

Ausserdem macht dein Snippet genau das Gegenteil von dem was es soll. Mit
if(predicate())
...

funktioniert es. Ich hab's gerade getestet.
Rainer Hilmer schrieb am 11/21/2008:
Sorry, ich meinte
if(string.IsNullOrEmpty(test))
throw new ArgumentException("Filename is not allowed to be null or Empty");
Rainer Schuster schrieb am 11/21/2008:
Schon behoben. Das war mir gestern beim Testen schon passiert. Hab den falschen Ausdruck in der Lambda expression gehabt.

Warum es besser ist? Es ist wiederverwehrtbar und es kann später durch Contracts aus dem .NET 4.0 Framework ausgetauscht werden.

Deklarative Programmierung! Sag der Funktion was du reinstecken kannst, und was herauskommt und sie wird sicherer.
 

Logge dich ein, um hier zu kommentieren!