SlideShare a Scribd company logo
1 of 17
MVVM IRL
What is MVVM?
The promise of MVVM
A declarative way to do applications

Very little code
Fast application development
What does the model do?
What does the view do?
What does the view-model do?
What does the binder do?
Simple right?
How to do it the wrong way
Fat view-model
Code in the view
Code in the view
Code in the view
Code in the view
!MVC with data-binding
Takeaways
Very little code

Fast application development
If it’s not declarative, you’re doing it wrong
Support
Windows phone code samples from:
https://github.com/linkerro/CodeCamp
Knockout tutorials:
http://learn.knockoutjs.com/#/?tutorial=intro

More Related Content

What's hot

Pros & cons of svelte
Pros & cons of sveltePros & cons of svelte
Pros & cons of svelteElenorWisozk
 
PhoneGap - What It Actually Is
PhoneGap - What It Actually IsPhoneGap - What It Actually Is
PhoneGap - What It Actually IsMarkiyan Matsekh
 
Java Developer Resume | Edureka
Java Developer Resume | EdurekaJava Developer Resume | Edureka
Java Developer Resume | EdurekaEdureka!
 
Vue storefront London PWA meetup
Vue storefront London PWA meetupVue storefront London PWA meetup
Vue storefront London PWA meetupFilip Rakowski
 
Tars Tsuiper - When Drupal is not needed. Try to use Symfony.
Tars Tsuiper - When Drupal is not needed. Try to use Symfony.Tars Tsuiper - When Drupal is not needed. Try to use Symfony.
Tars Tsuiper - When Drupal is not needed. Try to use Symfony.DrupalCamp Kyiv
 
Tdd2018 state of the software quality in Germany
Tdd2018 state of the software quality in GermanyTdd2018 state of the software quality in Germany
Tdd2018 state of the software quality in GermanyOrlovsky Consulting GbR
 
Girls Can Code - 1/13/17
Girls Can Code - 1/13/17Girls Can Code - 1/13/17
Girls Can Code - 1/13/17Kayla Leung
 
The Ultimate Java Mastery Series - Code With Mosh
The Ultimate Java Mastery Series - Code With MoshThe Ultimate Java Mastery Series - Code With Mosh
The Ultimate Java Mastery Series - Code With MoshCoding Made Simple
 
Infinum iOS Talks #1 - Becoming an iOS developer swiftly by Vedran Burojevic
Infinum iOS Talks #1 - Becoming an iOS developer swiftly by Vedran BurojevicInfinum iOS Talks #1 - Becoming an iOS developer swiftly by Vedran Burojevic
Infinum iOS Talks #1 - Becoming an iOS developer swiftly by Vedran BurojevicInfinum
 
Top 13 Mistakes Committed by Angular Java script Developers
Top 13 Mistakes Committed by Angular Java script DevelopersTop 13 Mistakes Committed by Angular Java script Developers
Top 13 Mistakes Committed by Angular Java script DevelopersSarah Elson
 
Windows Phone Mango and PhoneGap
Windows Phone Mango and PhoneGapWindows Phone Mango and PhoneGap
Windows Phone Mango and PhoneGapDoncho Minkov
 

What's hot (20)

Sencha Touch
Sencha TouchSencha Touch
Sencha Touch
 
Dot net training online is an affordable and effective
Dot net training online is an affordable and effectiveDot net training online is an affordable and effective
Dot net training online is an affordable and effective
 
Spaghetti Code vs MVC
Spaghetti Code vs MVCSpaghetti Code vs MVC
Spaghetti Code vs MVC
 
Pros & cons of svelte
Pros & cons of sveltePros & cons of svelte
Pros & cons of svelte
 
PhoneGap - What It Actually Is
PhoneGap - What It Actually IsPhoneGap - What It Actually Is
PhoneGap - What It Actually Is
 
Spring
SpringSpring
Spring
 
E-learning Solution
E-learning SolutionE-learning Solution
E-learning Solution
 
Java Developer Resume | Edureka
Java Developer Resume | EdurekaJava Developer Resume | Edureka
Java Developer Resume | Edureka
 
Boquet manager
Boquet managerBoquet manager
Boquet manager
 
Vue storefront London PWA meetup
Vue storefront London PWA meetupVue storefront London PWA meetup
Vue storefront London PWA meetup
 
