SlideShare a Scribd company logo
#codemotion @liuggio
awesome
PHP application
in 2014
really
really
really
really
I’m @liuggio
a programmer<?php
awesome application #codemotion @liuggio
Language design is hard …
the most famous computer scientists
are also language designers.
BUT none of them ever worked on PHP
-- codinghorror
awesome application #codemotion @liuggio
LANGUAGE SUCKS7.380.000 results
Java sucks
6.030.000 results
Ruby sucks
3.400.000
Python sucks
results
awesome application #codemotion @liuggio
Search “{language} SUCKS” on google:
61.526.124
Search “PHP SUCKS” on google:
TIMES
awesome application #codemotion @liuggio
WHY PHP
SUCKS
not real objects
big gap between the
community and the
un-polite core-team inconsistency
lot-ot-underscore
stream_get_line
disk_free_space
is_object
mcal_day_of_week
set_error_handler
snmp_get_quick_print
get_browser
base64_encode
image_type_to_mime_type
msql_num_fields
php_uname
strip_tags
bind_textdomain_codeset
cal_to_jd
str_rot13
no-underscore
readline
diskfreespace
isset
jddayofweek
setlocale
snmpget
getallheaders
urlencode
imagetypes
mysql_numfields
phpversion
stripslashes
bindtextdomain
gregoriantojd
strpos
awesome application #codemotion @liuggio
LOT OF GREAT COMPANIES USES IT
WordpressFacebook
awesome application #codemotion @liuggio
IS NOT THE OLD PLAIN-PHP
THE ECOSYSTEM IS GREAT
GIT COMPOSER SYMFONY2
DDD/TDD/BDD PHP-FIG BEST PRACTICES
awesome application #codemotion @liuggio
The best programming language
will not save you
to write horrible code.
awesome application #codemotion @liuggio
Sufficiently talented coders
can write great applications
in terrible languages
awesome application #codemotion @liuggio
f**king
awesome
application
really
really
really
really
really
@liuggiowelcometothebundle.com
f**king
awesome
application
really
really
really
really
really
Coding is 10% of the job
Communication and
understanding
Read/Study
Coffee and
related .
awesome application #codemotion @liuggio
developer
=
worker with knowledge
awesome application #codemotion @liuggio
- Modular code
- Version Control System (git)
- Eager: conferences/books/code
- Use frameworks
- Contribute famous projects code
- Live in the open-source ecosystem
- Favourite the discussion
- Study design trends (DDD  BDD…?)
- Live in a community, local user group
- Test Driven Development
talented developers
awesome application #codemotion @liuggio
TDD
REFACTOR PASSFAIL
awesome application #codemotion @liuggio
- Modular code
- Version Control System (git)
- Eager: conferences/books/code
- Use frameworks
- Contribute famous projects code
- Live in the open-source ecosystem
- Favourite the discussion
- Study design trends (DDD  BDD…?)
- Live in a community, local user group
- Test Driven Development
TalentedNot talented
Innovation fuel growth
TALENTED CODERS
Have a passion driven mindset
&&
Satisfy business with the best technology
=
awesome application #codemotion @liuggio
awesome application #codemotion @liuggio
After the first iteration with the client:
YOU
BLACK HOLE
After the second iteration with the client:
awesome application #codemotion @liuggio
After the third iteration with the client:
$$ function
awesome application #codemotion @liuggio
Translation problems
Application
presentation
awesome application #codemotion @liuggio
Domain model
REST
adapter
WEB
SCRIPT
A
D
A
PTER-y
U
se
Case
A
Use Case B
interfaces
awesome application #codemotion @liuggio
awesome application #codemotion @liuggio
Application
presentation
Domain model
REST
adapter
WEB
SCRIPT
A
D
A
PTER-y
U
se
Case
A
Use Case B
awesome application #codemotion @liuggio
Describe the
behaviours for each
`verb` and ‘noun’
Create the class
and the public
methods
Write a business
example
Explode the example in
lines
Given/When/Then
Discover and visualize
`verbs`, `nouns` and
behaviours
awesome application #codemotion @liuggio
a new cycle1
2
3
4 5
FAIL
FAIL
FAIL
Describe the
behaviours for each
`verb` and ‘noun’
4
Create the class
and the public
methods
5
PASS
awesome application #codemotion @liuggio
Application
presentation
Domain model
WEB
Class EmitBill
WWW
The best programming language
will not save you
to write horrible code.
awesome application #codemotion @liuggio
BUSINESS
awesome application #codemotion @liuggio
be a passionate developer
awesome application #codemotion @liuggio
Questions?
ps: see the references I didn’t write any books (yet).
awesome application #codemotion @liuggio

