How to be a Good Developer

Slides:



Advertisements
Similar presentations
Welcome to. Who am I? A better way to code Design Patterns ???  What are design patterns?  How many are there?  How do I use them?  When do I use.
Advertisements

18-1 Verifying Object Behavior and Collaboration Role playing – the act of simulating object behavior and collaboration by acting out an object’s behaviors.
Patterns Reusable solutions to common object-oriented programming problems When given a programming problem, re-use an existing solution. Gang of Four.
(c) 2009 University of California, Irvine – André van der Hoek1June 13, 2015 – 21:42:16 Informatics 122 Software Design II Lecture 8 André van der Hoek.
Design Patterns CS is not simply about programming
Design Patterns. What are design patterns? A general reusable solution to a commonly occurring problem. A description or template for how to solve a problem.
(c) 2010 University of California, Irvine – André van der Hoek1June 29, 2015 – 08:55:05 Informatics 122 Software Design II Lecture 8 André van der Hoek.
Design Patterns Module Name - Object Oriented Modeling By Archana Munnangi S R Kumar Utkarsh Batwal ( ) ( ) ( )
CERN – European Organization for Nuclear Research GS Department – Administrative Information Services Design Patterns in Groovy Nicolas Décrevel Advanced.
Software Design Patterns Anton Danshin Moscow Institute of Physics and Technology Dolgoprudny
Vrije Universiteit amsterdamPostacademische Cursus Informatie Technologie Idioms and Patterns polymorphism -- inheritance and delegation idioms -- realizing.
Software Waterfall Life Cycle Requirements Construction Design Testing Delivery and Installation Operations and Maintenance Concept Exploration Prototype.
05 - Patterns Intro.CSC4071 Design Patterns Designing good and reusable OO software is hard. –Mix of specific + general –Impossible to get it right the.
CSSE 374: Introduction to Gang of Four Design Patterns
An Introduction to Design Patterns. Introduction Promote reuse. Use the experiences of software developers. A shared library/lingo used by developers.
CSSE 374: 3½ Gang of Four Design Patterns These slides derived from Steve Chenoweth, Shawn Bohner, Curt Clifton, and others involved in delivering 374.
SOEN 343 Software Design Section H Fall 2006 Dr Greg Butler
Design Patterns CSCI 5801: Software Engineering. Design Patterns.
DESIGN PATTERNS CSC532 Adv. Topics in Software Engineering Shirin A. Lakhani.
18 April 2005CSci 210 Spring Design Patterns 1 CSci 210.
Software Design Patterns (1) Introduction. patterns do … & do not … Patterns do... provide common vocabulary provide “shorthand” for effectively communicating.
Object Oriented Software Engineering Chapter 16 and 17 review 2014/06/03.
ECE450S – Software Engineering II
Design Patterns CSIS 3701: Advanced Object Oriented Programming.
Introduction to Design Patterns. Questions What is a design pattern? Who needs design patterns? How different are classes and objects in APL compared.
Creational Patterns
What to know for the exam. Smalltalk will be used for questions, but there will not be questions about the grammar. Questions might ask – how particular.
Proxy.
Behavioral Patterns CSE301 University of Sunderland Harry R Erwin, PhD.
CS616: Software Engineering Spring 2009 Design Patterns Sami Taha.
© 2011 Autodesk Popular Design Patterns and How to Implement Them in.NET Gopinath Taget Senior Developer Consultant.
Software Design Patterns Curtsy: Fahad Hassan (TxLabs)
Design Patterns. 1 Paradigm4 Concepts 9 Principles23 Patterns.
Design Patterns Introduction
Design Patterns SE464 Derek Rayside images from NetObjectives.com & Wikipedia.
Design Patterns in Context ©SoftMoore ConsultingSlide 1.
Five Minute Design Patterns Doug Marttila Forest and the Trees May 30, 2009 Template Factory Singleton Iterator Adapter Façade Observer Command Strategy.
7 April 2004CSci 210 Spring Design Patterns 2 CSci 210.
CLASSIFICATION OF DESIGN PATTERNS Hladchuk Maksym.
Design Patterns Spring 2017.
The Object-Oriented Thought Process Chapter 15
How to be a Good Developer
Chapter 10 Design Patterns.
Chapter 5:Design Patterns
How to be a Good Developer
MPCS – Advanced java Programming
Introduction to Design Patterns
Common Design Patterns
Design Patterns Lecture part 2.
Introduction to Design Patterns
How to be a Good Developer
Structure We saw early on the importance of algorithms, but what about structuring our code? What's the best way to structure a larger project made of.
How to be a Good Developer
Design Patterns with C# (and Food!)
Chapter 8, Design Patterns Bridge
object oriented Principles of software design
SOEN 343 Software Design Computer Science and Software Engineering Department Concordia University Fall 2005 Instructor: Patrice Chalin.
WARNING These slides are not optimized for printing or exam preparation. These are for lecture delivery only. These slides are made for PowerPoint 2010.
How to be a Good Developer
Design Patterns in Game Design
Informatics 122 Software Design II
CSE 403 Software Design.
Design Patterns Part 2: Factory, Builder, & Memento
DESIGN PATTERNS : Introduction
SOEN 343 Software Design Computer Science and Software Engineering Department Concordia University Fall 2004 Instructor: Patrice Chalin.
Informatics 122 Software Design II
Chapter 8, Design Patterns Introduction
CIS 644 Tues. Nov. 30, 1999 W15A … patterns.
Chapter 8, DesignPatterns Facade
Presentation transcript:

