SlideShare una empresa de Scribd logo
1 de 64
Descargar para leer sin conexión
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

Más contenido relacionado

La actualidad más candente

Nail art polish secures
Nail art polish securesNail art polish secures
Nail art polish secures
hpinn
 

La actualidad más candente (18)

From Metastudies_to_Metaverse: Disrupting the University
From Metastudies_to_Metaverse: Disrupting the University From Metastudies_to_Metaverse: Disrupting the University
From Metastudies_to_Metaverse: Disrupting the University
 
Detection of cyber-bullying
Detection of cyber-bullying Detection of cyber-bullying
Detection of cyber-bullying
 
Future Fast Forward
Future Fast ForwardFuture Fast Forward
Future Fast Forward
 
Immersive Learning
Immersive Learning Immersive Learning
Immersive Learning
 
WEBMINING_SOWMYAJYOTHI.pdf
WEBMINING_SOWMYAJYOTHI.pdfWEBMINING_SOWMYAJYOTHI.pdf
WEBMINING_SOWMYAJYOTHI.pdf
 
DevOpsDays Taipei 2019 - 新創導入資安?從 DevSecOps 開始
DevOpsDays Taipei 2019 - 新創導入資安?從 DevSecOps 開始DevOpsDays Taipei 2019 - 新創導入資安?從 DevSecOps 開始
DevOpsDays Taipei 2019 - 新創導入資安?從 DevSecOps 開始
 
Fraud Detection and Neo4j
Fraud Detection and Neo4j Fraud Detection and Neo4j
Fraud Detection and Neo4j
 
Data Driven Assessment.pdf
Data Driven Assessment.pdfData Driven Assessment.pdf
Data Driven Assessment.pdf
 
Nail art polish secures
Nail art polish securesNail art polish secures
Nail art polish secures
 
Web 3.0 explained with a stamp (pt I: the basics)
Web 3.0 explained with a stamp (pt I: the basics)Web 3.0 explained with a stamp (pt I: the basics)
Web 3.0 explained with a stamp (pt I: the basics)
 
Fingerprint scanner
Fingerprint scannerFingerprint scanner
Fingerprint scanner
 
Web 3.0 Metaverse
Web 3.0 MetaverseWeb 3.0 Metaverse
Web 3.0 Metaverse
 
Metaverse Fashion Trends report by Roblox and Parsons
Metaverse Fashion Trends report by Roblox and ParsonsMetaverse Fashion Trends report by Roblox and Parsons
Metaverse Fashion Trends report by Roblox and Parsons
 
Metaverse .pdf
Metaverse .pdfMetaverse .pdf
Metaverse .pdf
 
Booz Allen Field Guide to Data Science
Booz Allen Field Guide to Data Science Booz Allen Field Guide to Data Science
Booz Allen Field Guide to Data Science
 
Criando microsserviços em PHP
Criando microsserviços em PHPCriando microsserviços em PHP
Criando microsserviços em PHP
 
Human–Robot Interaction: Status and Challenges. Sheridan MIT
Human–Robot Interaction: Status and Challenges. Sheridan MITHuman–Robot Interaction: Status and Challenges. Sheridan MIT
Human–Robot Interaction: Status and Challenges. Sheridan MIT
 
Counterfeit Currency Detection
Counterfeit Currency DetectionCounterfeit Currency Detection
Counterfeit Currency Detection
 

Destacado