More Related Content

What's hot (20)

PDF
Developing for LinkedIn's Application Platform
Taylor Singletary
 
PPTX
Wonders of Golang
Kartik Sura
 
PDF
Buildr - build like you code
Izzet Mustafaiev
 
PDF
Go lang
Suelen Carvalho
 
PDF
WebRTC - Brings Real-Time to the Web
Vũ Nguyễn
 
PDF
GoLang Introduction
Spandana Govindgari
 
PDF
Dependency management in golang
Ramit Surana
 
PDF
Getting started with Go - Florin Patan - Codemotion Rome 2017
Codemotion
 
PDF
Let the contribution begin (EST futures)
SeongJae Park
 
PDF
C++ in our world
Juraj Michálek
 
PPTX
Introduction to GoLang
NVISIA
 
PDF
Droidcon Online 2020 quick summary
Bartosz Kosarzycki
 
PDF
(Live) build and run golang web server on android.avi
SeongJae Park
 
PDF
The Go programming language - Intro by MyLittleAdventure
mylittleadventure
 
PPTX
drone continuous Integration
Bo-Yi Wu
 
PPT
A First Look at Google's Go Programming Language
Ganesh Samarthyam
 
PDF
[INNOVATUBE] Tech Talk #3: Golang - Takaaki Mizuno
Nexus FrontierTech
 
PPTX
Fandogh Cloud workshop slides
ssarabadani
 
PDF
C++ and Software Engineering 2015
Juraj Michálek
 
PDF
Building Command Line Tools with Golang
Takaaki Mizuno
 
Developing for LinkedIn's Application Platform
Taylor Singletary
 
Wonders of Golang
Kartik Sura
 
Buildr - build like you code
Izzet Mustafaiev
 
WebRTC - Brings Real-Time to the Web
Vũ Nguyễn
 
GoLang Introduction
Spandana Govindgari
 
Dependency management in golang
Ramit Surana
 
Getting started with Go - Florin Patan - Codemotion Rome 2017
Codemotion
 
Let the contribution begin (EST futures)
SeongJae Park
 
C++ in our world
Juraj Michálek
 
Introduction to GoLang
NVISIA
 
Droidcon Online 2020 quick summary
Bartosz Kosarzycki
 
(Live) build and run golang web server on android.avi
SeongJae Park
 
The Go programming language - Intro by MyLittleAdventure
mylittleadventure
 
drone continuous Integration
Bo-Yi Wu
 
A First Look at Google's Go Programming Language
Ganesh Samarthyam
 
[INNOVATUBE] Tech Talk #3: Golang - Takaaki Mizuno
Nexus FrontierTech
 
Fandogh Cloud workshop slides
ssarabadani
 
C++ and Software Engineering 2015
Juraj Michálek
 
Building Command Line Tools with Golang
Takaaki Mizuno
 

Similar to really really really awesome php application with bdd behat and iterfaces (20)

PDF
Awesome application in 2014
Codemotion
 
PDF
Rasmus, Think Again! Agile Framework == Happy Php Developer
Arno Schneider
 
PDF
Sacrificing the golden calf of "coding"
Christian Heilmann
 
PDF
Think horizontally ood, ddd and bdd
Giulio De Donato
 
PDF
Think horizontally @Codemotion
Andrea Giuliano
 
PDF
Developing sustainable php projects
Michele Orselli
 
PDF
Automating all the wrong things - You Gotta Love Frontend Keynote
Christian Heilmann
 