How to be a Good Developer SESSION 3

Values Simplicity Communication Feedback Courage Respect

Principles Boy Scout Rule Persistence Ignorance You Aren’t Gonna Need It Keep It Simple Stable Dependencies Hollywood Single Responsibility Open-Closed Liskov Substitution Interface Segregation Don’t Repeat Yourself Inversion of Control Dependency Inversion Explicit Dependencies Once and Only Once Separation of Concerns Tell, Don’t Ask Encapsulation Principle of Least Surprise

Patterns | Creational, Structural, Behavioural Factory method Decorator Mediator Abstract factory Facade Memento Builder Flyweight Observer Prototype Proxy State Singleton Chain of responsiblity Stategy Adaptor Command Template Bridge Interpreter Visitor Composite Iterator

Value | Feedback We constantly look for feedback on the work we do We seek and appreciate feedback in order to learn and develop We try to get feedback as soon as possible in the development process (because it gets exponentially more expensive to correct something the later in a project it’s found) We take feedback from anywhere: our systems, each other, stakeholders and customers

Value | Feedback IDEs provide feedback on compilation errors Unit tests provide feedback on program errors Continuous integration provides feedback on integration errors Code reviews provide feedback on structural errors Project plans provide feedback on progress to an agreed target

Principles | Stable Dependencies This principle talks about the direction of package dependency. Packages which may change a lot should depend on packages which are probably won’t change a lot. The principle is to avoid a situation where you have to make frequent changes to packages with lots of users.

Principles | Hollywood Principle This principle relates heavily to Inversion of Control. It states Don’t call us, we’ll call you and recommends that the developer write code which can be called by a framework or external control. It originates from the time when object orientation was new and developers needed to be encouraged to leave traditional procedural control, and move to thinking of objects which are called by frameworks.

Pattern | Singleton Creational This pattern is used when three things are necessary: Only one instance of a class should ever be created Lazy initialisation is needed, an instance is created on first-use You need a single global point of access Why the hell are you using a single global point of access?

Pattern | Singleton Creational

Pattern | Singleton Creational WARNING This is one the most widely incorrectly used patterns, typically because it provides global access. It can hide dependencies within code It can make unit testing difficult It increases coupling of classes

Pattern | Singleton Creational Source Making : Builder Design Pattern https://sourcemaking.com/design_patterns/singleton Wikipedia: Builder Pattern https://en.wikipedia.org/wiki/Singleton_pattern

Pattern | Adaptor Structural This pattern is used to adapt an existing class for use. The class may be legacy and unable to be changed, so the adapter provides a new interface to suit the needs of a consumer. Object A Legacy Package Adapter New Interface Consumer New Interface accesses consumes

Pattern | Adaptor Structural There’s similarities to Façade, Decorator, Proxy, and Bridge, in that they all can be used as wrappers. An adapter retro fits unrelated classes, a bridge separates an abstraction from varying implementations An adapter provides a new interface to an existing interface, a decorator enhances another instance, a proxy provides the same interface, and a façade provides an altogether new interface

Pattern | Adaptor Structural Source Making : Adapter Design Pattern https://sourcemaking.com/design_patterns/adapter Wikipedia: Adapter Pattern https://en.wikipedia.org/wiki/adapter_pattern

Next session Value | Courage Principles | Single Responsibility Principles | Open-Closed Patterns | Bridge Patterns | Composite Patterns | Decorator