SlideShare una empresa de Scribd logo
1 de 55
Descargar para leer sin conexión
BUILDING A MAINTAINABLE

REACTIFLUX APPLICATION
REFLECTIONS AFTER A YEAR IN PRODUCTION
1. FOLLOW THE "FUNCTIONAL CORE,
IMPERATIVE SHELL" MANTRA
1. FOLLOW THE "FUNCTIONAL CORE, IMPERATIVE SHELL" MANTRA
1. FOLLOW THE "FUNCTIONAL CORE, IMPERATIVE SHELL" MANTRA
1. FOLLOW THE "FUNCTIONAL CORE, IMPERATIVE SHELL" MANTRA
1. FOLLOW THE "FUNCTIONAL CORE, IMPERATIVE SHELL" MANTRA
Simple!
...but not always easy
1. FOLLOW THE "FUNCTIONAL CORE, IMPERATIVE SHELL" MANTRA
foo(x) → bar(x) → baz(x)
1. FOLLOW THE "FUNCTIONAL CORE, IMPERATIVE SHELL" MANTRA
foo(x) → bar(x) → baz(x,y)
2. USE DEPENDENCY
INJECTION, BUT KISS
2. USE DEPENDENCY INJECTION, BUT KISS
3. USE AN EXPLICIT

APP INSTANCE
3. USE AN EXPLICIT APP INSTANCE
3. USE AN EXPLICIT APP INSTANCE
3. USE AN EXPLICIT APP INSTANCE
3. USE AN EXPLICIT APP INSTANCE
3. USE AN EXPLICIT APP INSTANCE
Beware God Objects, though
4. WRAP ARCHITECTURALLY
SIGNIFICANT API'S
4. WRAP ARCHITECTURALLY SIGNIFICANT API'S
4. WRAP ARCHITECTURALLY SIGNIFICANT API'S
4. WRAP ARCHITECTURALLY SIGNIFICANT API'S
4. WRAP ARCHITECTURALLY SIGNIFICANT API'S
5. TAKE STYLE
ENCAPSULATION SERIOUSLY
5. TAKE STYLE ENCAPSULATION SERIOUSLY
5. TAKE STYLE ENCAPSULATION SERIOUSLY
5. TAKE STYLE ENCAPSULATION SERIOUSLY
⇐ TimelinePanel.js
5. TAKE STYLE ENCAPSULATION SERIOUSLY
⇐ TimelinePanel.js
5. TAKE STYLE ENCAPSULATION SERIOUSLY
⇐ TimelinePanel.js
5. TAKE STYLE ENCAPSULATION SERIOUSLY
⇐ TimelinePanel.js
"fiba-TimelinePanel-list"
5. TAKE STYLE ENCAPSULATION SERIOUSLY
http://imgur.com/gallery/Q3cUg29
5. TAKE STYLE ENCAPSULATION SERIOUSLY
http://imgur.com/gallery/Q3cUg29
6. STORE AS LITTLE DATA AS
POSSIBLE, DERIVE THE REST
6. STORE AS LITTLE DATA AS POSSIBLE, DERIVE THE REST
6. STORE AS LITTLE DATA AS POSSIBLE, DERIVE THE REST
6. STORE AS LITTLE DATA AS POSSIBLE, DERIVE THE REST
6. STORE AS LITTLE DATA AS POSSIBLE, DERIVE THE REST
SHOW ME YOUR [CODE] AND CONCEAL YOUR [DATA
STRUCTURES], AND I SHALL CONTINUE TO BE MYSTIFIED.
SHOW ME YOUR [DATA STRUCTURES], AND I WON'T
USUALLY NEED YOUR [CODE]; IT'LL BE OBVIOUS.
Fred Brooks, The Mythical Man-Month
6. STORE AS LITTLE DATA AS POSSIBLE, DERIVE THE REST
6. STORE AS LITTLE DATA AS POSSIBLE, DERIVE THE REST
You'll need memoize()

Also, beware memoize()
7. KEEP THINGS