PDF
Think horizontally - Giuliano and De Donato
Codemotion
 
PDF
Gustavo Delgado - Qué esperan de tí como desarrollador remoto
9punto5
 
PPTX
Untangling the web11
Derek Jacoby
 
PDF
So You Just Inherited a $Legacy Application...
Joe Ferguson
 
PDF
Killing the golden calf of coding - We are Developers keynote
Christian Heilmann
 
PPTX
Php rules
christopher mabunda
 
PPT
How to get a Job as a Front End Developer
Mike Wilcox
 
PDF
So You Just Inherited a $Legacy Application… NomadPHP July 2016
Joe Ferguson
 
PDF
Tips to Kick-start your Software Engineering Career
Ferdous Mahmud Shaon
 
PPTX
MagmaRails - Passionate Programmer
Edwin Cruz
 
PPTX
Empower individuals with autism through coding
livecode
 
PDF
Sacrificing the golden calf of "coding"
Christian Heilmann
 
PDF
Become a webdeveloper - AKAICamp Beginner #1
Jacek Tomaszewski
 
Awesome application in 2014
Codemotion
 
Rasmus, Think Again! Agile Framework == Happy Php Developer
Arno Schneider
 
Sacrificing the golden calf of "coding"
Christian Heilmann
 
Think horizontally ood, ddd and bdd
Giulio De Donato
 
Think horizontally @Codemotion
Andrea Giuliano
 
Developing sustainable php projects
Michele Orselli
 
Automating all the wrong things - You Gotta Love Frontend Keynote
Christian Heilmann
 
Think horizontally - Giuliano and De Donato
Codemotion
 
Gustavo Delgado - Qué esperan de tí como desarrollador remoto
9punto5
 
Untangling the web11
Derek Jacoby
 
So You Just Inherited a $Legacy Application...
Joe Ferguson
 
Killing the golden calf of coding - We are Developers keynote
Christian Heilmann
 
How to get a Job as a Front End Developer
Mike Wilcox
 
So You Just Inherited a $Legacy Application… NomadPHP July 2016
Joe Ferguson
 
Tips to Kick-start your Software Engineering Career
Ferdous Mahmud Shaon
 
MagmaRails - Passionate Programmer
Edwin Cruz
 
Empower individuals with autism through coding
livecode
 
Sacrificing the golden calf of "coding"
Christian Heilmann
 
Become a webdeveloper - AKAICamp Beginner #1
Jacek Tomaszewski
 
Ad

More from Giulio De Donato (11)

PPTX
Docker italia fatti un container tutto tuo
Giulio De Donato
 
PDF
Lets isolate a process with no container like docker
Giulio De Donato
 
PPTX
More developers on DevOps with Docker orchestration
Giulio De Donato
 
PDF
Import golang; struct microservice
Giulio De Donato
 
PDF
Json web token api authorization
Giulio De Donato
 
PDF
I came i saw i go - golang it meetup codemotion rome 2014
Giulio De Donato
 
PDF
Benchmark Profile and Boost your Symfony application
Giulio De Donato
 
PDF
Leaphly fight monolothic today
Giulio De Donato
 
PDF
Design pattern in Symfony2 - Nanos gigantium humeris insidentes
Giulio De Donato
 
PPT
Caching and data analysis will move your Symfony2 application to the next level
Giulio De Donato
 
PDF
Rationally boost your symfony2 application with caching tips and monitoring
Giulio De Donato
 
Docker italia fatti un container tutto tuo
Giulio De Donato
 
Lets isolate a process with no container like docker
Giulio De Donato
 
More developers on DevOps with Docker orchestration
Giulio De Donato
 
Import golang; struct microservice
Giulio De Donato
 
Json web token api authorization
Giulio De Donato
 
I came i saw i go - golang it meetup codemotion rome 2014
Giulio De Donato
 
Benchmark Profile and Boost your Symfony application
Giulio De Donato
 
Leaphly fight monolothic today
Giulio De Donato
 
Design pattern in Symfony2 - Nanos gigantium humeris insidentes
Giulio De Donato
 
