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]

C# 2017/2015/2013 Grundlagen

Nach Abschluss des Kurses sind Ihnen die Datentypen und Klassenbibliotheken von C# bekannt. Außerdem sind Sie in der Lage, mit Variablen umzugehen und deren Typen zu konvertieren. Sie definieren Namespaces und setzen diese ein, Sie erstellen eigene Klassen  und bauen Trouble Shooting ein.

ASP.NET Core - Der Einstieg

In nur 3 Tagen lernen Sie, wie man mit ASP.NET Core und den Technologien MVC, Entity Framework, WebAPI und Razor professionelle Web-Anwendungs-Architekturen aufbaut. Diese Schulung ist der perfekte Einstieg, um datengetriebene und präsentations-orientierte Applikationen auf Basis der ASP.NET Core Plattform zu 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!