Destacado (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
 

Similar a Barely Enough Design

Similar a 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
 
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
Be pragmatic, be SOLIDBe pragmatic, be SOLID
Be pragmatic, be SOLID
 
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 체험기
 

Más de Marcello Duarte

Más de 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
 

Último

Nisha Yadav Escorts Service Ernakulam ❣️ 7014168258 ❣️ High Cost Unlimited Ha...
Nisha Yadav Escorts Service Ernakulam ❣️ 7014168258 ❣️ High Cost Unlimited Ha...Nisha Yadav Escorts Service Ernakulam ❣️ 7014168258 ❣️ High Cost Unlimited Ha...
Nisha Yadav Escorts Service Ernakulam ❣️ 7014168258 ❣️ High Cost Unlimited Ha...
nirzagarg
 
Just Call Vip call girls dharamshala Escorts ☎️9352988975 Two shot with one g...
Just Call Vip call girls dharamshala Escorts ☎️9352988975 Two shot with one g...Just Call Vip call girls dharamshala Escorts ☎️9352988975 Two shot with one g...
Just Call Vip call girls dharamshala Escorts ☎️9352988975 Two shot with one g...
gajnagarg
 
RT Nagar Call Girls Service: 🍓 7737669865 🍓 High Profile Model Escorts | Bang...
RT Nagar Call Girls Service: 🍓 7737669865 🍓 High Profile Model Escorts | Bang...RT Nagar Call Girls Service: 🍓 7737669865 🍓 High Profile Model Escorts | Bang...
RT Nagar Call Girls Service: 🍓 7737669865 🍓 High Profile Model Escorts | Bang...
amitlee9823
 
👉 Call Girls Service Amritsar 👉📞 6367187148 👉📞 Just📲 Call Ruhi Call Girl Agen...
👉 Call Girls Service Amritsar 👉📞 6367187148 👉📞 Just📲 Call Ruhi Call Girl Agen...👉 Call Girls Service Amritsar 👉📞 6367187148 👉📞 Just📲 Call Ruhi Call Girl Agen...
👉 Call Girls Service Amritsar 👉📞 6367187148 👉📞 Just📲 Call Ruhi Call Girl Agen...
karishmasinghjnh
 
Abortion Pills in Oman (+918133066128) Cytotec clinic buy Oman Muscat
Abortion Pills in Oman (+918133066128) Cytotec clinic buy Oman MuscatAbortion Pills in Oman (+918133066128) Cytotec clinic buy Oman Muscat
Abortion Pills in Oman (+918133066128) Cytotec clinic buy Oman Muscat
Abortion pills in Kuwait Cytotec pills in Kuwait
 
Escorts Service Nagavara ☎ 7737669865☎ Book Your One night Stand (Bangalore)
Escorts Service Nagavara ☎ 7737669865☎ Book Your One night Stand (Bangalore)Escorts Service Nagavara ☎ 7737669865☎ Book Your One night Stand (Bangalore)
Escorts Service Nagavara ☎ 7737669865☎ Book Your One night Stand (Bangalore)
amitlee9823
 
Call Girls Basavanagudi Just Call 👗 7737669865 👗 Top Class Call Girl Service ...
Call Girls Basavanagudi Just Call 👗 7737669865 👗 Top Class Call Girl Service ...Call Girls Basavanagudi Just Call 👗 7737669865 👗 Top Class Call Girl Service ...
Call Girls Basavanagudi Just Call 👗 7737669865 👗 Top Class Call Girl Service ...
amitlee9823
 
Peaches App development presentation deck
Peaches App development presentation deckPeaches App development presentation deck
Peaches App development presentation deck
tbatkhuu1
 
➥🔝 7737669865 🔝▻ Bokaro Call-girls in Women Seeking Men 🔝Bokaro🔝 Escorts S...
➥🔝 7737669865 🔝▻ Bokaro Call-girls in Women Seeking Men  🔝Bokaro🔝   Escorts S...➥🔝 7737669865 🔝▻ Bokaro Call-girls in Women Seeking Men  🔝Bokaro🔝   Escorts S...
➥🔝 7737669865 🔝▻ Bokaro Call-girls in Women Seeking Men 🔝Bokaro🔝 Escorts S...
amitlee9823
 
怎样办理伯明翰大学学院毕业证(Birmingham毕业证书)成绩单留信认证
怎样办理伯明翰大学学院毕业证(Birmingham毕业证书)成绩单留信认证怎样办理伯明翰大学学院毕业证(Birmingham毕业证书)成绩单留信认证
怎样办理伯明翰大学学院毕业证(Birmingham毕业证书)成绩单留信认证
eeanqy
 

Último (20)

Nisha Yadav Escorts Service Ernakulam ❣️ 7014168258 ❣️ High Cost Unlimited Ha...
Nisha Yadav Escorts Service Ernakulam ❣️ 7014168258 ❣️ High Cost Unlimited Ha...Nisha Yadav Escorts Service Ernakulam ❣️ 7014168258 ❣️ High Cost Unlimited Ha...
Nisha Yadav Escorts Service Ernakulam ❣️ 7014168258 ❣️ High Cost Unlimited Ha...
 
Top Rated Pune Call Girls Saswad ⟟ 6297143586 ⟟ Call Me For Genuine Sex Serv...
Top Rated  Pune Call Girls Saswad ⟟ 6297143586 ⟟ Call Me For Genuine Sex Serv...Top Rated  Pune Call Girls Saswad ⟟ 6297143586 ⟟ Call Me For Genuine Sex Serv...
Top Rated Pune Call Girls Saswad ⟟ 6297143586 ⟟ Call Me For Genuine Sex Serv...
 
Sector 104, Noida Call girls :8448380779 Model Escorts | 100% verified
Sector 104, Noida Call girls :8448380779 Model Escorts | 100% verifiedSector 104, Noida Call girls :8448380779 Model Escorts | 100% verified
Sector 104, Noida Call girls :8448380779 Model Escorts | 100% verified
 
Just Call Vip call girls dharamshala Escorts ☎️9352988975 Two shot with one g...
Just Call Vip call girls dharamshala Escorts ☎️9352988975 Two shot with one g...Just Call Vip call girls dharamshala Escorts ☎️9352988975 Two shot with one g...
Just Call Vip call girls dharamshala Escorts ☎️9352988975 Two shot with one g...
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Pooja 9892124323, Call girls Services and Mumbai Escort Service Near Hotel Gi...
Pooja 9892124323, Call girls Services and Mumbai Escort Service Near Hotel Gi...Pooja 9892124323, Call girls Services and Mumbai Escort Service Near Hotel Gi...
Pooja 9892124323, Call girls Services and Mumbai Escort Service Near Hotel Gi...
 
Hingoli ❤CALL GIRL 8617370543 ❤CALL GIRLS IN Hingoli ESCORT SERVICE❤CALL GIRL
Hingoli ❤CALL GIRL 8617370543 ❤CALL GIRLS IN Hingoli ESCORT SERVICE❤CALL GIRLHingoli ❤CALL GIRL 8617370543 ❤CALL GIRLS IN Hingoli ESCORT SERVICE❤CALL GIRL
Hingoli ❤CALL GIRL 8617370543 ❤CALL GIRLS IN Hingoli ESCORT SERVICE❤CALL GIRL
 
RT Nagar Call Girls Service: 🍓 7737669865 🍓 High Profile Model Escorts | Bang...
RT Nagar Call Girls Service: 🍓 7737669865 🍓 High Profile Model Escorts | Bang...RT Nagar Call Girls Service: 🍓 7737669865 🍓 High Profile Model Escorts | Bang...
RT Nagar Call Girls Service: 🍓 7737669865 🍓 High Profile Model Escorts | Bang...
 
👉 Call Girls Service Amritsar 👉📞 6367187148 👉📞 Just📲 Call Ruhi Call Girl Agen...
👉 Call Girls Service Amritsar 👉📞 6367187148 👉📞 Just📲 Call Ruhi Call Girl Agen...👉 Call Girls Service Amritsar 👉📞 6367187148 👉📞 Just📲 Call Ruhi Call Girl Agen...
👉 Call Girls Service Amritsar 👉📞 6367187148 👉📞 Just📲 Call Ruhi Call Girl Agen...
 
Abortion Pills in Oman (+918133066128) Cytotec clinic buy Oman Muscat
Abortion Pills in Oman (+918133066128) Cytotec clinic buy Oman MuscatAbortion Pills in Oman (+918133066128) Cytotec clinic buy Oman Muscat
Abortion Pills in Oman (+918133066128) Cytotec clinic buy Oman Muscat
 
High Profile Escorts Nerul WhatsApp +91-9930687706, Best Service
High Profile Escorts Nerul WhatsApp +91-9930687706, Best ServiceHigh Profile Escorts Nerul WhatsApp +91-9930687706, Best Service
High Profile Escorts Nerul WhatsApp +91-9930687706, Best Service
 
Escorts Service Nagavara ☎ 7737669865☎ Book Your One night Stand (Bangalore)
Escorts Service Nagavara ☎ 7737669865☎ Book Your One night Stand (Bangalore)Escorts Service Nagavara ☎ 7737669865☎ Book Your One night Stand (Bangalore)
Escorts Service Nagavara ☎ 7737669865☎ Book Your One night Stand (Bangalore)
 
Call Girls Basavanagudi Just Call 👗 7737669865 👗 Top Class Call Girl Service ...
Call Girls Basavanagudi Just Call 👗 7737669865 👗 Top Class Call Girl Service ...Call Girls Basavanagudi Just Call 👗 7737669865 👗 Top Class Call Girl Service ...
Call Girls Basavanagudi Just Call 👗 7737669865 👗 Top Class Call Girl Service ...
 
VIP Model Call Girls Kalyani Nagar ( Pune ) Call ON 8005736733 Starting From ...
VIP Model Call Girls Kalyani Nagar ( Pune ) Call ON 8005736733 Starting From ...VIP Model Call Girls Kalyani Nagar ( Pune ) Call ON 8005736733 Starting From ...
VIP Model Call Girls Kalyani Nagar ( Pune ) Call ON 8005736733 Starting From ...
 
WhatsApp Chat: 📞 8617697112 Call Girl Baran is experienced
WhatsApp Chat: 📞 8617697112 Call Girl Baran is experiencedWhatsApp Chat: 📞 8617697112 Call Girl Baran is experienced
WhatsApp Chat: 📞 8617697112 Call Girl Baran is experienced
 
UI:UX Design and Empowerment Strategies for Underprivileged Transgender Indiv...
UI:UX Design and Empowerment Strategies for Underprivileged Transgender Indiv...UI:UX Design and Empowerment Strategies for Underprivileged Transgender Indiv...
UI:UX Design and Empowerment Strategies for Underprivileged Transgender Indiv...
 
Peaches App development presentation deck
Peaches App development presentation deckPeaches App development presentation deck
Peaches App development presentation deck
 
➥🔝 7737669865 🔝▻ Bokaro Call-girls in Women Seeking Men 🔝Bokaro🔝 Escorts S...
➥🔝 7737669865 🔝▻ Bokaro Call-girls in Women Seeking Men  🔝Bokaro🔝   Escorts S...➥🔝 7737669865 🔝▻ Bokaro Call-girls in Women Seeking Men  🔝Bokaro🔝   Escorts S...
➥🔝 7737669865 🔝▻ Bokaro Call-girls in Women Seeking Men 🔝Bokaro🔝 Escorts S...
 
怎样办理伯明翰大学学院毕业证(Birmingham毕业证书)成绩单留信认证
怎样办理伯明翰大学学院毕业证(Birmingham毕业证书)成绩单留信认证怎样办理伯明翰大学学院毕业证(Birmingham毕业证书)成绩单留信认证
怎样办理伯明翰大学学院毕业证(Birmingham毕业证书)成绩单留信认证
 
8377087607, Door Step Call Girls In Kalkaji (Locanto) 24/7 Available
8377087607, Door Step Call Girls In Kalkaji (Locanto) 24/7 Available8377087607, Door Step Call Girls In Kalkaji (Locanto) 24/7 Available
8377087607, Door Step Call Girls In Kalkaji (Locanto) 24/7 Available
 

Barely Enough Design