Caching and data analysis will move your Symfony2 application to the next level
Giulio De Donato
 
Rationally boost your symfony2 application with caching tips and monitoring
Giulio De Donato
 
Ad

Recently uploaded (20)

PDF
GetOnCRM Speeds Up Agentforce 3 Deployment for Enterprise AI Wins.pdf
GetOnCRM Solutions
 
PDF
Unlock Efficiency with Insurance Policy Administration Systems
Insurance Tech Services
 
PDF
유니티에서 Burst Compiler+ThreadedJobs+SIMD 적용사례
Seongdae Kim
 
PPTX
Equipment Management Software BIS Safety UK.pptx
BIS Safety Software
 
PDF
Streamline Contractor Lifecycle- TECH EHS Solution
TECH EHS Solution
 
PDF
Understanding the Need for Systemic Change in Open Source Through Intersectio...
Imma Valls Bernaus
 
PDF
Odoo CRM vs Zoho CRM: Honest Comparison 2025
Odiware Technologies Private Limited
 
PPTX
Tally_Basic_Operations_Presentation.pptx
AditiBansal54083
 
PPTX
Feb 2021 Cohesity first pitch presentation.pptx
enginsayin1
 
PPTX
Writing Better Code - Helping Developers make Decisions.pptx
Lorraine Steyn
 
PPTX
The Role of a PHP Development Company in Modern Web Development
SEO Company for School in Delhi NCR
 
PDF
Powering GIS with FME and VertiGIS - Peak of Data & AI 2025
Safe Software
 
PPTX
3uTools Full Crack Free Version Download [Latest] 2025
muhammadgurbazkhan
 
PPT
MergeSortfbsjbjsfk sdfik k
RafishaikIT02044
 
PDF
iTop VPN With Crack Lifetime Activation Key-CODE
utfefguu
 
PPTX
Revolutionizing Code Modernization with AI
KrzysztofKkol1
 
PDF
Salesforce CRM Services.VALiNTRY360
VALiNTRY360
 
PPTX
Engineering the Java Web Application (MVC)
abhishekoza1981
 
PPTX
How Apagen Empowered an EPC Company with Engineering ERP Software
SatishKumar2651
 
PDF
Mobile CMMS Solutions Empowering the Frontline Workforce
CryotosCMMSSoftware
 
GetOnCRM Speeds Up Agentforce 3 Deployment for Enterprise AI Wins.pdf
GetOnCRM Solutions
 
Unlock Efficiency with Insurance Policy Administration Systems
Insurance Tech Services
 
유니티에서 Burst Compiler+ThreadedJobs+SIMD 적용사례
Seongdae Kim
 
Equipment Management Software BIS Safety UK.pptx
BIS Safety Software
 
Streamline Contractor Lifecycle- TECH EHS Solution
TECH EHS Solution
 
Understanding the Need for Systemic Change in Open Source Through Intersectio...
Imma Valls Bernaus
 
Odoo CRM vs Zoho CRM: Honest Comparison 2025
Odiware Technologies Private Limited
 
Tally_Basic_Operations_Presentation.pptx
AditiBansal54083
 
Feb 2021 Cohesity first pitch presentation.pptx
enginsayin1
 
Writing Better Code - Helping Developers make Decisions.pptx
Lorraine Steyn
 
The Role of a PHP Development Company in Modern Web Development
SEO Company for School in Delhi NCR
 
Powering GIS with FME and VertiGIS - Peak of Data & AI 2025
Safe Software
 
3uTools Full Crack Free Version Download [Latest] 2025
muhammadgurbazkhan
 
MergeSortfbsjbjsfk sdfik k
RafishaikIT02044
 
iTop VPN With Crack Lifetime Activation Key-CODE
utfefguu
 
Revolutionizing Code Modernization with AI
KrzysztofKkol1
 
Salesforce CRM Services.VALiNTRY360
VALiNTRY360
 
Engineering the Java Web Application (MVC)
abhishekoza1981
 
How Apagen Empowered an EPC Company with Engineering ERP Software
SatishKumar2651
 
Mobile CMMS Solutions Empowering the Frontline Workforce
CryotosCMMSSoftware
 

