Upload
stephan-partzsch
View
191
Download
2
Tags:
Embed Size (px)
DESCRIPTION
How Clean Code is used for social games in a big company.
Citation preview
Social Gamesand their Clean Code
http://www.vgchartz.com/gamedb/?name=fifa+soccer+13 || http://cartelthemes.com/fifa-13-193-hd-wallpapers.html
12.79 Mio.
30.11 Mio.
http://www.vgchartz.com/gamedb/?name=Call+of+Duty%3A+Modern+Warfare+3 || http://www.alextv.de/2011/11/10/call-of-duty-modern-warfare-3-review
Video Games = special interests
159.79 Mio.
Social Games = Games for everybody
Berlin
2009 — 20 employees
Today — 250 employees
20 Game-Teams
Independent
development teams
Mutable,
small teams
Consistency
Way of working
No fixed roles
High responsibility
Configurability
Maintainability
Weekly releases
Tracking & Reporting
Agile way of working
Agility
Consistency
Maintainability
Agility
improves
allows
Bubble Island
2009Start of development
2011Not more maintainable!
http://www.flickr.com/photos/mecklenburg
But stillsuccessful!
Refactoring!
1Consistency
Consistency
Consistency
Consistency
Naming
Consistency
Naming
•Speaking names
Consistency
Naming
•Speaking names
•No Abbreviations
Consistency
Naming
•Speaking names
•No Abbreviations
•1 word per concept
Consistency
Consistency
Consistency
Consistency
Consistency
Consistency
Consistency
Consistency
Consistency
Formatting
Consistency
Formatting
•Indentation
Consistency
Formatting
•Indentation
•Wrapping braces
Consistency
Formatting
•Indentation
•Wrapping braces
•Variables first
Consistency
Formatting
•Indentation
•Wrapping braces
•Variables first
•Public in front of non-public methods
Consistency
Consistency
Consistency
Comments
Consistency
Comments
•Avoid them if possible
Consistency
Comments
•Avoid them if possible
•Usage scenarios
Consistency
Comments
•Avoid them if possible
•Usage scenarios
‣Warnings
Consistency
Comments
•Avoid them if possible
•Usage scenarios
‣Warnings
‣ Simplified explanations
Consistency
Consistency
Consistency
Consistency
•Naming
Consistency
Consistency
•Naming
•Formatting
Consistency
Consistency
•Naming
•Formatting
•Comments
Consistency
2Maintainability
Maintainability
Maintainability
Maintainability
Maintainability
Maintainability
Methods
Maintainability
Methods
•As small as possible
Maintainability
Methods
•As small as possible
•1 level of abstraction
Maintainability
Methods
•As small as possible
•1 level of abstraction
•1 functionality
Maintainability
Maintainability
Maintainability
Maintainability
Maintainability
Classes
Maintainability
Classes
•1 reason to change (SRP)
Maintainability
Classes
•1 reason to change (SRP)
•Only a few instance variables
Maintainability
Classes
•1 reason to change (SRP)
•Only a few instance variables
•High kohesion
Maintainability
Maintainability
Maintainability
Maintainability
Maintainability
Maintainability
Maintainability
Data structures
Maintainability
•Avoid train wrecks
Data structures
Maintainability
•Avoid train wrecks
•Use data transfer objects
Data structures
Maintainability
•Avoid train wrecks
•Use data transfer objects
•Separate production and use of systems
Data structures
Maintainability
Maintainability
Maintainability
•Methods
Maintainability
Maintainability
•Methods
•Classes
Maintainability
Maintainability
•Methods
•Classes
•Data structures
Maintainability
Maintainability
3Agility
Islands of knowledge
Agility
http://flickr.com/photos/92928628@N04
Pair Programming
Agility
•Avoid islands of knowledge
Pair Programming
Agility
•Avoid islands of knowledge
•Integration of new team members
Pair Programming
Agility
•Avoid islands of knowledge
•Integration of new team members
•Collective responsibility
Pair Programming
Agility
Difficult to read
& unstructured
Agility
Regular refactorings
Agility
•Continuous improvements
Regular refactorings
Agility
•Continuous improvements
•The Boy Scout Rule (Robert C. Martin)
Regular refactorings
Agility
No safeguarding
Agility
http://flickr.com/photos/99995147@N00
Unit tests
Agility
•Safety net
Unit tests
Agility
•Safety net
•Facilitated training
Unit tests
Agility
•Safety net
•Facilitated training
•Playground
Unit tests
Agility
Features late testable
Agility
http://www.flickr.com/photos/adesigna
Continuous integration
Agility
•Early available software artifacts
Continuous integration
Agility
•Early available software artifacts
•Verifiable expectations
Continuous integration
Agility
•Early available software artifacts
•Verifiable expectations
•Foreseeable problems
Continuous integration
Agility
Agility
Agility
•Pair Programming
Agility
Agility
•Pair Programming
•Regular refactorings
Agility
Agility
•Pair Programming
•Regular refactorings
•Unit tests
Agility
Agility
•Pair Programming
•Regular refactorings
•Unit tests
•Continuous integration
Agility
Agility
4Tools
Toolshttp://nvie.com/img/2009/12/Screen-shot-2009-12-24-at-11.32.03.png
Git-Flow
Tools
http://jenkins.org
Tools
CPD & PMD
Benefit for Wooga
Flexible team building
http://www.flickr.com/photos/scoobay
High productivityover long period of time
http://www.flickr.com/photos/stephenbegin
changing requirementshttp://www.flickr.com/photos/jimculp
Rapid response to
Clean Code as
a common language
Less wtf/minute
Questions?
jobs.wooga.com
@StephanPartzsch