konsten att skriva bra återanvändbar kod

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

Upload: ayasha

Post on 26-Jan-2016

45 views

Category:

Documents


1 download

DESCRIPTION

Konsten att skriva bra återanvändbar kod. Pierre Setteskog , Pontus Munck 2012-06-08. Innehåll. Syfte / bakgrund Grundregler och designmönster Domändriven design Anti- patterns Guidelines Testdriven utveckling Diskussion. Syfte. Enkelt att underhålla Smidigt att vidareutveckla - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Konsten att skriva  bra  återanvändbar kod

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

Page 2: Konsten att skriva  bra  återanvändbar kod

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

INNEHÅLL

Page 3: Konsten att skriva  bra  återanvändbar kod

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.

Page 4: Konsten att skriva  bra  återanvändbar kod

Lär dig ditt verktyg!

Resharper,Productivity Power Tools,.Net Reflector

Page 5: Konsten att skriva  bra  återanvändbar kod

Lär dig ditt verktyg!

Kör mot debug kompilerat, inkludera .pdb och peka ut källfilerna.

Page 6: Konsten att skriva  bra  återanvändbar kod

Lär dig ditt verktyg!

Page 7: Konsten att skriva  bra  återanvändbar kod

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”

Page 8: Konsten att skriva  bra  återanvändbar kod

SOLID

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

Page 9: Konsten att skriva  bra  återanvändbar kod

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<MyModel> (Funkar inte automatiskt i gammal autofac)

Lazy<MyVierdService> (Funkar inte i gamla Autofac) IEnumerable<ResolveTags>

IEnumerable<ApplicationStart> (Kräver att man registrerar builder.RegisterModule(new ImplicitCollectionSupportModule());)

Page 10: Konsten att skriva  bra  återanvändbar kod

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

Page 11: Konsten att skriva  bra  återanvändbar kod

Anti-patterns

Vanligt förekommande– Hardcoding– Magic numbers– Spaghetti code

God object / Monster object Singleton object (statisk klass)

Page 12: Konsten att skriva  bra  återanvändbar kod

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

Page 13: Konsten att skriva  bra  återanvändbar kod

Testdriven utveckling

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