Boas Enkler BE IT-Solutions B&R DV InfoSys. GmbH Code Design Guidelines in der Praxis. 06.-07. Juni 2011 www.dotnet-devcon.de



Ähnliche Dokumente
SEP 114. Design by Contract

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Java Kurs für Anfänger Einheit 5 Methoden

Wie importiere ich mehrere Dateien gleichzeitig?

Unit-Test Theorie und Praxis. Stephan Seefeld, INGTES AG

Java Einführung Packages

Es gibt zwei Wege die elektronischen Daten aus Navision zu exportieren.

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Online Intelligence Solutions TESTABLAUF. 7 Schritte für ein erfolgreiches Testing.

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

16.4 Wiederverwendung von COTS-Produkten

How-to: Webserver NAT. Securepoint Security System Version 2007nx

Qualitätserlebnis statt Qualitätssicherung. Eine Mehrfachfallstudie agiler Teams

Eclipse Plugins für die komfortablere Verwendung von ibatis SQLMaps

Design Pattern - Strukturmuster. CAS SWE - OOAD Marco Hunziker Klaus Imfeld Frédéric Bächler Marcel Lüthi

Große Übung Praktische Informatik 1

3. Auflage. O Reillys Taschenbibliothek. C# 5.0 kurz & gut. Joseph Albahari & Ben Albahari O REILLY. Aktualisierung von Lars Schulten

Java: Vererbung. Teil 3: super()

WhiteStarUML Tutorial

Die Orgadata AG ist ein stark expandierendes Software-Unternehmen aus Leer. Mit unserem System LogiKal

Kommunikations-Management

Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten

Auswahl alter Klausuraufgaben aus einer ähnlichen Vorlesung Maßgeblich für die Prüfung sind die Vorlesungsinhalte!

Prof. Dr. Uwe Schmidt. 21. August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

Screening for Illustrator. Benutzerhandbuch

OP-LOG

