SlideShare ist ein Scribd-Unternehmen logo
1 von 64
Downloaden Sie, um offline zu lesen
by@_md
Barely
Design
*
Enough
Iworkhere
Icontributehere
Itweethere @_md
MarcelloDuarte
bigdesignmotivators
principlesbehindsimplicity
responsibility-drivenprocess{
IT’SHARDTOCHANGELATER.
WENEEDTOTHINKABOUTTHINGSBEFOREDEVELOPING.
WENEEDTOMAKESUREWEDON’TMISSANYTHING.
THISISJUSTTHEWAYWEDOIT.
proceduralprogrammersarecomfortable
withdata-drivendesign
class SomethingPeopleCallEntity
{
public function getABitOfThis()
{
return $this->aBitOfThis;
}
public function getABitOfThat()
{
return $this->aBitOfThat;
}
public function getABitOfTheOtherThing()
{
return $this->aBitOfTheOtherThing;
}
public function getSomeOfThis()
{
return $this->someOfThis;
}
public function getSomeOfThat()
{
return $this->someOfThat;
}
public function getSomeOfTheOtherThing()
{
return $this->someOfTheOtherThing;
}
demeter
For all classes C,
and for all methods M attached to C,
all objects to which M sends a message
must be instances of classes

associated with the following classes:
1.The argument classes of M (including C.)
2.The instance variable classes of C.
$this->person->getCar()->getEngine()->ignite();
leadsustonamingafterstructure

fragility
viscosity
disregardtoencapsulation{
data-driven
onlytalktoimmediatefriends
demeter
minimisetheinteractionbetweenobjects
tell don’t ask
$this->person->startCar();
putthebehaviourwherethedatais
tell don’t ask
simplicity
“Getitdoneintenminutesandmoveon.Savethebig
sortimplementationforwhenthegoldownersdecide
thesystemistooslow.
Encapsulationwillsaveyou.”
Ron Jeffries
simplicity
abstraction |əәbˈstrakʃ(əә)n|
noun [ mass noun ]
1 the quality of dealing with ideas rather than events: topics
will vary in degrees of abstraction.
• [ count noun ] something which exists only as an idea: the
question can no longer be treated as an academic abstraction.
2 freedom from full representation
in art:geometric abstraction has been a mainstay in her work.
class TestRunner
{
public function __construct(ProgressFormatter $formatter)
{
$this->progressFormatter = $formatter;
}
public function run(Test $test)
{
try {
$test->run();
$this->progressFormatter->markPass();
} catch (Exception $e) {
$this->progressFormatter->markFail($e);
}
}
}
“Customersknow!
Conferenceroomwithevillittleminds:muahaha!”
Uncle Bob
change
WENEEDANYANCATFORMATTERNOW!
class NyanCatFormatter extends ProgressFormatter
{
}
http://mmw-blog.blogspot.co.uk/2010/07/happy-women-joyful-freedom-happiness.html
class TestRunner
{
public function __construct(Formatter $formatter)
{
$this->formatter = $formatter;
}
public function run(Test $test)
{
try {
$test->run();
$this->formatter->markPass();
} catch (Exception $e) {
$this->formatter->markFail($e);
}
}
}
class NyanCat implements Formatter
{
}
abstractrolesthatcanchange
«interface»
Formatter
+ markPass()
+ markFail()
interface=role+responsibilities
messaging
«interface»
Formatter
+ markPass()
+ markFail()
Test Runner
+ run(:Test)
Progress NyanCat
…
whendowedecidetoaddanabstraction
"Makethecommitmentatthelast

responsiblemoment"
Preston Smith
decide later
designsoyoucancommitlater
fabric
objects
values
{
concepts
identity
state
behaviour
{objects
entitieshaveidentitiesandstate

whynotusetheminyouOOdesign?
process
“ThefullbenefitofOOcanonlyberealizedif
encapsulationismaximisedduringthedesignprocess.



RDDspecifiesobjectbehaviourbeforeobjectstructure
andotherimplementationconsiderationsaremade.”
Rebecca Wirfs-Brock
responsibilities
“Wehavefoundthatthemosteffectivewayofteaching
theidiomaticwayofthinkingwithobjectsistoimmerse
thelearnerinthe"object-ness"ofthematerial.”
Ward Cunningham
CRC
identifyscenarios
listresponsibilities
identifyroles,values
dreamtheboundaries
{ CRC
CRC
Course
Students
LessonsEnrol students
Display outline/info
Keep track of
vacancies
CRC
“Knowinadvancewhereyouaregoingtoputcertain
behaviours. […]Inshort,beforeyouwriteyourfirst
test,youhavetodreamupthe[boundaries]thatyou
wishyouhad.”
Uncle Bob
boundaries
Dependency
Inversion
Principle
[Martin 02]
Behaviour
Collaborator
Collaborator
Role
Role
class CompetencyFinder
{
private $learner;
private $finder;
public function __construct(Learner $learner, CompetencyDictionaryFinder $finder)
{
$this->learner = $learner;
$this->finder = $finder;
}
public function findDictionary()
{
return $this->finder->findByLearnerRole($this->learner->getLearnerRole());
}
}
interface CompetencyDictionaryFinder
{
/**
* Gets the dictionary for a particular role
*
* @param LearnerRole $role
* @return InviqaLearningCompetencyDictionary
*/
public function findByLearnerRole(LearnerRole $role);
}
/**
* @Route(service="controllers.skills")
*/
class SkillsController
{
private $competencyFinder;
private $raterFinder;
public function __construct(CompetencyFinder $competencyFinder)
{
$this->competencyFinder = $competencyFinder;
}
/**
* @Route("/skills", name="skills")
* @Template()
* Show the skill for the learners role
*/
public function indexAction()
{
return ['competencies' => $this->competencyFinder->findDictionary()];
}
}
class Skill
{
private $skillChanges;
public static function rate($skill, Learner $learner, Rating $rating)
{
$skillChange = new SkillChangeEvent($skill, $learner, $rating);
$skill = new Skill();
$skill->skillChanges[] = $skillChange;
}
public function getSkillChanges()
{
return $skill->skillChanges;
}
}
tdd
usescenariosandexamples
tobuildyourdomain
considerinvertingdependencies

aroundtheboundaries
firstlearndesign
thentest-drivendesign
usetherighttoolsfortherightjob
concluding
bigdesignmotivators
principlesbehindsimplicity
responsibility-drivenprocess
learndesignthenTDD{
Iworkhere
Icontributehere
Itweethere @_md
MarcelloDuarte
Thankyou
joind.in/13373
Credits
http://earthymoon.deviantart.com/art/Elephant-png-122633500
http://mmw-blog.blogspot.co.uk/2010/07/happy-women-joyful-
freedom-happiness.html

Weitere ähnliche Inhalte

Was ist angesagt?

Presentation1, radiological imaging of anal carcinoma.
Presentation1, radiological imaging of anal carcinoma.Presentation1, radiological imaging of anal carcinoma.
Presentation1, radiological imaging of anal carcinoma.Abdellah Nazeer
 
Primitive Neuroectodermal Tumor.pptx
Primitive Neuroectodermal Tumor.pptxPrimitive Neuroectodermal Tumor.pptx
Primitive Neuroectodermal Tumor.pptxMedhatMoustafa3
 
44 DAVID SUTTON PICTURES SKELETAL TRAUMA REGIONAL
44 DAVID SUTTON PICTURES SKELETAL TRAUMA REGIONAL44 DAVID SUTTON PICTURES SKELETAL TRAUMA REGIONAL
44 DAVID SUTTON PICTURES SKELETAL TRAUMA REGIONALDr. Muhammad Bin Zulfiqar
 
Primary assessment in maxillofacial trauma.pptx
Primary assessment in maxillofacial trauma.pptxPrimary assessment in maxillofacial trauma.pptx
Primary assessment in maxillofacial trauma.pptxKathirvelGopalakrish
 
Radiological Evaluation of CNS Tumors
Radiological Evaluation of CNS TumorsRadiological Evaluation of CNS Tumors
Radiological Evaluation of CNS TumorsSubhash Thakur
 
Case of bilateral tmj dislocation
Case of bilateral tmj dislocationCase of bilateral tmj dislocation
Case of bilateral tmj dislocationDr Bhavik Miyani
 
04 radiology in maxillofacial trauma.ppt. new presentation
04 radiology in maxillofacial trauma.ppt. new presentation04 radiology in maxillofacial trauma.ppt. new presentation
04 radiology in maxillofacial trauma.ppt. new presentationJamil Kifayatullah
 
MRI for the maxillofacial surgeon.
MRI for the maxillofacial surgeon.MRI for the maxillofacial surgeon.
MRI for the maxillofacial surgeon.Cairo university
 
Imaging of Traumatic Brain Injury
Imaging of Traumatic Brain InjuryImaging of Traumatic Brain Injury
Imaging of Traumatic Brain InjuryRathachai Kaewlai
 
Normal Anatomy of Buccal mucosa and cancer
 Normal Anatomy of  Buccal mucosa and cancer Normal Anatomy of  Buccal mucosa and cancer
Normal Anatomy of Buccal mucosa and cancerKanhu Charan
 
Digital Elevation Models - WUR - Grontmij
Digital Elevation Models - WUR - GrontmijDigital Elevation Models - WUR - Grontmij
Digital Elevation Models - WUR - GrontmijXander Bakker
 
Imaging in facial trauma
Imaging in facial traumaImaging in facial trauma
Imaging in facial traumaSumiya Arshad
 
SPATIAL POINT PATTERNS
SPATIAL POINT PATTERNSSPATIAL POINT PATTERNS
SPATIAL POINT PATTERNSLiemNguyenDuy
 
Cross sectional anatomy of neck spaces
Cross sectional anatomy of neck spacesCross sectional anatomy of neck spaces
Cross sectional anatomy of neck spacesRamanGhimire3
 

Was ist angesagt? (20)

20160925 ser dr.rathachai kaewlai
20160925 ser dr.rathachai kaewlai20160925 ser dr.rathachai kaewlai
20160925 ser dr.rathachai kaewlai
 
Presentation1, radiological imaging of anal carcinoma.
Presentation1, radiological imaging of anal carcinoma.Presentation1, radiological imaging of anal carcinoma.
Presentation1, radiological imaging of anal carcinoma.
 
Primitive Neuroectodermal Tumor.pptx
Primitive Neuroectodermal Tumor.pptxPrimitive Neuroectodermal Tumor.pptx
Primitive Neuroectodermal Tumor.pptx
 
44 DAVID SUTTON PICTURES SKELETAL TRAUMA REGIONAL
44 DAVID SUTTON PICTURES SKELETAL TRAUMA REGIONAL44 DAVID SUTTON PICTURES SKELETAL TRAUMA REGIONAL
44 DAVID SUTTON PICTURES SKELETAL TRAUMA REGIONAL
 
Imaging of Facial Trauma
Imaging of Facial TraumaImaging of Facial Trauma
Imaging of Facial Trauma
 
Essentials of CT brain (For Undergraduates)
Essentials of CT brain (For Undergraduates)Essentials of CT brain (For Undergraduates)
Essentials of CT brain (For Undergraduates)
 
Primary assessment in maxillofacial trauma.pptx
Primary assessment in maxillofacial trauma.pptxPrimary assessment in maxillofacial trauma.pptx
Primary assessment in maxillofacial trauma.pptx
 
Radiological Evaluation of CNS Tumors
Radiological Evaluation of CNS TumorsRadiological Evaluation of CNS Tumors
Radiological Evaluation of CNS Tumors
 
Case record...Parasagittal meningioma
Case record...Parasagittal meningiomaCase record...Parasagittal meningioma
Case record...Parasagittal meningioma
 
Case of bilateral tmj dislocation
Case of bilateral tmj dislocationCase of bilateral tmj dislocation
Case of bilateral tmj dislocation
 
04 radiology in maxillofacial trauma.ppt. new presentation
04 radiology in maxillofacial trauma.ppt. new presentation04 radiology in maxillofacial trauma.ppt. new presentation
04 radiology in maxillofacial trauma.ppt. new presentation
 
MRI for the maxillofacial surgeon.
MRI for the maxillofacial surgeon.MRI for the maxillofacial surgeon.
MRI for the maxillofacial surgeon.
 
Imaging of Traumatic Brain Injury
Imaging of Traumatic Brain InjuryImaging of Traumatic Brain Injury
Imaging of Traumatic Brain Injury
 
Normal Anatomy of Buccal mucosa and cancer
 Normal Anatomy of  Buccal mucosa and cancer Normal Anatomy of  Buccal mucosa and cancer
Normal Anatomy of Buccal mucosa and cancer
 
Digital Elevation Models - WUR - Grontmij
Digital Elevation Models - WUR - GrontmijDigital Elevation Models - WUR - Grontmij
Digital Elevation Models - WUR - Grontmij
 
Osteosarcoma
OsteosarcomaOsteosarcoma
Osteosarcoma
 
Imaging in facial trauma
Imaging in facial traumaImaging in facial trauma
Imaging in facial trauma
 
SPATIAL POINT PATTERNS
SPATIAL POINT PATTERNSSPATIAL POINT PATTERNS
SPATIAL POINT PATTERNS
 
Cross sectional anatomy of neck spaces
Cross sectional anatomy of neck spacesCross sectional anatomy of neck spaces
Cross sectional anatomy of neck spaces
 
Imaging Of Facial Trauma Part 2
Imaging Of Facial Trauma Part 2Imaging Of Facial Trauma Part 2
Imaging Of Facial Trauma Part 2
 

Andere mochten auch

Pair Programming, TDD and other impractical things
Pair Programming, TDD and other impractical thingsPair Programming, TDD and other impractical things
Pair Programming, TDD and other impractical thingsMarcello Duarte
 
Why Game Developers Should Care About HTML5
Why Game Developers Should Care About HTML5Why Game Developers Should Care About HTML5
Why Game Developers Should Care About HTML5Bramus Van Damme
 
Category theory for beginners
Category theory for beginnersCategory theory for beginners
Category theory for beginnerskenbot
 
Civil Engineering – Oldest Yet A Highly Sought After Career Choice in India
Civil Engineering – Oldest Yet A Highly Sought After Career Choice in IndiaCivil Engineering – Oldest Yet A Highly Sought After Career Choice in India
Civil Engineering – Oldest Yet A Highly Sought After Career Choice in IndiaAnkur Tandon
 
[Infographic] How will Internet of Things (IoT) change the world as we know it?
[Infographic] How will Internet of Things (IoT) change the world as we know it?[Infographic] How will Internet of Things (IoT) change the world as we know it?
[Infographic] How will Internet of Things (IoT) change the world as we know it?InterQuest Group
 
Introducing Eager Design
Introducing Eager DesignIntroducing Eager Design
Introducing Eager DesignMarcello Duarte
 
Experience Agile Programming - Kiev
Experience Agile Programming - KievExperience Agile Programming - Kiev
Experience Agile Programming - KievJohannes Brodwall
 
BDD with Behat and PHPSpec
BDD with Behat and PHPSpecBDD with Behat and PHPSpec
BDD with Behat and PHPSpecRob Ingram
 
THE CONTRIBUTOR’S IDENTITY ppt
THE CONTRIBUTOR’S  IDENTITY pptTHE CONTRIBUTOR’S  IDENTITY ppt
THE CONTRIBUTOR’S IDENTITY pptDrazzer_Dhruv
 
5 Ways to Boost Workplace Productivity
5 Ways to Boost Workplace Productivity5 Ways to Boost Workplace Productivity
5 Ways to Boost Workplace ProductivitySan Diego Office
 
PHPSpec & Behat: Two Testing Tools That Write Code For You (#phptek edition)
PHPSpec & Behat: Two Testing Tools That Write Code For You (#phptek edition)PHPSpec & Behat: Two Testing Tools That Write Code For You (#phptek edition)
PHPSpec & Behat: Two Testing Tools That Write Code For You (#phptek edition)Joshua Warren
 
The Brain Behind Your Brand: How to Design Your Way to Success
The Brain Behind Your Brand: How to Design Your Way to SuccessThe Brain Behind Your Brand: How to Design Your Way to Success
The Brain Behind Your Brand: How to Design Your Way to SuccessMarketo
 
California bearingratio test
California bearingratio testCalifornia bearingratio test
California bearingratio testAsok999
 
Understanding Craftsmanship SwanseaCon2015
Understanding Craftsmanship SwanseaCon2015Understanding Craftsmanship SwanseaCon2015
Understanding Craftsmanship SwanseaCon2015Marcello Duarte
 
DPM Summit 2015 - Next-Level Collaboration: Facilitating Web Content Working ...
DPM Summit 2015 - Next-Level Collaboration: Facilitating Web Content Working ...DPM Summit 2015 - Next-Level Collaboration: Facilitating Web Content Working ...
DPM Summit 2015 - Next-Level Collaboration: Facilitating Web Content Working ...Rebekah Baggs
 
Top 10 things a fresh programmer should know - Dao Ngoc Khanh
Top 10 things a fresh programmer should know - Dao Ngoc KhanhTop 10 things a fresh programmer should know - Dao Ngoc Khanh
Top 10 things a fresh programmer should know - Dao Ngoc KhanhDevDay.org
 

Andere mochten auch (20)

Pair Programming, TDD and other impractical things
Pair Programming, TDD and other impractical thingsPair Programming, TDD and other impractical things
Pair Programming, TDD and other impractical things
 
Why Game Developers Should Care About HTML5
Why Game Developers Should Care About HTML5Why Game Developers Should Care About HTML5
Why Game Developers Should Care About HTML5
 
Category theory for beginners
Category theory for beginnersCategory theory for beginners
Category theory for beginners
 
Civil Engineering – Oldest Yet A Highly Sought After Career Choice in India
Civil Engineering – Oldest Yet A Highly Sought After Career Choice in IndiaCivil Engineering – Oldest Yet A Highly Sought After Career Choice in India
Civil Engineering – Oldest Yet A Highly Sought After Career Choice in India
 
[Infographic] How will Internet of Things (IoT) change the world as we know it?
[Infographic] How will Internet of Things (IoT) change the world as we know it?[Infographic] How will Internet of Things (IoT) change the world as we know it?
[Infographic] How will Internet of Things (IoT) change the world as we know it?
 
Empathy from Agility
Empathy from AgilityEmpathy from Agility
Empathy from Agility
 
Introducing Eager Design
Introducing Eager DesignIntroducing Eager Design
Introducing Eager Design
 
Experience Agile Programming - Kiev
Experience Agile Programming - KievExperience Agile Programming - Kiev
Experience Agile Programming - Kiev
 
BDD with Behat and PHPSpec
BDD with Behat and PHPSpecBDD with Behat and PHPSpec
BDD with Behat and PHPSpec
 
THE CONTRIBUTOR’S IDENTITY ppt
THE CONTRIBUTOR’S  IDENTITY pptTHE CONTRIBUTOR’S  IDENTITY ppt
THE CONTRIBUTOR’S IDENTITY ppt
 
Feeding the sharks
Feeding the sharksFeeding the sharks
Feeding the sharks
 
Deliberate practice
Deliberate practiceDeliberate practice
Deliberate practice
 
5 Ways to Boost Workplace Productivity
5 Ways to Boost Workplace Productivity5 Ways to Boost Workplace Productivity
5 Ways to Boost Workplace Productivity
 
PHPSpec & Behat: Two Testing Tools That Write Code For You (#phptek edition)
PHPSpec & Behat: Two Testing Tools That Write Code For You (#phptek edition)PHPSpec & Behat: Two Testing Tools That Write Code For You (#phptek edition)
PHPSpec & Behat: Two Testing Tools That Write Code For You (#phptek edition)
 
The Brain Behind Your Brand: How to Design Your Way to Success
The Brain Behind Your Brand: How to Design Your Way to SuccessThe Brain Behind Your Brand: How to Design Your Way to Success
The Brain Behind Your Brand: How to Design Your Way to Success
 
California bearingratio test
California bearingratio testCalifornia bearingratio test
California bearingratio test
 
Designing Startups
Designing StartupsDesigning Startups
Designing Startups
 
Understanding Craftsmanship SwanseaCon2015
Understanding Craftsmanship SwanseaCon2015Understanding Craftsmanship SwanseaCon2015
Understanding Craftsmanship SwanseaCon2015
 
DPM Summit 2015 - Next-Level Collaboration: Facilitating Web Content Working ...
DPM Summit 2015 - Next-Level Collaboration: Facilitating Web Content Working ...DPM Summit 2015 - Next-Level Collaboration: Facilitating Web Content Working ...
DPM Summit 2015 - Next-Level Collaboration: Facilitating Web Content Working ...
 
Top 10 things a fresh programmer should know - Dao Ngoc Khanh
Top 10 things a fresh programmer should know - Dao Ngoc KhanhTop 10 things a fresh programmer should know - Dao Ngoc Khanh
Top 10 things a fresh programmer should know - Dao Ngoc Khanh
 

Ähnlich wie Barely Enough Design

jQuery & 10,000 Global Functions: Working with Legacy JavaScript
jQuery & 10,000 Global Functions: Working with Legacy JavaScriptjQuery & 10,000 Global Functions: Working with Legacy JavaScript
jQuery & 10,000 Global Functions: Working with Legacy JavaScriptGuy Royse
 
4Developers 2015: Be pragmatic, be SOLID - Krzysztof Menżyk
4Developers 2015: Be pragmatic, be SOLID - Krzysztof Menżyk4Developers 2015: Be pragmatic, be SOLID - Krzysztof Menżyk
4Developers 2015: Be pragmatic, be SOLID - Krzysztof MenżykPROIDEA
 
Be pragmatic, be SOLID (at Boiling Frogs, Wrocław)
Be pragmatic, be SOLID (at Boiling Frogs, Wrocław)Be pragmatic, be SOLID (at Boiling Frogs, Wrocław)
Be pragmatic, be SOLID (at Boiling Frogs, Wrocław)Krzysztof Menżyk
 
Why is crud a bad idea - focus on real scenarios
Why is crud a bad idea - focus on real scenariosWhy is crud a bad idea - focus on real scenarios
Why is crud a bad idea - focus on real scenariosDivante
 
Getting started with TDD - Confoo 2014
Getting started with TDD - Confoo 2014Getting started with TDD - Confoo 2014
Getting started with TDD - Confoo 2014Eric Hogue
 
Ditching JQuery
Ditching JQueryDitching JQuery
Ditching JQueryhowlowck
 
Things to consider for testable Code
Things to consider for testable CodeThings to consider for testable Code
Things to consider for testable CodeFrank Kleine
 
Oleksandr Tolstykh
Oleksandr TolstykhOleksandr Tolstykh
Oleksandr TolstykhCodeFest
 
Architecting Single Activity Applications (With or Without Fragments)
Architecting Single Activity Applications (With or Without Fragments)Architecting Single Activity Applications (With or Without Fragments)
Architecting Single Activity Applications (With or Without Fragments)Gabor Varadi
 
S.O.L.I.D. Principles
S.O.L.I.D. PrinciplesS.O.L.I.D. Principles
S.O.L.I.D. PrinciplesJad Salhani
 
Is writing performant code too expensive?
Is writing performant code too expensive? Is writing performant code too expensive?
Is writing performant code too expensive? Tomasz Kowalczewski
 
From Legacy to Hexagonal (An Unexpected Android Journey)
From Legacy to Hexagonal (An Unexpected Android Journey)From Legacy to Hexagonal (An Unexpected Android Journey)
From Legacy to Hexagonal (An Unexpected Android Journey)Jose Manuel Pereira Garcia
 
Realm - Phoenix Mobile Festival
Realm - Phoenix Mobile FestivalRealm - Phoenix Mobile Festival
Realm - Phoenix Mobile FestivalDJ Rausch
 
Bubbles & Trees with jQuery
Bubbles & Trees with jQueryBubbles & Trees with jQuery
Bubbles & Trees with jQueryBastian Feder
 
WordPress Realtime - WordCamp São Paulo 2015
WordPress Realtime - WordCamp São Paulo 2015WordPress Realtime - WordCamp São Paulo 2015
WordPress Realtime - WordCamp São Paulo 2015Fernando Daciuk
 
Doctrine For Beginners
Doctrine For BeginnersDoctrine For Beginners
Doctrine For BeginnersJonathan Wage
 
iOS 개발자의 Flutter 체험기
iOS 개발자의 Flutter 체험기iOS 개발자의 Flutter 체험기
iOS 개발자의 Flutter 체험기Wanbok Choi
 

Ähnlich wie Barely Enough Design (20)

jQuery & 10,000 Global Functions: Working with Legacy JavaScript
jQuery & 10,000 Global Functions: Working with Legacy JavaScriptjQuery & 10,000 Global Functions: Working with Legacy JavaScript
jQuery & 10,000 Global Functions: Working with Legacy JavaScript
 
Be pragmatic, be SOLID
Be pragmatic, be SOLIDBe pragmatic, be SOLID
Be pragmatic, be SOLID
 
4Developers 2015: Be pragmatic, be SOLID - Krzysztof Menżyk
4Developers 2015: Be pragmatic, be SOLID - Krzysztof Menżyk4Developers 2015: Be pragmatic, be SOLID - Krzysztof Menżyk
4Developers 2015: Be pragmatic, be SOLID - Krzysztof Menżyk
 
Be pragmatic, be SOLID (at Boiling Frogs, Wrocław)
Be pragmatic, be SOLID (at Boiling Frogs, Wrocław)Be pragmatic, be SOLID (at Boiling Frogs, Wrocław)
Be pragmatic, be SOLID (at Boiling Frogs, Wrocław)
 
Why is crud a bad idea - focus on real scenarios
Why is crud a bad idea - focus on real scenariosWhy is crud a bad idea - focus on real scenarios
Why is crud a bad idea - focus on real scenarios
 
Introduction to Domain-Driven Design
Introduction to Domain-Driven DesignIntroduction to Domain-Driven Design
Introduction to Domain-Driven Design
 
Vaadin 7
Vaadin 7Vaadin 7
Vaadin 7
 
Getting started with TDD - Confoo 2014
Getting started with TDD - Confoo 2014Getting started with TDD - Confoo 2014
Getting started with TDD - Confoo 2014
 
Ditching JQuery
Ditching JQueryDitching JQuery
Ditching JQuery
 
Things to consider for testable Code
Things to consider for testable CodeThings to consider for testable Code
Things to consider for testable Code
 
Oleksandr Tolstykh
Oleksandr TolstykhOleksandr Tolstykh
Oleksandr Tolstykh
 
Architecting Single Activity Applications (With or Without Fragments)
Architecting Single Activity Applications (With or Without Fragments)Architecting Single Activity Applications (With or Without Fragments)
Architecting Single Activity Applications (With or Without Fragments)
 
S.O.L.I.D. Principles
S.O.L.I.D. PrinciplesS.O.L.I.D. Principles
S.O.L.I.D. Principles
 
Is writing performant code too expensive?
Is writing performant code too expensive? Is writing performant code too expensive?
Is writing performant code too expensive?
 
From Legacy to Hexagonal (An Unexpected Android Journey)
From Legacy to Hexagonal (An Unexpected Android Journey)From Legacy to Hexagonal (An Unexpected Android Journey)
From Legacy to Hexagonal (An Unexpected Android Journey)
 
Realm - Phoenix Mobile Festival
Realm - Phoenix Mobile FestivalRealm - Phoenix Mobile Festival
Realm - Phoenix Mobile Festival
 
Bubbles & Trees with jQuery
Bubbles & Trees with jQueryBubbles & Trees with jQuery
Bubbles & Trees with jQuery
 
WordPress Realtime - WordCamp São Paulo 2015
WordPress Realtime - WordCamp São Paulo 2015WordPress Realtime - WordCamp São Paulo 2015
WordPress Realtime - WordCamp São Paulo 2015
 
Doctrine For Beginners
Doctrine For BeginnersDoctrine For Beginners
Doctrine For Beginners
 
iOS 개발자의 Flutter 체험기
iOS 개발자의 Flutter 체험기iOS 개발자의 Flutter 체험기
iOS 개발자의 Flutter 체험기
 

Mehr von Marcello Duarte

Functional Structures in PHP
Functional Structures in PHPFunctional Structures in PHP
Functional Structures in PHPMarcello Duarte
 
Understanding craftsmanship
Understanding craftsmanshipUnderstanding craftsmanship
Understanding craftsmanshipMarcello Duarte
 
The framework as an implementation detail
The framework as an implementation detailThe framework as an implementation detail
The framework as an implementation detailMarcello Duarte
 
PhpSpec 2.0 ilustrated by examples
PhpSpec 2.0 ilustrated by examplesPhpSpec 2.0 ilustrated by examples
PhpSpec 2.0 ilustrated by examplesMarcello Duarte
 
Emergent design with phpspec
Emergent design with phpspecEmergent design with phpspec
Emergent design with phpspecMarcello Duarte
 
BDD For Zend Framework With PHPSpec
BDD For Zend Framework With PHPSpecBDD For Zend Framework With PHPSpec
BDD For Zend Framework With PHPSpecMarcello Duarte
 

Mehr von Marcello Duarte (11)

Functional Structures in PHP
Functional Structures in PHPFunctional Structures in PHP
Functional Structures in PHP
 
Transitioning to Agile
Transitioning to AgileTransitioning to Agile
Transitioning to Agile
 
Understanding craftsmanship
Understanding craftsmanshipUnderstanding craftsmanship
Understanding craftsmanship
 
Hexagonal symfony
Hexagonal symfonyHexagonal symfony
Hexagonal symfony
 
The framework as an implementation detail
The framework as an implementation detailThe framework as an implementation detail
The framework as an implementation detail
 
PhpSpec 2.0 ilustrated by examples
PhpSpec 2.0 ilustrated by examplesPhpSpec 2.0 ilustrated by examples
PhpSpec 2.0 ilustrated by examples
 
Emergent design with phpspec
Emergent design with phpspecEmergent design with phpspec
Emergent design with phpspec
 
Mocking Demystified
Mocking DemystifiedMocking Demystified
Mocking Demystified
 
BDD For Zend Framework With PHPSpec
BDD For Zend Framework With PHPSpecBDD For Zend Framework With PHPSpec
BDD For Zend Framework With PHPSpec
 
PHPSpec BDD for PHP
PHPSpec BDD for PHPPHPSpec BDD for PHP
PHPSpec BDD for PHP
 
PHPSpec BDD Framework
PHPSpec BDD FrameworkPHPSpec BDD Framework
PHPSpec BDD Framework
 

Kürzlich hochgeladen

原版1:1定制堪培拉大学毕业证(UC毕业证)#文凭成绩单#真实留信学历认证永久存档
原版1:1定制堪培拉大学毕业证(UC毕业证)#文凭成绩单#真实留信学历认证永久存档原版1:1定制堪培拉大学毕业证(UC毕业证)#文凭成绩单#真实留信学历认证永久存档
原版1:1定制堪培拉大学毕业证(UC毕业证)#文凭成绩单#真实留信学历认证永久存档208367051
 
How to Empower the future of UX Design with Gen AI
How to Empower the future of UX Design with Gen AIHow to Empower the future of UX Design with Gen AI
How to Empower the future of UX Design with Gen AIyuj
 
DAKSHIN BIHAR GRAMIN BANK: REDEFINING THE DIGITAL BANKING EXPERIENCE WITH A U...
DAKSHIN BIHAR GRAMIN BANK: REDEFINING THE DIGITAL BANKING EXPERIENCE WITH A U...DAKSHIN BIHAR GRAMIN BANK: REDEFINING THE DIGITAL BANKING EXPERIENCE WITH A U...
DAKSHIN BIHAR GRAMIN BANK: REDEFINING THE DIGITAL BANKING EXPERIENCE WITH A U...Rishabh Aryan
 
Business research proposal mcdo.pptxBusiness research proposal mcdo.pptxBusin...
Business research proposal mcdo.pptxBusiness research proposal mcdo.pptxBusin...Business research proposal mcdo.pptxBusiness research proposal mcdo.pptxBusin...
Business research proposal mcdo.pptxBusiness research proposal mcdo.pptxBusin...mrchrns005
 
1比1办理美国北卡罗莱纳州立大学毕业证成绩单pdf电子版制作修改
1比1办理美国北卡罗莱纳州立大学毕业证成绩单pdf电子版制作修改1比1办理美国北卡罗莱纳州立大学毕业证成绩单pdf电子版制作修改
1比1办理美国北卡罗莱纳州立大学毕业证成绩单pdf电子版制作修改yuu sss
 
办理卡尔顿大学毕业证成绩单|购买加拿大文凭证书
办理卡尔顿大学毕业证成绩单|购买加拿大文凭证书办理卡尔顿大学毕业证成绩单|购买加拿大文凭证书
办理卡尔顿大学毕业证成绩单|购买加拿大文凭证书zdzoqco
 
Call Us ✡️97111⇛47426⇛Call In girls Vasant Vihar༒(Delhi)
Call Us ✡️97111⇛47426⇛Call In girls Vasant Vihar༒(Delhi)Call Us ✡️97111⇛47426⇛Call In girls Vasant Vihar༒(Delhi)
Call Us ✡️97111⇛47426⇛Call In girls Vasant Vihar༒(Delhi)jennyeacort
 
MT. Marseille an Archipelago. Strategies for Integrating Residential Communit...
MT. Marseille an Archipelago. Strategies for Integrating Residential Communit...MT. Marseille an Archipelago. Strategies for Integrating Residential Communit...
MT. Marseille an Archipelago. Strategies for Integrating Residential Communit...katerynaivanenko1
 
办理学位证(TheAuckland证书)新西兰奥克兰大学毕业证成绩单原版一比一
办理学位证(TheAuckland证书)新西兰奥克兰大学毕业证成绩单原版一比一办理学位证(TheAuckland证书)新西兰奥克兰大学毕业证成绩单原版一比一
办理学位证(TheAuckland证书)新西兰奥克兰大学毕业证成绩单原版一比一Fi L
 
Pharmaceutical Packaging for the elderly.pdf
Pharmaceutical Packaging for the elderly.pdfPharmaceutical Packaging for the elderly.pdf
Pharmaceutical Packaging for the elderly.pdfAayushChavan5
 
ARt app | UX Case Study
ARt app | UX Case StudyARt app | UX Case Study
ARt app | UX Case StudySophia Viganò
 
韩国SKKU学位证,成均馆大学毕业证书1:1制作
韩国SKKU学位证,成均馆大学毕业证书1:1制作韩国SKKU学位证,成均馆大学毕业证书1:1制作
韩国SKKU学位证,成均馆大学毕业证书1:1制作7tz4rjpd
 
FiveHypotheses_UIDMasterclass_18April2024.pdf
FiveHypotheses_UIDMasterclass_18April2024.pdfFiveHypotheses_UIDMasterclass_18April2024.pdf
FiveHypotheses_UIDMasterclass_18April2024.pdfShivakumar Viswanathan
 
Untitled presedddddddddddddddddntation (1).pptx
Untitled presedddddddddddddddddntation (1).pptxUntitled presedddddddddddddddddntation (1).pptx
Untitled presedddddddddddddddddntation (1).pptxmapanig881
 
group_15_empirya_p1projectIndustrial.pdf
group_15_empirya_p1projectIndustrial.pdfgroup_15_empirya_p1projectIndustrial.pdf
group_15_empirya_p1projectIndustrial.pdfneelspinoy
 
昆士兰大学毕业证(UQ毕业证)#文凭成绩单#真实留信学历认证永久存档
昆士兰大学毕业证(UQ毕业证)#文凭成绩单#真实留信学历认证永久存档昆士兰大学毕业证(UQ毕业证)#文凭成绩单#真实留信学历认证永久存档
昆士兰大学毕业证(UQ毕业证)#文凭成绩单#真实留信学历认证永久存档208367051
 
毕业文凭制作#回国入职#diploma#degree澳洲弗林德斯大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree
毕业文凭制作#回国入职#diploma#degree澳洲弗林德斯大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree 毕业文凭制作#回国入职#diploma#degree澳洲弗林德斯大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree
毕业文凭制作#回国入职#diploma#degree澳洲弗林德斯大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree ttt fff
 
306MTAMount UCLA University Bachelor's Diploma in Social Media
306MTAMount UCLA University Bachelor's Diploma in Social Media306MTAMount UCLA University Bachelor's Diploma in Social Media
306MTAMount UCLA University Bachelor's Diploma in Social MediaD SSS
 
专业一比一美国亚利桑那大学毕业证成绩单pdf电子版制作修改#真实工艺展示#真实防伪#diploma#degree
专业一比一美国亚利桑那大学毕业证成绩单pdf电子版制作修改#真实工艺展示#真实防伪#diploma#degree专业一比一美国亚利桑那大学毕业证成绩单pdf电子版制作修改#真实工艺展示#真实防伪#diploma#degree
专业一比一美国亚利桑那大学毕业证成绩单pdf电子版制作修改#真实工艺展示#真实防伪#diploma#degreeyuu sss
 

Kürzlich hochgeladen (20)

原版1:1定制堪培拉大学毕业证(UC毕业证)#文凭成绩单#真实留信学历认证永久存档
原版1:1定制堪培拉大学毕业证(UC毕业证)#文凭成绩单#真实留信学历认证永久存档原版1:1定制堪培拉大学毕业证(UC毕业证)#文凭成绩单#真实留信学历认证永久存档
原版1:1定制堪培拉大学毕业证(UC毕业证)#文凭成绩单#真实留信学历认证永久存档
 
How to Empower the future of UX Design with Gen AI
How to Empower the future of UX Design with Gen AIHow to Empower the future of UX Design with Gen AI
How to Empower the future of UX Design with Gen AI
 
DAKSHIN BIHAR GRAMIN BANK: REDEFINING THE DIGITAL BANKING EXPERIENCE WITH A U...
DAKSHIN BIHAR GRAMIN BANK: REDEFINING THE DIGITAL BANKING EXPERIENCE WITH A U...DAKSHIN BIHAR GRAMIN BANK: REDEFINING THE DIGITAL BANKING EXPERIENCE WITH A U...
DAKSHIN BIHAR GRAMIN BANK: REDEFINING THE DIGITAL BANKING EXPERIENCE WITH A U...
 
Business research proposal mcdo.pptxBusiness research proposal mcdo.pptxBusin...
Business research proposal mcdo.pptxBusiness research proposal mcdo.pptxBusin...Business research proposal mcdo.pptxBusiness research proposal mcdo.pptxBusin...
Business research proposal mcdo.pptxBusiness research proposal mcdo.pptxBusin...
 
1比1办理美国北卡罗莱纳州立大学毕业证成绩单pdf电子版制作修改
1比1办理美国北卡罗莱纳州立大学毕业证成绩单pdf电子版制作修改1比1办理美国北卡罗莱纳州立大学毕业证成绩单pdf电子版制作修改
1比1办理美国北卡罗莱纳州立大学毕业证成绩单pdf电子版制作修改
 
办理卡尔顿大学毕业证成绩单|购买加拿大文凭证书
办理卡尔顿大学毕业证成绩单|购买加拿大文凭证书办理卡尔顿大学毕业证成绩单|购买加拿大文凭证书
办理卡尔顿大学毕业证成绩单|购买加拿大文凭证书
 
Call Us ✡️97111⇛47426⇛Call In girls Vasant Vihar༒(Delhi)
Call Us ✡️97111⇛47426⇛Call In girls Vasant Vihar༒(Delhi)Call Us ✡️97111⇛47426⇛Call In girls Vasant Vihar༒(Delhi)
Call Us ✡️97111⇛47426⇛Call In girls Vasant Vihar༒(Delhi)
 
MT. Marseille an Archipelago. Strategies for Integrating Residential Communit...
MT. Marseille an Archipelago. Strategies for Integrating Residential Communit...MT. Marseille an Archipelago. Strategies for Integrating Residential Communit...
MT. Marseille an Archipelago. Strategies for Integrating Residential Communit...
 
办理学位证(TheAuckland证书)新西兰奥克兰大学毕业证成绩单原版一比一
办理学位证(TheAuckland证书)新西兰奥克兰大学毕业证成绩单原版一比一办理学位证(TheAuckland证书)新西兰奥克兰大学毕业证成绩单原版一比一
办理学位证(TheAuckland证书)新西兰奥克兰大学毕业证成绩单原版一比一
 
Pharmaceutical Packaging for the elderly.pdf
Pharmaceutical Packaging for the elderly.pdfPharmaceutical Packaging for the elderly.pdf
Pharmaceutical Packaging for the elderly.pdf
 
ARt app | UX Case Study
ARt app | UX Case StudyARt app | UX Case Study
ARt app | UX Case Study
 
韩国SKKU学位证,成均馆大学毕业证书1:1制作
韩国SKKU学位证,成均馆大学毕业证书1:1制作韩国SKKU学位证,成均馆大学毕业证书1:1制作
韩国SKKU学位证,成均馆大学毕业证书1:1制作
 
Call Girls in Pratap Nagar, 9953056974 Escort Service
Call Girls in Pratap Nagar,  9953056974 Escort ServiceCall Girls in Pratap Nagar,  9953056974 Escort Service
Call Girls in Pratap Nagar, 9953056974 Escort Service
 
FiveHypotheses_UIDMasterclass_18April2024.pdf
FiveHypotheses_UIDMasterclass_18April2024.pdfFiveHypotheses_UIDMasterclass_18April2024.pdf
FiveHypotheses_UIDMasterclass_18April2024.pdf
 
Untitled presedddddddddddddddddntation (1).pptx
Untitled presedddddddddddddddddntation (1).pptxUntitled presedddddddddddddddddntation (1).pptx
Untitled presedddddddddddddddddntation (1).pptx
 
group_15_empirya_p1projectIndustrial.pdf
group_15_empirya_p1projectIndustrial.pdfgroup_15_empirya_p1projectIndustrial.pdf
group_15_empirya_p1projectIndustrial.pdf
 
昆士兰大学毕业证(UQ毕业证)#文凭成绩单#真实留信学历认证永久存档
昆士兰大学毕业证(UQ毕业证)#文凭成绩单#真实留信学历认证永久存档昆士兰大学毕业证(UQ毕业证)#文凭成绩单#真实留信学历认证永久存档
昆士兰大学毕业证(UQ毕业证)#文凭成绩单#真实留信学历认证永久存档
 
毕业文凭制作#回国入职#diploma#degree澳洲弗林德斯大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree
毕业文凭制作#回国入职#diploma#degree澳洲弗林德斯大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree 毕业文凭制作#回国入职#diploma#degree澳洲弗林德斯大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree
毕业文凭制作#回国入职#diploma#degree澳洲弗林德斯大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree
 
306MTAMount UCLA University Bachelor's Diploma in Social Media
306MTAMount UCLA University Bachelor's Diploma in Social Media306MTAMount UCLA University Bachelor's Diploma in Social Media
306MTAMount UCLA University Bachelor's Diploma in Social Media
 
专业一比一美国亚利桑那大学毕业证成绩单pdf电子版制作修改#真实工艺展示#真实防伪#diploma#degree
专业一比一美国亚利桑那大学毕业证成绩单pdf电子版制作修改#真实工艺展示#真实防伪#diploma#degree专业一比一美国亚利桑那大学毕业证成绩单pdf电子版制作修改#真实工艺展示#真实防伪#diploma#degree
专业一比一美国亚利桑那大学毕业证成绩单pdf电子版制作修改#真实工艺展示#真实防伪#diploma#degree
 

Barely Enough Design