Tars Tsuiper - When Drupal is not needed. Try to use Symfony.
Tars Tsuiper - When Drupal is not needed. Try to use Symfony.Tars Tsuiper - When Drupal is not needed. Try to use Symfony.
Tars Tsuiper - When Drupal is not needed. Try to use Symfony.
 
Tdd2018 state of the software quality in Germany
Tdd2018 state of the software quality in GermanyTdd2018 state of the software quality in Germany
Tdd2018 state of the software quality in Germany
 
Girls Can Code - 1/13/17
Girls Can Code - 1/13/17Girls Can Code - 1/13/17
Girls Can Code - 1/13/17
 
The Ultimate Java Mastery Series - Code With Mosh
The Ultimate Java Mastery Series - Code With MoshThe Ultimate Java Mastery Series - Code With Mosh
The Ultimate Java Mastery Series - Code With Mosh
 
Infinum iOS Talks #1 - Becoming an iOS developer swiftly by Vedran Burojevic
Infinum iOS Talks #1 - Becoming an iOS developer swiftly by Vedran BurojevicInfinum iOS Talks #1 - Becoming an iOS developer swiftly by Vedran Burojevic
Infinum iOS Talks #1 - Becoming an iOS developer swiftly by Vedran Burojevic
 
Job manager 2020 in Angular
Job manager 2020 in AngularJob manager 2020 in Angular
Job manager 2020 in Angular
 
Top 13 Mistakes Committed by Angular Java script Developers
Top 13 Mistakes Committed by Angular Java script DevelopersTop 13 Mistakes Committed by Angular Java script Developers
Top 13 Mistakes Committed by Angular Java script Developers
 
justcode brochure
justcode brochurejustcode brochure
justcode brochure
 
Windows Phone Mango and PhoneGap
Windows Phone Mango and PhoneGapWindows Phone Mango and PhoneGap
Windows Phone Mango and PhoneGap
 
Angular 5,6,7
Angular 5,6,7Angular 5,6,7
Angular 5,6,7
 

Viewers also liked

The Single Responsibility Principle
The Single Responsibility PrincipleThe Single Responsibility Principle
The Single Responsibility PrincipleLars-Erik Kindblad
 
Single Responsibility Principle
Single Responsibility PrincipleSingle Responsibility Principle
Single Responsibility PrincipleDeddy Setyadi
 
Single responsibility principle
Single responsibility principleSingle responsibility principle
Single responsibility principleRadu Iscu
 
Single Responsibility Principle
Single Responsibility PrincipleSingle Responsibility Principle
Single Responsibility PrincipleEyal Golan
 
The Open Closed Principle - Part 1 - The Original Version
The Open Closed Principle - Part 1 - The Original VersionThe Open Closed Principle - Part 1 - The Original Version
The Open Closed Principle - Part 1 - The Original VersionPhilip Schwarz
 
S.O.L.I.D. Principles for Software Architects
S.O.L.I.D. Principles for Software ArchitectsS.O.L.I.D. Principles for Software Architects
S.O.L.I.D. Principles for Software ArchitectsRicardo Wilkins
 
Advanced Object-Oriented/SOLID Principles
Advanced Object-Oriented/SOLID PrinciplesAdvanced Object-Oriented/SOLID Principles
Advanced Object-Oriented/SOLID PrinciplesJon Kruger
 
SOLID Design Principles
SOLID Design PrinciplesSOLID Design Principles
SOLID Design PrinciplesAndreas Enbohm
 

Viewers also liked (10)

The Single Responsibility Principle
The Single Responsibility PrincipleThe Single Responsibility Principle
The Single Responsibility Principle
 
Python SOLID
Python SOLIDPython SOLID
Python SOLID
 
Single responsibility principle
Single responsibility principleSingle responsibility principle
Single responsibility principle
 
Single Responsibility Principle
Single Responsibility PrincipleSingle Responsibility Principle
Single Responsibility Principle
 
Single responsibility principle
Single responsibility principleSingle responsibility principle
Single responsibility principle
 
Single Responsibility Principle
Single Responsibility PrincipleSingle Responsibility Principle
Single Responsibility Principle
 