Source Code Konverter Online: (VB.net <-> C#) Kommerzielle Produkte (VB, C#, C++, Java) Code Nachbearbeitung in der Praxis...

Online-Dateienablage und Datenaustauschdienst Box.net Stand: September 2011

Snippets - das Erstellen von "Code- Fragmenten" - 1

APEX 5.0 DOAG Mai 2014

Mai Hauptseminar: Nichtrelationale Datenbanken Historisch-Kulturwissenschaftliche Informationsverarbeitung Universität zu Köln

Kommunikations-Parameter

1. Einführung. 2. Weitere Konten anlegen

SERVICE SUCHE ZUR UNTERSTÜTZUNG

Klausur Software Engineering für WI (EuI)

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Fehlermonitor. Software zur seriellen Verbindung PC-Airdos Visualdatensignale und Fehlermeldungen-Ausagabe per SMS / Drucker

1. Einschränkung für Mac-User ohne Office Dokumente hochladen, teilen und bearbeiten

Auktionen erstellen und verwalten mit dem GV Büro System und der Justiz Auktion

Sophia Business Leitfaden zur Administration

Microsoft Dynamics NAV 2013 R/2 Installationsanleitung. Inhalt: Begleitmaterial des ERP Übungsbuchs:

User Manual Data 24. Login und Layout

Das Modul Hilfsmittel ermöglicht den Anwender die Verwaltung der internen Nachrichten, Notizen, Kontakte, Aufgaben und Termine.

XML-Austauschformat für Sicherheitsdatenblätter

Support-Tipp Mai Release Management in Altium Designer

Agiles Design. Dr.-Ing. Uwe Doetzkies Gesellschaft für Informatik mail:

LimeSurvey Fragetypen

Testen mit JUnit. Motivation

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

1CONFIGURATION MANAGEMENT

Der/die KursleiterIn kann sowohl die Einträge als auch die geposteten Kommentare in allen drei Blog- Typen bearbeiten, kommentieren und löschen.

Fotos in Tobii Communicator verwenden

SS Björn Berezowski B.Sc. Marco Münch B.Sc. Michael Roth B.Sc. Repetitorium PG 1. Übungsblatt. 1 Übung - Probeklausur SS 2010 Typ Prof.

Lehrer: Einschreibemethoden

Adobe Photoshop. Lightroom 5 für Einsteiger Bilder verwalten und entwickeln. Sam Jost

Wichtige Information zur Verwendung von CS-TING Version 9 für Microsoft Word 2000 (und höher)

GELEBTE ENTWICKLUNGSRICHTLINIEN

Projekt: RFC to FTP. Szenario der serviceorientierten Anwendungsintegration. Sebastian Altendorf Dirk Brillski David Gebhardt

Metadaten bei der Digitalisierung von analogen archivalischen Quellen. Kathrin Mileta, Dr. Martina Wiech

teischl.com Software Design & Services e.u. office@teischl.com

Control-M Workload Change Management 8

Ein + vor dem Ordnernamen zeigt an, dass der Ordner weitere Unterordner enthält. Diese lassen sich mit einem Klick (linke Maustaste) anzeigen.

Updatehinweise für die Version forma 5.5.5

Das Persönliche Budget in verständlicher Sprache

Design mit CASE-Tools

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Anbieter auf dem Foto-Marktplatz werden

Documentation-driven Development (DDD)

Scrum. Übung 3. Grundlagen des Software Engineerings. Asim Abdulkhaleq 20 November 2014

Verwenden der Option Laufzettel

9 Auto. Rund um das Auto. Welche Wörter zum Thema Auto kennst du? Welches Wort passt? Lies die Definitionen und ordne zu.

Starthilfe für C# Inhaltsverzeichnis. Medien- und Kommunikationsinformatik (B.Sc.) Alexander Paharukov. Informatik 3 Praktikum

Angebot & Rechnung, Umsatzsteuer, Mein Büro Einrichtung automatischer Datensicherungen

Schritt-für-Schritt-Anleitung So verschlüsseln Sie Ihr -Konto in der Software 6.0

SafeRun-Modus: Die Sichere Umgebung für die Ausführung von Programmen

Wie ist das Wissen von Jugendlichen über Verhütungsmethoden?

Angaben zu einem Kontakt...1 So können Sie einen Kontakt erfassen...4 Was Sie mit einem Kontakt tun können...7

How To: Wie entwickle ich mit SharpDevelop Anwendungen für die PocketPC-Platform

Javakurs zu Informatik I. Henning Heitkötter

Projektmanagement in der Spieleentwicklung

Copyright 2014 Delta Software Technology GmbH. All Rights reserved.

Perceptive Document Composition

U4 Arbeiten mit eigenen PSpice-Modellen

Tagesprogramm

Wir nehmen Aufgaben und Ideen wahr. Wir suchen Lösungen zu Ideen.

Titel. App-V 5 Single Server Anleitung zur Installation

Techniken der Projektentwicklungen

Facebook I-Frame Tabs mit Papoo Plugin erstellen und verwalten

SJ OFFICE - Update 3.0

BMW TREUE SERVICE. SRP MARKETING MODUL. ANLEITUNG ZUM EINSPIELEN DER LEUCHTTURMKAMPAGNEN IN DIE KSD.

Grundlagen der Programmierung Prof. H. Mössenböck. 3. Verzweigungen

Step by Step Softwareverteilung unter Novell. von Christian Bartl

Übersicht. Eclipse Foundation. Eclipse Plugins & Projects. Eclipse Ganymede Simultaneous Release. Web Tools Platform Projekt. WSDL Editor.

Klassendiagramm. Kurzer Überblick über UML - Stand BlaBla

Sehr geehrter Herr Pfarrer, sehr geehrte pastorale Mitarbeiterin, sehr geehrter pastoraler Mitarbeiter!

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

SEPA Lastschriften. Ergänzung zur Dokumentation vom Workshop Software GmbH Siemensstr Kleve / /

SCHNELLEINSTIEG ZUM TOOL NODEBUILDER

Transkript:

Boas Enkler BE IT-Solutions B&R DV InfoSys. GmbH Code Design Guidelines in der Praxis

Boas Peter Enkler Teamlead / Solutionsarchitect 10 Jahre Software Entwicklung Teamorganisation Enterprise Applications Code Qualität / CCD www.be-it.net

Über diese Session Sensibilisierung Richtlinien How To Do s, Consider, Dont s Code Beispiele

Fallbeispiel Vorher Fehler beim Kunden Unspezifische Fehler Data Races Undurchschaubares Verhalten Lange Einarbeitungszeit Unmut Nachher Fehler nur in der Testphase Klare Fehlermeldungen Studenten für Outsourcing Klare Verantwortlichkeiten

Was macht dieser Code? aus CodeKicker.de

Code Richtlinien Komprimierte Erfahrungswerte Werkzeug für Code Qualität Wartbarkeit Robustheit API Usability Bessere Lesbarkeit Standards Sichere Freiräume für Entwickler

Faktoren Anforderungen / Szenarien Team Code Richtlinien Technische Umgebung Standards

Einschränkungen Keine Allgemeingültigkeit Sie alleine machen keine Qualität Keine Garantie für eine funktionierende Software (keine Aussage über Domainlogik) Sie machen kein funktionierendes Team

Vorgehen Richtlinien erstellen Iterativ Kommunikation mit den Teammitgliedern Vorbehalte ausräumen YAGNI (Nur das was Sie brauchen) Übersichtsblatt Diskussionsforum

Wer definiert Richtlinien? Konkrete Rolle Anerkannter Entscheidungsträger Verantwortung Hilfe bei Fragen Fortlaufende Aktualisierung der Standards Vermittelt bei Konflikten Entscheidet bei Ausnahmen / Lücken

Es gibt Sie (!) Ausnahmen Nur bei gewichtigen Gründen (Security, ) Dokumentieren der Ausnahmen Anlass für Review der Richtlinien Temporäre Workarounds müssen terminiert werden

Ausnahmen im.net FX

Demo DataProvider Projektstruktur und Einstellungen

Projekt Settings Treat Warning as Errors Warning Level 4 Generate Xml Output Client Framework Code Contracts API Validation Static Code Analysis

Strukturelle Aufbau Namespace Ordner Korrelation Jeder Typ in eigene Dateien Datei passend zum Typ benennen Interface Assembly Komponentenorientiert Shared Build Output (bin folder) <Company>.<Component>.dll <Company>.<Component>.Interface.dll <Company>.<Component>.Tests.dll <Company>.<Area>.Common.dll

Demo DataProvider Implementierungsregeln

Definitionen Pascal Case Camel Case Ungarische Notation * UpperCamelCase {Bezeichner} Jedes Wort beginnt mit Großbuchstaben LowerCamelCase {bezeichner} Worte in einem Wort beginnen mit einem Großbuchstaben {Präfix} {Datentyp} {Bezeichner} uint MyValue uint myvalue uint uimyvalue * Die Ungarische Notation sollte in einer.net Umgebung nicht angewendet werden

Felder Private interne Daten Konstanten Statische ReadOnly immutable Werte Keine Public oder Proteced Felder Keine binärkompatible Änderung zu einem Property möglich

Properties Wrapper auf Felder Werte / Zustände von Entitäten Vorsicht vor DataRaces Nicht zum Austausch von Werten zwischen Methoden

Kommentare Nur Notwendiges Kommentieren In der sicheren Sprache API Dokumentation Parameter semantisch Beschreiben Keine Syntax erklären Kein Methoden Ersatz Kein Changelog

Datum Timespan DateTime DateTimeOffset Keine Datumsangabe Zeitangaben Öffnungszeiten 10:00-13:00.NET < 3.5 >=.NET 3.5 Reine Datumswerte Geburtstage 00:00:00 Zeitkomponente Wenn Zeitzonen keine Rolle spielen Silvester 31.12. 23:59 Genauer Zeitpunkt Termine Online Meeting 13:00 GMT+1

Demo DataProvider Klassen und Member Design

Object.ToString() Object.ToString() überschreiben Debugger Anzeige Kurze Texte Lesbare Texte DebuggerDisplay Attribute IFormatable Overload Nur trivial Code ohne Seiteneffekte Keine Exceptions im ToString() werfen

Object.Equals() x.equals(y) == y.equals(x) x.equals(x) == true y.equals(null) = false Keine Exceptions werfen Keine Wertgleichheit bei veränderbaren Werten Value Type Erweiterungen Equals immer überschreiben (Standard = Reflection) IEquatable<T> (Boxing vermeiden)

Object.GetHashCode() Wenn Equals() überschrieben => immer GetHashCode() überschreiben Equal Objekte => Gleicher Hashcode x.equals(y) => x.gethashcode() == y.gethashcode() Keine Änderung des Hashcodes zur Object Lifetime Keine Exceptions in GetHashCode() werfen

Parameter Designfehler im.net FX

Parameter II Reihenfolge und Benennung bei Überladung beibehalten Basistypen als Parameter Konkrete Typen als Rückgabewerte Out und Ref Parameter vermeiden Out Parameter ans Ende

Beispiel Exception Nichtssagende Fehlermeldung Aussagekräftige Fehlermeldung

Exception Ableitung System.Exception Stacktraces erhalten Tester Doer Pattern TryDo Pattern Keine ReturnCodes Nicht System.Exception abfangen Niemals System.Exception werfen Nicht von ApplicationException ableiten

Quellen Buch Framework Design Guidelines http://stylecop.codeplex.com/ MSDN Writing Quality Code MSDN Design Guidelines for Developing Class Libraries IDesign GuideLines http://www.clean-code-developer.de/ Mein BLog -> BE-IT.NET