KONSTEN ATT SKRIVA BRA ÅTERANVÄNDBAR KOD Pierre Setteskog, Pontus Munck 2012-06-08.

Slides:



Advertisements
Liknande presentationer
SOA Governance with SOA Software For BUGS Martin Svensson.
Advertisements

Varför är det viktigt att mäta?
Liten introduktion till Wiki’n som KunskapsDatabas
Föreläsning 7, Kapitel 7 Designa klasser Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling.
Serverkampanj för mellanmarknaden – genom partnerpresentation: Bild endast för presentatör: visa inte Talare: Partner Presentationens titel: Kraften att.
Fujitsu 1. © Fujitsu 2008 Stockholm Libris inspirationsdag Kristian Wallin Anne Sandfær Fujitsu Services A/S.
Hardware OS Data, User settings Applications IT utmaningar Beroenden mellan PC komponenter hämmar flexibiliteten Vad förändras Beroenden bryts med hjälp.
Elnätsreglering Hearing Energimarknadsinspektionen 3 April 2013.
”Ett sätt att distribuera Business Objects via webben”
Daniel Nylén, Institutionen för Informatik
Algoritmer och data strukturer -Länkade listor
Teknisk rapportskrivning
Next previous Refactoring och lite mönster kodade i Java Innehåll Vad är refactoring? Ett större refactoringexempel Några mönster kodade i Java OOMPA 2000.
OOP Objekt-orienterad programmering
Ajax Dynamiska webbsystem. AJAX och web 2.0 Web 2.0 är egentligen bara ett ”buzzword” för en modern webbsajt. Innehållet skulle till exempel vara: Rich.
Privata och publika moln Kund X Anders Brännfors
Nationell strategi för eHälsa och Socialstyrelsens roll
Javaprogrammering 5p examinator: Ragnar Nohre, labass: Lasse Öberg
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Objektbaserad programmering –Grundläggande om klasser och objekt – (Arv får vänta)  Iden med klasser.
Föreläsning 4, Kapitel 4 Gruppera objekt Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling.
Zend Framework Exemplifierat med spagooy.com Kurs: Moderna applikationsmiljöer, HIK Handledare: Martin Blomberg Studenter: Robin Bengtsson, Magnus Spång.
OpenHierarchy introduktion
Objektorienterad programmering i Java
TDD Börda, befrielse eller rent av en omöjlighet?.
Föreläsning 6, kapitel 6 Objekt som uppför sig som de skall Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes.
Användningsforum – Dagordning Möte # – Inledning, Ordförande Peter Krantz – 10.30Bakgrund och relation till övriga it-politiska.
Föreläsning 8, kapitel 8 Förbättra strukturen med arv Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael.
ASP.NET MVC4 + NoSQL = Major Awesomness. IoC Container.
Välkommen till Microsoft Partner Tour 2008 Ann-Charlotte Båth, Microsoft Partner Program.
Mer om arv - Polymorfism Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar
UTVECKLING MED RAMVERKET.NET Marcus Medina. Dagens visdomsord ” Ingen vet vad han klarar innan han har försökt. ” - Publilius Syrus (85 f.Kr.-43 f.Kr.).
Arv.
Projekt och Arkitektur
Varmt välkommen!. Jag heter... och mina förväntningar...
Next previous Mjukvaruprocessen: översikt och repetition. XP: problemformulering. JUnit. Innehåll Allmännt om utvecklingsprocesser från Bruegge kapitel.
Kravönskemålsprocessen LPL-möte Umeå. Bakgrund i korthet »Införandestöd och projektsupport Skapa upp ett ramverk (Jira) för att hantera support.
EN KOMPLETT INDUSTRIPARTNER ! Melsecsystem i drift.
Föreläsning 8 Arv och abstrakta klasser. Arv Definierar en klass utifrån en redan existerande klass Den nya klassen utökar den ärvda klassen ( extends.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 8 ( ) INNEHÅLL:Klasser: -Konstruktorer -Klassvariabler -Instansmetoder -Privata.
MV500B: Introduktion till interaktiv ljuddesign David Yanagisawa, Anders-Petter Andersson 4.5 högskolepoängLektion 3.
Exempelbaserade specifikationer med SpecFlow
Utveckling med ramverket .net
Riktade listor i C och Java Lösning till gruppövning 1.
WIPCORE PRESENTATIONSMALL  TEXT: Förutom de element som redan är stylade (t.ex. versala rubriker) finns det ett par andra riktlinjer. –Ord du vill markera.
Utvecklingsprocessen Webbutveckling. Utvecklingsprocessen Bli inte rädd för alla begrepp och alla verktyg man verkar behöva kunna. Du måste inte använda.
Microsoft Visual Studio och.NET Framework, idag och imorgon! Robert Folkesson
Föreläsning 9 Gränssnitt. Super Super kan användas till anrop av en omdefinierad metod Super kan användas till anrop av konstruktorer i superklassen Super.
1 Windows Azure Mikael ÖstbergTorkel Ödegaard. 2 Äshur Ashore Azzuure.
För utveckling av verksamhet, produkter och livskvalitet. Stack och Kö - Implementering - Tilllämpningar.
För att inkludera alla Ljusdal IF
Arkitektrollen. Ansvar och uppgifter Architecture notebook Mycket intensivt elaboration – inception Mål: en stabil arkitektur i slutet på elaboration.
Arv repetition Arv = Är relation Tillgänglighet public, protected och private. Överklass ös Direkt härledd underklass dhu: Class dhu : public ös{} Indirekt.
Köer -- Kapitel 16. Principen med en kö Köer är FIFO datastrukturer  First In – First Out  enqueue() Lägg till data i kön (först)  dequeue() Hämta.
7. Delegerare och notifierare
ITM1 Kapitel 8 Datastrukturer Grundläggande datavetenskap, 4p Utgående från boken Computer Science av: J. Glenn Brookshear.
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Elev loggbok.
Sv Teknisk strategi i NyA Planering Presentation på NUAK Reijo Soréus Pass 2:7.
Lab Contact 1  Lab Assistants:  Meng Liu, Group B  Sara Abbaspour, Group A
Anpassa fri programvara - Frihet ett, hur nyttjar man den? Copyright © 2006, 2007 Marcus Rejås Rejås Datakonsult Jag ger härmed rätten till alla att nyttja.
Konfiguraitonshantering EN KORT SAMMANFATTNING AV KONFIGURAITONSHANTERING.
Gruppövning Applikationsprogramering Klassuppdelning Loose Coupling Model View Controller Inversion of Control Layout med Swing JSplitPane Mouse-over Events.
Introduktion till The Rational IT Model
När idéer ska utvecklas När företag ska växa
EAK NRK
Automated and sustainable IT
När systemen aldrig någonsin får stanna
Föreläsning 3: Booleans, if, switch
Original - ogrupperad Företags- inställningar
Presentationens avskrift:

KONSTEN ATT SKRIVA BRA ÅTERANVÄNDBAR KOD Pierre Setteskog, Pontus Munck

 Syfte/bakgrund  Grundregler och designmönster  Domändriven design  Anti-patterns  Guidelines  Testdriven utveckling  Diskussion INNEHÅLL

Syfte  Enkelt att underhålla  Smidigt att vidareutveckla  Minimera buggar vid ny funktionalitet  Förenkla enhetstestning  Varför: I tider då kunder kräver mer och mer och ren produkt utveckling ibland kan bli för kostsam och tom Alphalib.  Hinder: Plattform,kunskap, invanda företags mönster,roller. När skall man skriva återanvändbar kod.

Lär dig ditt verktyg!  Resharper,Productivity Power Tools,.Net Reflector

Lär dig ditt verktyg!  Kör mot debug kompilerat, inkludera.pdb och peka ut källfilerna.

Lär dig ditt verktyg!

Grundregler  SOLID  Design patterns / Anti-patterns  KISS DRY YAGNI  Böcker –Refactoring – Martin Fowler –Clean Code – Robert C Martin  Autofac eller DI tänk  ”If its not broken dont fix” it” vs Write once read many”

SOLID  Single responsibility principle  Open/Closed principle  Liskov substitution principle  Interface segregation principle  Dependency inversion principle

Autofac  Ta in alla externa beroenden genom konstruktorn. (Förutom string )  Registrera interface,abstrakt klass, klass, mest ärvda klass osv i uppstart. Autoregistrering,Multitenanty,Cache Decorate klass.  Func (Funkar inte automatiskt i gammal autofac)  Lazy (Funkar inte i gamla Autofac)  IEnumerable IEnumerable (Kräver att man registrerar builder.RegisterModule(new ImplicitCollectionSupportModule());)

Domändriven design  Koncept –Domain model (POCO)  Entity, Value object, Aggregate –Service  Hanterar operationer ”utanför” domänen –Repository  Hanterar lagring av modellen –Factory  Affärslogik – ändras sällan  Infrastruktur – ändras oftare  Rekommenderad bok –Eric Evans – Domain Driven Design

Anti-patterns  Vanligt förekommande –Hardcoding –Magic numbers –Spaghetti code  God object / Monster object  Singleton object (statisk klass)

Guidelines  Använd komposition istället för arv  Undvik statiska klasser  Hollywood principle –Don’t call the container, it will call you!  Lägg inte alla knivarna i ett fack och alla gafflarna i ett annat.  Dokumentera på fågelperspektiv nivå och kluriga delar.  Försök göra så mycket som möjligt med så lite kod som möjligt och skriv tydlig kod  Refaktorera

Testdriven utveckling  Enklare + snabbare utveckling / test  Möjliggör säker refactoring  Specifikation + verifikation  API design  Dokumentation + exempelkod