The Open Closed Principle - Part 1 - The Original Version
The Open Closed Principle - Part 1 - The Original VersionThe Open Closed Principle - Part 1 - The Original Version
The Open Closed Principle - Part 1 - The Original Version
 
S.O.L.I.D. Principles for Software Architects
S.O.L.I.D. Principles for Software ArchitectsS.O.L.I.D. Principles for Software Architects
S.O.L.I.D. Principles for Software Architects
 
Advanced Object-Oriented/SOLID Principles
Advanced Object-Oriented/SOLID PrinciplesAdvanced Object-Oriented/SOLID Principles
Advanced Object-Oriented/SOLID Principles
 
SOLID Design Principles
SOLID Design PrinciplesSOLID Design Principles
SOLID Design Principles
 

More from Radu Iscu

Reasoning behind event sourced systems
Reasoning behind event sourced systemsReasoning behind event sourced systems
Reasoning behind event sourced systemsRadu Iscu
 
Event sourcing 3
Event sourcing 3Event sourcing 3
Event sourcing 3Radu Iscu
 
Your mind at work
Your mind at workYour mind at work
Your mind at workRadu Iscu
 
Usefull code metrics
Usefull code metricsUsefull code metrics
Usefull code metricsRadu Iscu
 
Enki.js, lessons learned while writing a javascript framework
Enki.js, lessons learned while writing a javascript frameworkEnki.js, lessons learned while writing a javascript framework
Enki.js, lessons learned while writing a javascript frameworkRadu Iscu
 
Cross cutting concerns
Cross cutting concernsCross cutting concerns
Cross cutting concernsRadu Iscu
 
Visual Studio and the git workflow
Visual Studio and the git workflowVisual Studio and the git workflow
Visual Studio and the git workflowRadu Iscu
 
Defense against the dark arts - fighting against magic in programming, hidden...
Defense against the dark arts - fighting against magic in programming, hidden...Defense against the dark arts - fighting against magic in programming, hidden...
Defense against the dark arts - fighting against magic in programming, hidden...Radu Iscu
 
Mv* patterns
Mv* patternsMv* patterns
Mv* patternsRadu Iscu
 

More from Radu Iscu (10)

Rtfm
RtfmRtfm
Rtfm
 
Reasoning behind event sourced systems
Reasoning behind event sourced systemsReasoning behind event sourced systems
Reasoning behind event sourced systems
 
Event sourcing 3
Event sourcing 3Event sourcing 3
Event sourcing 3
 
Your mind at work
Your mind at workYour mind at work
Your mind at work
 
Usefull code metrics
Usefull code metricsUsefull code metrics
Usefull code metrics
 
Enki.js, lessons learned while writing a javascript framework
Enki.js, lessons learned while writing a javascript frameworkEnki.js, lessons learned while writing a javascript framework
Enki.js, lessons learned while writing a javascript framework
 
Cross cutting concerns
Cross cutting concernsCross cutting concerns
Cross cutting concerns
 
Visual Studio and the git workflow
Visual Studio and the git workflowVisual Studio and the git workflow
Visual Studio and the git workflow
 
Defense against the dark arts - fighting against magic in programming, hidden...
Defense against the dark arts - fighting against magic in programming, hidden...Defense against the dark arts - fighting against magic in programming, hidden...
Defense against the dark arts - fighting against magic in programming, hidden...
 
Mv* patterns
Mv* patternsMv* patterns
Mv* patterns
 

Recently uploaded

costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfngoud9212
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfjimielynbastida
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Unlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsUnlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsPrecisely
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 

Recently uploaded (20)

costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdf
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdf
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Unlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsUnlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power Systems
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 

MVVM IRL

Editor's Notes

  1. Hold the data (standard Data Transfer Objects)Hold the validation info (attributes)
  2. The view sits there and looks nice
  3. It acts as a one-on-one model for the viewIt is a declarative way to say that these things from the model map to those things in the view
  4. Does all the hard work of moving things from the view-model to the model, so you don’t have to write enormous amounts of events and stuff.
  5. Put data access, validation, business logic and the kitchen sink in the view-model.Analogous to the Fat controller anti-pattern
  6. This applies to all MV* patternsThis is the way to make sure that you have state of the art spaghetti code
  7. Happens when developers experienced in MVC forget that MVVM is mostly declarativeTry to let the binder do all the stuff