Social Games and their Clean Code

Post on 26-May-2015

190 views 2 download

Tags:

description

How Clean Code is used for social games in a big company.

Transcript of Social Games and their Clean Code

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

https://www.pivotaltracker.com

Tools

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