really really really awesome php application with bdd behat and iterfaces

Editor's Notes

  • #2: Già il nomed ‘coders’, scrivere codice eh… ma scrivere poi è la parte piu piccola, ci metti 3 mesi per corteggiare il cliente, ci metti i mesi di giorni per capire il cliente, ci metti mesi per far capire al cliente l’Agile, ci metti mese per far capire al cliente cosa veramente ha bisogno, se poi ci aggiungi i giorni di imprecazioni per capire il codice che hai scritto nell’iterazione prima, il tempo per scrivere i test prima di fare codice, pensare a cosa fare… scrivere codice è il 10%, spendi piu tempo Mi piace la definizione che da il libro managment 3.0: I developer sono knowledge workers provvedono a soddisfare il business con un valore che prima non avevano.
  • #3: NON siamo qui per parlare di awesome application ma per parlare di really awesome appl Non ho preparato un talk, perchè mi aspettavo la sala vuota, mi sono detto parlo di awesome application in PHP, nemmeno volevo fare le slide, bene PHP e qualità quanti di voi si sono persi o sono in questa sala per sbaglio? No non parleremo di PHP… Di solito quando si è programmatore PHP si ha un senso di inferiorità, se sei un programmatore PHP pensi che gli altri siano piu bravi di te di solito quando sei un programmatore PHP lo sai… si lo sai.. lo sai che hai di fronte un linguaggio che fa schifo di solito quando mi chiedono in che linguaggio uso, io dico prima una cosa per sembrare intelligente del tipo l’hai letto il libro managment 3.0 sul agile …
  • #4: sono liuggio ho 30 anni e sono un programmatore PHP PHP è un acronimo che voleva dire spaghetti code PHP (acronimo ricorsivo di "PHP: Hypertext Preprocessor") “PHP is the new VB6 in a C dress.” cit Ha sempre avuto tanto successo e tanto odio
  • #5: DIsegnare linguaggi è difficile e non è poi così scontato che i piu grandi scienziati sono anche fautori che hanno partecipato alla creazione di linguaggi ma nessuno di loro ha mai lavorato nel php. Ma lo sapete che su internet ci sono piu siti che fanno blaming sul PHP che quelli che ne descrivo come fare del codice fatto bene? Ci sono piu siti che infamano PHP che siti porno no questo non è vero...
  • #6: E poi tutti che ai accaniscono con tutti i linguaggi
  • #8: Ma è veramente cosi schifoso? Diciamo che ha i suoi difetti
  • #9: facebook, wikipedia wordpress ci hanno fatto un impero yahoo è mezzo in php, non so se siete mai andati a visitare Youporn beh youporn è fatto in PHP con symfony2. Il php è qualcosa di veramente terribile?
  • #10: Il php è usatissimo … il PHP è economico è veloce. Il linguaggio è la sua comunità, in effetti il php è migliorato grazie a Symfonu, buone pratiche disaccoppiamento nelle conferenze gia da alcuni anni si è iniziato a parlare di metodologie TDD /BDD /DDD.
  • #11: Il miglior linguaggio di programmazione non vi salvarà dallo scrivere codice di …. orribile
  • #13: Si ma questa frase ad effetto non ha significato perche: che vuol dire linguaggi terribili che vuol dire great application che vuol dire talented coders? Quindi andiamo capire come essere dei talented coders per scrivere bellissime applicazioni ------------------------------------------- Ecco il titolo. “talented coders can write great applications in terrible languages”
  • #15: Già il nomed ‘coders’, scrivere codice eh… ma scrivere poi è la parte piu piccola, ci metti 3 mesi per corteggiare il cliente, ci metti i mesi di giorni per capire il cliente, ci metti mesi per far capire al cliente l’Agile, ci metti mese per far capire al cliente cosa veramente ha bisogno, se poi ci aggiungi i giorni di imprecazioni per capire il codice che hai scritto nell’iterazione prima, il tempo per scrivere i test prima di fare codice, pensare a cosa fare… scrivere codice è il 10%, spendi piu tempo Mi piace la definizione che da il libro managment 3.0: I developer sono knowledge workers provvedono a soddisfare il business con un valore che prima non avevano.
  • #16: L?innovazione come benzina per la crescita, programmatori ma anche azienda
  • #17: portatore di conoscienza
  • #18: Ma chi sono i talented developers scrivono usando TDD Chi sa cosa è il TDD? Chi di voi programma usando il TDD? Chi di voi vorrebbe ma in azienda non glielo permettono? Chi di voi prende in giro chi sta in una azienda in cui non gli permettono di usare TDD?
  • #19: IL TDD è un processo dello svilupppo, che risiede su ripetizioni brevi, kent beck[1] Beh il TDD è una metodologia che scientificamente ti porta a scrivere codice modulare, di certo non deve essere sottogamba perche è stata un grande rivoluzione ma nemmeno deve presa come dogma o legge o come unico modo per raggiungere il codice modulare, quello che è certo che DEVE essere utilizzata almeno fino a che non ci si rendo conto che porta ad un beneficio reale. stavo cercando di descrivere qualitativamente un great developers
  • #20: - Code fast - Connected code - No Version Control System - Lazy, closed to learn - Flat languages or old frameworks - His/Her code is secret - Superb - No Passion - Solution Driven Development - Community silos seniority Alla fine essere bravi coder vuol dire dare il giusto bisogno al business, quindi non essere ossessionati da una tecnologia, agire senza pregiudizi, non essere incarcerati, non adattare la soluzione alla tecnologia. E’ problematico se siamo ossessionati dal linguaggio non cerchiamo più di trovare un prodotto di valore per il cliente ma adattiamo la tecn. cosa stiamo facendo come sviluppatori? Il valore non è fare un sito in drupal ma dare qualcosa di valore per il cliente.
  • #21: L?innovazione come benzina per la crescita, POssiamo definire i talented coder come: programmatori ma anche azienda
  • #22: Quindi per essere un talented coders si …. Si ma come soddisfare il business? beh lo step è capire il business, Soddisfare il business è difficile è difficilissimo, non se vi è mai capitato che nel primo giorno di analisi il product owner cerca di ottimizzare il suo tempo dicendovi e cercando di dire tutto, beh mi è capitato e la sera mi sentivo cosi:
  • #23: Quindi se dopo anni abbiamo capito che magari il codice è meglio scriverlo incrementale, abbiamo anche inziato a capire che il business si comprende incrementalmente? Se durante la stima dei costi vi si avevano presentato un pianeta, nel primo giorno di incontro è un universo.
  • #24: Quindi affrontiamo il business nel primo giorno si presenta cosi vi vedete voi? si siete li, intorno piano a piano si crea il buco nero detto della consapevolezza e iniziano ad apparire pian piano le galassie presentate come pianeti o come satelliti.
  • #25: Ci sono varie tecniche per capire quale galassia prima affrontare, scoprire prime le difficoltà etc, per poi andare a capire i pain points. ci sono varie metodologie per capire il impact mapping per allineare l’overall business objectives and make better roadmap decisions.
  • #26: A questo punto si prende un problema e si inizia a descrivere per sviluppare il software MA una applicazione è fatta da software e hardware, tutti e due sono molto importanti, ma quando il software ci parla dei loro problemi noi dobbbiamo evitare: errori di traduzione contaminare il linguaggio del business con tecnicismi che non appartengono al dominio. se noi riuscissimo a scrivere del software seguendo il linguaggio del business, seguendo i comportamenti del business riuscremmo ad evitare le frizioni che si hanno generalmente tra gerghi tecnici (programmatori/product owner). L’informatica è la parte che si deve adattare al gergo tecnico del business, deve aderire al modello. quindi dovremmo disegnare la nostra applicazione defindendo bene diversi livelli, il dominio è quello dove c’è la logica, le costrizioni gli eventi le regole e gli oggetti del modello del business. è lo strato piu interno dovremmo iniziare a modellare l’applicazione partendo da quello non pensando a come implementare il database, dobbiamo solo seguire i comportamenti.
  • #27: A questo punto si prende un problema e si inizia a descrivere per sviluppare il software MA una applicazione è fatta da software e hardware, tutti e due sono molto importanti, ma quando il software ci parla dei loro problemi noi dobbbiamo evitare: errori di traduzione contaminare il linguaggio del business con tecnicismi che non appartengono al dominio. se noi riuscissimo a scrivere del software seguendo il linguaggio del business, seguendo i comportamenti del business riuscremmo ad evitare le frizioni che si hanno generalmente tra gerghi tecnici (programmatori/product owner). L’informatica è la parte che si deve adattare al gergo tecnico del business, deve aderire al modello. quindi dovremmo disegnare la nostra applicazione defindendo bene diversi livelli, il dominio è quello dove c’è la logica, le costrizioni gli eventi le regole e gli oggetti del modello del business. è lo strato piu interno dovremmo iniziare a modellare l’applicazione partendo da quello non pensando a come implementare il database, dobbiamo solo seguire i comportamenti.
  • #28: lo strato di applicazione è quello che contiene l’orchestra degli oggetti di dominio, muove gli oggetti di dominio, il terzo strato è quello di interfaccia di presentazione che decora i casi di uso i comandi che appartengono allo strato precedente. Se vedete bene tecnicamente lo strato di presentazione vede solo comadi non vede il dominio. The inner-most layer is the Domain Layer. This layer contains your business logic and defines how the layer outside of it can interact with it. Business logic is central to your application. It can also be described as 'policy' - rules your code must follow. The domain layer and its business logic define the behavior and constraints of your application. It's what makes your application different from others. It's what gives your application value. If you have an application with a lot of behavior, your application can have a rich domain layer. If your application is more of a thin layer on top of a database (many are!), this layer might be "thinner". Quando pensiamo al dominio NON dobbiamo pensare ai dettagli implementativi il database dopo. l’Application è lo strato che fa muovere le entità del dominio nei diversi stati. Just outside of the Domain Layer sits the Application layer. This layer orchestrates the use of the entities found in the Domain Layer. It also adapts requests from the Framework Layer to the Domain Layer by sitting between the two. For example, it might have a handler class handle a use-case. This handler class in the Application Layer would accept input data brought in from the Framework Layer and perform the actions needed to accomplish the use-case. It might also dispatch Domain Events raised in the Domain Layer. This layer represents the outside layer of the code that makes up the application. -............. Quindi vogliamo seguendo questa notazione andare a sviluppare un esempio pratico di come dare il bisogno al business partendo da una storia. Il modello esponde metodi pubblici e comportamenti delle classi che sono aggregati, eventi etc L’applicazione espone richieste e casi di uso Lo strato esterno decora ed esponde al cliente nel formato scelto. QUini vogliamo un linguaggio che sia aderente al business che ci guidi nello sviluppo, be è proprio il linguaggio del business.
  • #30: Mappiamo ogni step in una funzione php cosi da unire le funzionalità ai test automatici. Immaginate di avvicinarvi ad un cliente o il vostro capo, fatelo partecipare il piu possibile alla scrittura delle storie scrivete esempi, quindi Gerghin, quando inziate pensate a quale business value, gerghin a business driven readable language, funziona come documentazione, ma anche guida automatic test, descrive il comportamento del software, quindi scrivendo le storie condividendo le storie con il cliente, si condividono le responsabilità.
  • #31: vi ricordate il tdd? scrivete il test, create la classe e la funzionalità test verde e ricominciate? beh qui è diverso, ….
  • #32: Mappiamo ogni step in una funzione php cosi da unire le funzionalità ai test automatici.
  • #33: Mappiamo ogni step in una funzione php cosi da unire le funzionalità ai test automatici.
  • #34: Mappiamo ogni step in una funzione php cosi da unire le funzionalità ai test automatici.
  • #35: Mappiamo ogni step in una funzione php cosi da unire le funzionalità ai test automatici.
  • #38: Il miglior linguaggio di programmazione non vi salvarà dallo scrivere codice di …. orribile
  • #39: Follow the business.
  • #40: No prejudice