JSON-SERIALIZABLE
7. KEEP THINGS JSON-SERIALIZABLE
7. KEEP THINGS JSON-SERIALIZABLE
7. KEEP THINGS JSON-SERIALIZABLE
▸ Tests need maintenance
▸ Snapshots need maintenance
▸ Doesn't test the imperative shell
8. SURPRISING THINGS
FIT INTO THE FLUX MODEL
8. SURPRISING THINGS FIT INTO THE FLUX MODEL
8. SURPRISING THINGS FIT INTO THE FLUX MODEL
8. SURPRISING THINGS FIT INTO THE FLUX MODEL
8. SURPRISING THINGS FIT INTO THE FLUX MODEL
...but watch out for

performance issues
9. SHARE THE PAIN OF
YOUR USERS
9. SHARE THE PAIN OF YOUR USERS
9. SHARE THE PAIN OF YOUR USERS
9. SHARE THE PAIN OF YOUR USERS
http://www.reactiongifs.com/magic-3/
9. SHARE THE PAIN OF YOUR USERS
http://www.reactiongifs.com/magic-3/
BUILDING A MAINTAINABLE REACTIFLUX APPLICATION
SUMMARY
1. Follow the "functional core, imperative shell" mantra
2. Use dependency injection, but KISS
3. Use an explicit app instance
4. Wrap architecturally significant API's
5. Take style encapsulation seriously
6. Store as little data as possible, derive the rest
7. Keep things JSON-serializable
8. Surprising things fit into the Flux model
9. Share the pain of your users
BUILDING A MAINTAINABLE REACTIFLUX APPLICATION
THANKS FOR LISTENING!
▸ Come say hi

@Jareware
▸ Debugging is in Flux - Stockholm Beer & Tech ‘16

https://vimeo.com/166342150
▸ CSS namespacing utility

https://github.com/jareware/css-ns
▸ Robust, scalable CSS architecture

https://github.com/jareware/css-architecture

Más contenido relacionado

Destacado

дебют уроку
дебют  урокудебют  уроку
дебют урокуJo01
 
Работа социальной служби_Ткаченко Н.В.
Работа социальной служби_Ткаченко Н.В.Работа социальной служби_Ткаченко Н.В.
Работа социальной служби_Ткаченко Н.В.Ирина Мироненко
 
2721 engineering to consulting booz allen hamilton
2721 engineering to consulting  booz allen hamilton2721 engineering to consulting  booz allen hamilton
2721 engineering to consulting booz allen hamiltonCareer Communications Group
 
Erasmus - Rechtsvergleichendes Seminar Juli 2015
Erasmus - Rechtsvergleichendes Seminar Juli 2015Erasmus - Rechtsvergleichendes Seminar Juli 2015
Erasmus - Rechtsvergleichendes Seminar Juli 2015Michael Lanzinger
 

Destacado (8)

дебют уроку
дебют  урокудебют  уроку
дебют уроку
 
2 introducao ao marketing
2 introducao ao marketing2 introducao ao marketing
2 introducao ao marketing
 
Работа социальной служби_Ткаченко Н.В.
Работа социальной служби_Ткаченко Н.В.Работа социальной служби_Ткаченко Н.В.
Работа социальной служби_Ткаченко Н.В.
 
Carros memoraveis (1900 1939)
Carros memoraveis (1900   1939)Carros memoraveis (1900   1939)
Carros memoraveis (1900 1939)
 
Chloroplast dna
Chloroplast dnaChloroplast dna
Chloroplast dna
 
2721 engineering to consulting booz allen hamilton
2721 engineering to consulting  booz allen hamilton2721 engineering to consulting  booz allen hamilton
2721 engineering to consulting booz allen hamilton
 
Erasmus - Rechtsvergleichendes Seminar Juli 2015
Erasmus - Rechtsvergleichendes Seminar Juli 2015Erasmus - Rechtsvergleichendes Seminar Juli 2015
Erasmus - Rechtsvergleichendes Seminar Juli 2015
 
Unidad 2rodolfo garcia roa
Unidad 2rodolfo garcia roaUnidad 2rodolfo garcia roa
Unidad 2rodolfo garcia roa
 

Último

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesBoston Institute of Analytics
 

Último (20)

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 

Building a maintainable Reactiflux application