de de de en it de de de en de de de de de de de de de de de de de en de de de de de nl nl de fi fi de de de de de de de de de de de de de de pt es de en en en en war de en nb de de de en nl de de de cs de en en en de de en nl de de nb en en en en de en nb nb de sv en en nb de en sv fr de sv en sv en de en sv en en sv en de nb en en en sv fr en de nb nb de en sv en de de de de nb de de de en nl en nl nl en en en en nl en de de de nl en en de de en nl fr de nl en nl en de en nl en en nl en de de en en en nl fr en de de de de en nl fr de de en
In der Softwareentwicklung versucht man seit langem, guten Quellcode zu schreiben. Hierfür gibt es alle Jahre neue Ansätze, die das erreichen sollen. So fallen einem dazu schnell Begriffe wie UML und Objektorientierung ein. Aber all diese Mittel haben nie dafür gesorgt, dass der Quellcode durch Anwendung solcher Prinzipien bzw. Verwahrensweisen zwingend besser, sprich sauberer wurde.
Softwareentwicklern aus Leidenschaft sind darum ständig auf der Suche danach, was in den eigenen Entwicklungen falsch läuft. Was muss man besser machen, damit der Quellcode gut lesbar und langfristig nutzbar und erweiterbar ist. Einen Königsweg hierzu gibt es wie immer leider nicht.
Stefan Lieser und Ralf Westphal haben vor einer Weile aber eine Initiative unter dem Namen Clean Code Developer ins Leben gerufen. Beim Studieren der Idee war mir schnell klar, dass es für mich ein Hilfsmittel sein kann, besseren Code zu entwickeln.
Sie sammelten Ideen und Ansätze, die helfen, besseren Quellcode zu schreiben. Diese verteilten Sie auf einzelne Grade, da alles auf einmal nicht realistisch umsetzbar ist. Jeder Entwicker, der seine Prinzipien der Entwicklung verbessern möchte, kann sich an den einzelnen Graden entlang hocharbeiten:
Schwarz, Rot, Orange, Gelb, Grün, Blau und Weiß.
Entwickler, die sich an Ihren Grad und die dahinter stehenden Prinzipien erinnern möchten, können dazu ein Armband tragen. Mir persönlich sagt das nicht zu. Jan Waiz hat hierzu alternativ kleine Pyramiden gestaltet, die man sich einfach auf den Tisch stellen kann und so seine Prinzipien auch jederzeit präsent hat. Das finde ich wirklich ansprechend.
Ich selbst ordne mich momentan als Orange ein und kann leider noch nicht aufsteigen, da ich Automatisierte Integrationstests noch nicht umsetzen konnte. Übrigens: Aufzusteigen ist auch nicht das zwingende Ziel der CCD’ler… es geht darum, selbst eine Stufe der inneren Zufriedenheit mit der eigenen Softwareentwicklung zu bekommen. Dazu muss man nicht die höchste Stufe erreicht haben!
KategorienCCD, Weiterbildung Tags: CCD
6. August 2009 Mario Noack Keine Kommentare
Ein Beispiel sagt oft mehr, als tausend Worte… Um mit .NET Strings zu formatieren, gibt es viele Möglichkeiten, leider ist die Hilfe dazu zwar oft korrekt, aber nicht wirklich erklärend.
Darum hier ein Link mit praktischen Beispielen dazu sind hier zufinden:
Sogar die Ländereinstellungen sind umschaltbar.
KategorienMicrosoft .NET Tags: Microsoft .NET, String
6. August 2009 Mario Noack Keine Kommentare
Eher zufällig ist mir der SQL
SELECT CONVERT (datetime, CONVERT (VARCHAR, GETDATE(), 101), 101);
Select CONVERT (datetime, CONVERT (varchar, GETDATE(), 101), 101);
aufgefallen (natürlich ursprünglich in einem größeren Kontext). Schnell war die scheinbare Optimierung durchgeführt:
Diese habe ich dann zum Glück noch einmal überprüft und konnte doch eine Abweichung feststellen: GetDate liefert das aktuelle Datum inkl. Uhrzeit zurück. Der doppelte Convert entfernt einfach die Uhrzeit. Das ist immer dann sinnvoll, wenn Datumswerte ohne Uhrzeit gespeichert werden und man mit diesen Rechnen möchte.
In der MSDN ist auch erklärt, was der Parameter 101 im Convert bewirkt: Es wird ein Datum im Format mm/tt/jjjj als String erzeugt.
KategorienAllgemein Tags: Datum, SQL
SQL Count, das unbekannte Wesen
5. August 2009 Mario Noack Keine Kommentare
Bei der Suche nach einem praktischen SQL-Skript für eine Statistik, bin ich auf die Möglichkeit gestoßen, den SQL Count Befehl zu verwenden:
SELECT a.BewertungId, COUNT(*) Gesamt, COUNT(E_Datum) Offen, COUNT(CASE WHEN ((a.Abgelehnt = 0) OR (b.OFI = 0)) THEN NULL ELSE 1 END) Abgelehnt FROM Aktivitaeten a, Bewertung b WHERE a.BewertungId = b.Id GROUP BY a.BewertungId ORDER BY a.BewertungId
Select a.BewertungId, Count(*) Gesamt, COUNT(E_Datum) Offen, Count(CASE WHEN ((a.Abgelehnt = 0) OR (b.OFI = 0)) THEN Null Else 1 END) Abgelehnt From Aktivitaeten a, Bewertung b Where a.BewertungId = b.Id Group by a.BewertungId Order by a.BewertungId
Die Nutzungsmöglichkeit des COUNTs ist dabei vielfältig:
Üblicherweise wird Count mit dem Parameter (*) aufgerufen. Dieser Aufruf führt zur vollständigen Zählung der Datenmenge.
Gibt man aber als Parameter einen Spaltennamen ein, so werden nur die Datensätze gezählt, die in der gewünschten Spalte einen Eintrag ungleich NULL haben.
Aber auch die Angabe eines Ausdrucks, der NULL oder einen Wert liefert, ist möglich.
Das aufgeführte Beispiel zählt also auf einmal: alle Datensätze, alle Datensätze mit einem Eintrag in der Spalte E_Datum und als letzten Punkt alle Datensätze, die eine Ablehnung enthalten.
MCPD Windows® Developer 3.5
MCSA SQL Server 2012
MCSE: Data Management and Analytics
32Bit 64Bit Acronis Administration Ado.Net Asp.NET Backup C# CCD Clipboard Datum Druckertreiber Encryption EPS Event Fehlersuche Genauigkeit Ghostscript IIS Internet Explorer Literatur Microsoft .NET NDepend Office365 PDF Powershell PStill RegEx Registry ReSharper RSA SQL String SVN Tortoise UAC Vista VistaDB Visual Studio VS2008 Windows Windows 7 Word WordToPDF Zwischenablage