Feedback

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

Veröffentlicht von am 20.11.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.
GFU-Schulungen  [Anzeige]

VB.NET Aufbau

Sie verfügen nach der Schulung über fundierte Kenntnisse in der Arbeit mit objektorientierten Modellen in VB.NET und können wiederverwendbare Komponenten eigenständig erzeugen.

VB.NET 2017/2015/2013 Aufbau

Nach dieser Schulung können Sie mittels objektorientierter Modelle in VB.NET 2017/2015/2013 wiederverwendbare Elemente eigenständig erstellen.

// 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 21.11.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 21.11.2008:
Sorry, ich meinte
if(string.IsNullOrEmpty(test))
throw new ArgumentException("Filename is not allowed to be null or Empty");
Rainer Schuster schrieb am 21.11.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!