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.
DESIGN PATTERNS OZGUR RAHMI DONMEZ.
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 ( ) ( ) ( )
Design Patterns academy.zariba.com 1. Lecture Content 1.What are Design Patterns? 2.Creational 3.Structural 4.Behavioral 5.Architectural 6.Design Patterns.
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.
Design Patterns Standardized Recurring model Fits in many location Opposite of customization Fundamental types of pattern Choose and use as desired and.
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.
An Introduction to Design Patterns. Introduction Promote reuse. Use the experiences of software developers. A shared library/lingo used by developers.
Design Patterns in Java Chapter 1 Introduction Summary prepared by Kirk Scott 1.
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.
Design Patterns Gang Qian Department of Computer Science University of Central Oklahoma.
Design Patterns CS 124 Reference: Gamma et al (“Gang-of-4”), Design Patterns.
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.
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.
Overview of Creational Patterns ©SoftMoore ConsultingSlide 1.
PROTOTYPE. Design Pattern Space Purpose ScopeCreationalStructuralBehavioral ClassFactory MethodAdapterInterpreter Template Method ObjectAbstract factory.
7 April 2004CSci 210 Spring Design Patterns 2 CSci 210.
CLASSIFICATION OF DESIGN PATTERNS Hladchuk Maksym.
Design Patterns Spring 2017.
How to be a Good Developer
Chapter 10 Design Patterns.
Chapter 5:Design Patterns
Software 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
Plan for today Refactoring and Design Patterns
Design Patterns with C# (and Food!)
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
How to be a Good Developer
Software Engineering Lecture 7 - Design Patterns
Design Patterns in Game Design
Informatics 122 Software Design II
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 Singleton
Chapter 8, DesignPatterns Facade
Presentation transcript:

How to be a Good Developer SESSION 2

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 | Communication We work together as a team and know how to communicate with each other We share problems and speak to each other regularly to know what’s going on We help each other where necessary

Principles | You Aren’t Gonna Need It An extreme programming (XP) principle which states:

Always implement things when you actually need them, never when you just foresee that you need them.

Principles | You Aren’t Gonna Need It In the context of XP it should be used with continuous refactoring, automated unit testing and continuous integration. With continuous refactoring, a feature can be added later only when it becomes necessary.

Principles | Keep It Simple, Stupid Given a range of solutions to a problem, choose the simplest. This is not doing the quickest and easiest thing, rather the simplest. In the context of You Aren’t Gonna Need It striving for the simplest solution makes it easier to refactor later.

Principles | Keep It Simple, Stupid There will always be situations where thinking ahead and developing with the future in mind might be a good idea. Think of this principle as an attempt to always aim for simple. Complicated solutions may be more efficient and technically better, but this principle states that they may at best not be necessary and at worst cause more problems in themselves.

Pattern | Builder Creational This pattern deals with the creation of complex aggregate objects. It attempts to deal with the telescoping constructor anti- pattern in the abstract factory or factory method patterns. Instead of using a constructor the pattern uses a builder object which accepts parameters step by step and produces a constructed object.

The telescoping constructor anti- pattern occurs when the increase in number and combination of constructor parameters leads to an ever-growing list of constructors.

Pattern | Builder Creational This pattern deals with the creation of complex aggregate objects. It attempts to deal with the telescoping constructor anti- pattern in the abstract factory or factory method patterns. Instead of using a constructor the pattern uses a builder object which accepts parameters step by step and produces a constructed object.

Pattern | Builder Creational It can also be useful for dealing with data that can’t be easily edited such as html code, SQL queries and which needs to be constructed in its entirety. A builder can take the information necessary to build such data step by step.

Pattern | Builder Creational

Pattern | Builder Creational

Pattern | Builder Creational Source Making : Builder Design Pattern https://sourcemaking.com/design_patterns/builder Wikipedia: Builder Pattern https://en.wikipedia.org/wiki/Builder_pattern

Pattern | Prototype Creational This pattern is used when the type of objects being created are determined by an instance serving as a prototype which can be cloned to create new instances. This is beneficial when Using new would be an expensive operation When an newly instantiated object needs to be an identical copy of another instance

Pattern | Prototype Creational

Pattern | Prototype Creational Source Making : Prototype Design Pattern https://sourcemaking.com/design_patterns/prototype Wikipedia: Prototype Pattern https://en.wikipedia.org/wiki/Prototype_pattern

Next session Value | Feedback Principles | Stable Dependencies Principles | Hollywood Patterns | Singleton Patterns | Adaptor