SlideShare ist ein Scribd-Unternehmen logo
1 von 14
Feature Folders
Anthony Steele

@AnthonySteele
Anthony.Steele@7digital.com
Large projects
Why was it organised this way?
Default ASP MVC organisation isn’t good for large projects.
Organise related things together.
Uncle Bob Martin

http://blog.8thlight.com/uncle-bob/2011/09/30/Screaming-Architecture.html

“Imagine that you are looking at the blueprints of a building. What do these
plans tell you?
What is your architecture screaming about?”
What is your architecture making obvious
“I am an ASP MVC app? I have controllers and views!”
Or
“I am an online music catalogue, A payroll system, etc“
Make it shout about the problem domain not the framework.
What’s in a screaming name?
I don’t like this name.
The architecture should not be wailing in
pain, it should be running smoothly.
Is there a better name for this idea?
How about…
• Obvious architecture
• Blatant domain
• Lucid domain architecture
• The “what are you making plain?” principle
• Putting related stuff together and naming it well
• Feature folders?
Feature folders
This is a broad idea. Narrow our focus!
“obvious architecture” idea implies that code should be arranged
with related code for a feature in the same folder.
How?
In ASP MVC
You need a custom controller locator and custom view locator.
Good news for the controller locator:
Your Ioc Container can do it.
Not as good news for the view locator. You need some custom code.
Demo In Visual studio…
In ServiceStack or Nancy
These frameworks support feature folders without customisation.
Just do it.
Demo In Visual Studio
Repositories / Data Stores / Services
• Still have a “data layer” where access to DB/ Web services becomes
the main concern.
• Split at this boundary where the concerns, dependencies change
• Vocabulary of tests change at the boundary too.
• But inside that project, still have related stuff together.
In Angular
• Even further integrated by feature:
• 2 levels of tests live in with the js “codebehind” and the html markup.
• The build process does different things with them.
Sublime text demo
Conclusion
• Some things can easily be found by the tooling
• But the problem domain can’t
• Make that explicit
• Put conceptually related things together
Thank you!
Anthony Steele

@AnthonySteele
anthony.steele@7digital.com

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

Design patterns in test automation
Design patterns in test automationDesign patterns in test automation
Design patterns in test automation
 
iOS development best practices
iOS development best practicesiOS development best practices
iOS development best practices
 
AD105 - OneUI.. really? Is that because you don't know about Twitter Bootstrap?
AD105 - OneUI.. really? Is that because you don't know about Twitter Bootstrap?AD105 - OneUI.. really? Is that because you don't know about Twitter Bootstrap?
AD105 - OneUI.. really? Is that because you don't know about Twitter Bootstrap?
 
Mini training- Scenario Driven Design
Mini training- Scenario Driven DesignMini training- Scenario Driven Design
Mini training- Scenario Driven Design
 
Headless cms architecture
Headless cms architectureHeadless cms architecture
Headless cms architecture
 
Untangling - fall2017 - week 7
Untangling - fall2017 - week 7Untangling - fall2017 - week 7
Untangling - fall2017 - week 7
 
Getting the best value out of your unit tests
Getting the best value out of your unit testsGetting the best value out of your unit tests
Getting the best value out of your unit tests
 
Workflows - The Rise of the Machines
Workflows - The Rise of the MachinesWorkflows - The Rise of the Machines
Workflows - The Rise of the Machines
 
Mvc
MvcMvc
Mvc
 
Fast Track introduction to ASP.NET MVC
Fast Track introduction to ASP.NET MVCFast Track introduction to ASP.NET MVC
Fast Track introduction to ASP.NET MVC
 
Automated perf optimization - jQuery Conference
Automated perf optimization - jQuery ConferenceAutomated perf optimization - jQuery Conference
Automated perf optimization - jQuery Conference
 
Building JavaScript Apps for Force.com with EmberJS
Building JavaScript Apps for Force.com with EmberJSBuilding JavaScript Apps for Force.com with EmberJS
Building JavaScript Apps for Force.com with EmberJS
 
Php Indonesia x Bliblidotcom - Architecting Scalable CSS
Php Indonesia x Bliblidotcom - Architecting Scalable CSSPhp Indonesia x Bliblidotcom - Architecting Scalable CSS
Php Indonesia x Bliblidotcom - Architecting Scalable CSS
 
Untangling the web11
Untangling the web11Untangling the web11
Untangling the web11
 
Using Chat Automation - ChatOps
Using Chat Automation - ChatOpsUsing Chat Automation - ChatOps
Using Chat Automation - ChatOps
 
SenchaCon 2016: The Changing Landscape of JavaScript Testing - Joel Watson an...
SenchaCon 2016: The Changing Landscape of JavaScript Testing - Joel Watson an...SenchaCon 2016: The Changing Landscape of JavaScript Testing - Joel Watson an...
SenchaCon 2016: The Changing Landscape of JavaScript Testing - Joel Watson an...
 
Aspect oriented programming
Aspect oriented programmingAspect oriented programming
Aspect oriented programming
 
WordCamp Kent 2019 - WP 101: Themes & Plugins: What are they, and where do I ...
WordCamp Kent 2019 - WP 101: Themes & Plugins: What are they, and where do I ...WordCamp Kent 2019 - WP 101: Themes & Plugins: What are they, and where do I ...
WordCamp Kent 2019 - WP 101: Themes & Plugins: What are they, and where do I ...
 
Why You Need a Front End Developer
Why You Need a Front End DeveloperWhy You Need a Front End Developer
Why You Need a Front End Developer
 
Charts, PDFs, and PHP
Charts, PDFs, and PHPCharts, PDFs, and PHP
Charts, PDFs, and PHP
 

Ähnlich wie Feature folders

Sitting in the Driver's Seat
Sitting in the Driver's SeatSitting in the Driver's Seat
Sitting in the Driver's Seat
Jack Moffett
 
Farewell XSL, Welcome Display Templates SPSNL
Farewell XSL, Welcome Display Templates SPSNLFarewell XSL, Welcome Display Templates SPSNL
Farewell XSL, Welcome Display Templates SPSNL
Elio Struyf
 

Ähnlich wie Feature folders (20)

BackboneJS
BackboneJSBackboneJS
BackboneJS
 
Framing the Argument: How to Scale Faster with NoSQL
Framing the Argument: How to Scale Faster with NoSQLFraming the Argument: How to Scale Faster with NoSQL
Framing the Argument: How to Scale Faster with NoSQL
 
50 Shades of Fail KScope16
50 Shades of Fail KScope1650 Shades of Fail KScope16
50 Shades of Fail KScope16
 
Codeigniter
CodeigniterCodeigniter
Codeigniter
 
Sitting in the Driver's Seat
Sitting in the Driver's SeatSitting in the Driver's Seat
Sitting in the Driver's Seat
 
Features, Exportables & You
Features, Exportables & YouFeatures, Exportables & You
Features, Exportables & You
 
Java Design Patterns Tutorial | Edureka
Java Design Patterns Tutorial | EdurekaJava Design Patterns Tutorial | Edureka
Java Design Patterns Tutorial | Edureka
 
learn mvc project in 7 day
learn mvc project in 7 daylearn mvc project in 7 day
learn mvc project in 7 day
 
Boilerplates: Step up your Web Development Process
Boilerplates: Step up your Web Development ProcessBoilerplates: Step up your Web Development Process
Boilerplates: Step up your Web Development Process
 
Pearls and Must-Have Tools for the Modern Web / .NET Developer
Pearls and Must-Have Tools for the Modern Web / .NET DeveloperPearls and Must-Have Tools for the Modern Web / .NET Developer
Pearls and Must-Have Tools for the Modern Web / .NET Developer
 
Bootstrap for Beginners
Bootstrap for BeginnersBootstrap for Beginners
Bootstrap for Beginners
 
Weekly Meeting: Basic Design Pattern
Weekly Meeting: Basic Design PatternWeekly Meeting: Basic Design Pattern
Weekly Meeting: Basic Design Pattern
 
Software Architecture and Architectors: useless VS valuable
Software Architecture and Architectors: useless VS valuableSoftware Architecture and Architectors: useless VS valuable
Software Architecture and Architectors: useless VS valuable
 
Add-On Development: EE Expects that Every Developer will do his Duty
Add-On Development: EE Expects that Every Developer will do his DutyAdd-On Development: EE Expects that Every Developer will do his Duty
Add-On Development: EE Expects that Every Developer will do his Duty
 
presentation
presentationpresentation
presentation
 
Farewell XSL, Welcome Display Templates SPSNL
Farewell XSL, Welcome Display Templates SPSNLFarewell XSL, Welcome Display Templates SPSNL
Farewell XSL, Welcome Display Templates SPSNL
 
DITA 2.0: A NOT backwards compatible release
DITA 2.0: A NOT backwards compatible releaseDITA 2.0: A NOT backwards compatible release
DITA 2.0: A NOT backwards compatible release
 
JSLink for ITPros - SharePoint Saturday Jersey
JSLink for ITPros - SharePoint Saturday JerseyJSLink for ITPros - SharePoint Saturday Jersey
JSLink for ITPros - SharePoint Saturday Jersey
 
MWLUG 2015 - An Introduction to MVC
MWLUG 2015 - An Introduction to MVCMWLUG 2015 - An Introduction to MVC
MWLUG 2015 - An Introduction to MVC
 
SharePoint 2013 Sandbox Solutions for On Premise or Office 365
SharePoint 2013 Sandbox Solutions for On Premise or Office 365SharePoint 2013 Sandbox Solutions for On Premise or Office 365
SharePoint 2013 Sandbox Solutions for On Premise or Office 365
 

Kürzlich hochgeladen

FULL NIGHT — 9999894380 Call Girls In Wazirabad | Delhi
FULL NIGHT — 9999894380 Call Girls In Wazirabad | DelhiFULL NIGHT — 9999894380 Call Girls In Wazirabad | Delhi
FULL NIGHT — 9999894380 Call Girls In Wazirabad | Delhi
SaketCallGirlsCallUs
 
Museum of fine arts Lauren Simpson…………..
Museum of fine arts Lauren Simpson…………..Museum of fine arts Lauren Simpson…………..
Museum of fine arts Lauren Simpson…………..
mvxpw22gfc
 
Call Girls in Sakinaka 9892124323, Vashi CAll Girls Call girls Services, Che...
Call Girls in Sakinaka  9892124323, Vashi CAll Girls Call girls Services, Che...Call Girls in Sakinaka  9892124323, Vashi CAll Girls Call girls Services, Che...
Call Girls in Sakinaka 9892124323, Vashi CAll Girls Call girls Services, Che...
Pooja Nehwal
 
FULL NIGHT — 9999894380 Call Girls In Mahipalpur | Delhi
FULL NIGHT — 9999894380 Call Girls In Mahipalpur | DelhiFULL NIGHT — 9999894380 Call Girls In Mahipalpur | Delhi
FULL NIGHT — 9999894380 Call Girls In Mahipalpur | Delhi
SaketCallGirlsCallUs
 
FULL NIGHT — 9999894380 Call Girls In Badarpur | Delhi
FULL NIGHT — 9999894380 Call Girls In Badarpur | DelhiFULL NIGHT — 9999894380 Call Girls In Badarpur | Delhi
FULL NIGHT — 9999894380 Call Girls In Badarpur | Delhi
SaketCallGirlsCallUs
 
Van Gogh Powerpoint for art lesson today
Van Gogh Powerpoint for art lesson todayVan Gogh Powerpoint for art lesson today
Van Gogh Powerpoint for art lesson today
lucygibson17
 
DELHI NCR —@9711106444 Call Girls In Majnu Ka Tilla (MT)| Delhi
DELHI NCR —@9711106444 Call Girls In Majnu Ka Tilla (MT)| DelhiDELHI NCR —@9711106444 Call Girls In Majnu Ka Tilla (MT)| Delhi
DELHI NCR —@9711106444 Call Girls In Majnu Ka Tilla (MT)| Delhi
delhimunirka444
 
❤ Sexy Call Girls in Chandigarh 👀📞 90,539,00,678📞 Chandigarh Call Girls Servi...
❤ Sexy Call Girls in Chandigarh 👀📞 90,539,00,678📞 Chandigarh Call Girls Servi...❤ Sexy Call Girls in Chandigarh 👀📞 90,539,00,678📞 Chandigarh Call Girls Servi...
❤ Sexy Call Girls in Chandigarh 👀📞 90,539,00,678📞 Chandigarh Call Girls Servi...
Chandigarh Call girls 9053900678 Call girls in Chandigarh
 
(9711106444 )🫦#Sexy Desi Call Girls Noida Sector 4 Escorts Service Delhi 🫶
(9711106444 )🫦#Sexy Desi Call Girls Noida Sector 4 Escorts Service Delhi 🫶(9711106444 )🫦#Sexy Desi Call Girls Noida Sector 4 Escorts Service Delhi 🫶
(9711106444 )🫦#Sexy Desi Call Girls Noida Sector 4 Escorts Service Delhi 🫶
delhimunirka444
 
architect Hassan Khalil portfolio Year 2024
architect Hassan Khalil portfolio  Year 2024architect Hassan Khalil portfolio  Year 2024
architect Hassan Khalil portfolio Year 2024
hassan khalil
 
FULL NIGHT — 9999894380 Call Girls In Indirapuram | Delhi
FULL NIGHT — 9999894380 Call Girls In Indirapuram | DelhiFULL NIGHT — 9999894380 Call Girls In Indirapuram | Delhi
FULL NIGHT — 9999894380 Call Girls In Indirapuram | Delhi
SaketCallGirlsCallUs
 

Kürzlich hochgeladen (20)

THE ARTS OF THE PHILIPPINE BALLET PRESN
THE ARTS OF  THE PHILIPPINE BALLET PRESNTHE ARTS OF  THE PHILIPPINE BALLET PRESN
THE ARTS OF THE PHILIPPINE BALLET PRESN
 
FULL NIGHT — 9999894380 Call Girls In Wazirabad | Delhi
FULL NIGHT — 9999894380 Call Girls In Wazirabad | DelhiFULL NIGHT — 9999894380 Call Girls In Wazirabad | Delhi
FULL NIGHT — 9999894380 Call Girls In Wazirabad | Delhi
 
Museum of fine arts Lauren Simpson…………..
Museum of fine arts Lauren Simpson…………..Museum of fine arts Lauren Simpson…………..
Museum of fine arts Lauren Simpson…………..
 
Call Girls in Sakinaka 9892124323, Vashi CAll Girls Call girls Services, Che...
Call Girls in Sakinaka  9892124323, Vashi CAll Girls Call girls Services, Che...Call Girls in Sakinaka  9892124323, Vashi CAll Girls Call girls Services, Che...
Call Girls in Sakinaka 9892124323, Vashi CAll Girls Call girls Services, Che...
 
(NEHA) Call Girls Mumbai Call Now 8250077686 Mumbai Escorts 24x7
(NEHA) Call Girls Mumbai Call Now 8250077686 Mumbai Escorts 24x7(NEHA) Call Girls Mumbai Call Now 8250077686 Mumbai Escorts 24x7
(NEHA) Call Girls Mumbai Call Now 8250077686 Mumbai Escorts 24x7
 
FULL NIGHT — 9999894380 Call Girls In Mahipalpur | Delhi
FULL NIGHT — 9999894380 Call Girls In Mahipalpur | DelhiFULL NIGHT — 9999894380 Call Girls In Mahipalpur | Delhi
FULL NIGHT — 9999894380 Call Girls In Mahipalpur | Delhi
 
Completed Event Presentation for Huma 1305
Completed Event Presentation for Huma 1305Completed Event Presentation for Huma 1305
Completed Event Presentation for Huma 1305
 
GENUINE EscoRtS,Call Girls IN South Delhi Locanto TM''| +91-8377087607
GENUINE EscoRtS,Call Girls IN South Delhi Locanto TM''| +91-8377087607GENUINE EscoRtS,Call Girls IN South Delhi Locanto TM''| +91-8377087607
GENUINE EscoRtS,Call Girls IN South Delhi Locanto TM''| +91-8377087607
 
Hire 💕 8617370543 Mumbai Suburban Call Girls Service Call Girls Agency
Hire 💕 8617370543 Mumbai Suburban Call Girls Service Call Girls AgencyHire 💕 8617370543 Mumbai Suburban Call Girls Service Call Girls Agency
Hire 💕 8617370543 Mumbai Suburban Call Girls Service Call Girls Agency
 
FULL NIGHT — 9999894380 Call Girls In Badarpur | Delhi
FULL NIGHT — 9999894380 Call Girls In Badarpur | DelhiFULL NIGHT — 9999894380 Call Girls In Badarpur | Delhi
FULL NIGHT — 9999894380 Call Girls In Badarpur | Delhi
 
sources of Hindu law kdaenflkjwwfererger
sources of Hindu law kdaenflkjwwferergersources of Hindu law kdaenflkjwwfererger
sources of Hindu law kdaenflkjwwfererger
 
Van Gogh Powerpoint for art lesson today
Van Gogh Powerpoint for art lesson todayVan Gogh Powerpoint for art lesson today
Van Gogh Powerpoint for art lesson today
 
DELHI NCR —@9711106444 Call Girls In Majnu Ka Tilla (MT)| Delhi
DELHI NCR —@9711106444 Call Girls In Majnu Ka Tilla (MT)| DelhiDELHI NCR —@9711106444 Call Girls In Majnu Ka Tilla (MT)| Delhi
DELHI NCR —@9711106444 Call Girls In Majnu Ka Tilla (MT)| Delhi
 
VIP Ramnagar Call Girls, Ramnagar escorts Girls 📞 8617697112
VIP Ramnagar Call Girls, Ramnagar escorts Girls 📞 8617697112VIP Ramnagar Call Girls, Ramnagar escorts Girls 📞 8617697112
VIP Ramnagar Call Girls, Ramnagar escorts Girls 📞 8617697112
 
❤ Sexy Call Girls in Chandigarh 👀📞 90,539,00,678📞 Chandigarh Call Girls Servi...
❤ Sexy Call Girls in Chandigarh 👀📞 90,539,00,678📞 Chandigarh Call Girls Servi...❤ Sexy Call Girls in Chandigarh 👀📞 90,539,00,678📞 Chandigarh Call Girls Servi...
❤ Sexy Call Girls in Chandigarh 👀📞 90,539,00,678📞 Chandigarh Call Girls Servi...
 
Sirmaur Call Girls Book Now 8617697112 Top Class Pondicherry Escort Service A...
Sirmaur Call Girls Book Now 8617697112 Top Class Pondicherry Escort Service A...Sirmaur Call Girls Book Now 8617697112 Top Class Pondicherry Escort Service A...
Sirmaur Call Girls Book Now 8617697112 Top Class Pondicherry Escort Service A...
 
Storyboard short: Ferrarius Tries to Sing
Storyboard short: Ferrarius Tries to SingStoryboard short: Ferrarius Tries to Sing
Storyboard short: Ferrarius Tries to Sing
 
(9711106444 )🫦#Sexy Desi Call Girls Noida Sector 4 Escorts Service Delhi 🫶
(9711106444 )🫦#Sexy Desi Call Girls Noida Sector 4 Escorts Service Delhi 🫶(9711106444 )🫦#Sexy Desi Call Girls Noida Sector 4 Escorts Service Delhi 🫶
(9711106444 )🫦#Sexy Desi Call Girls Noida Sector 4 Escorts Service Delhi 🫶
 
architect Hassan Khalil portfolio Year 2024
architect Hassan Khalil portfolio  Year 2024architect Hassan Khalil portfolio  Year 2024
architect Hassan Khalil portfolio Year 2024
 
FULL NIGHT — 9999894380 Call Girls In Indirapuram | Delhi
FULL NIGHT — 9999894380 Call Girls In Indirapuram | DelhiFULL NIGHT — 9999894380 Call Girls In Indirapuram | Delhi
FULL NIGHT — 9999894380 Call Girls In Indirapuram | Delhi
 

Feature folders

  • 2.
  • 3. Large projects Why was it organised this way? Default ASP MVC organisation isn’t good for large projects. Organise related things together.
  • 4. Uncle Bob Martin http://blog.8thlight.com/uncle-bob/2011/09/30/Screaming-Architecture.html “Imagine that you are looking at the blueprints of a building. What do these plans tell you? What is your architecture screaming about?”
  • 5. What is your architecture making obvious “I am an ASP MVC app? I have controllers and views!” Or “I am an online music catalogue, A payroll system, etc“ Make it shout about the problem domain not the framework.
  • 6. What’s in a screaming name? I don’t like this name. The architecture should not be wailing in pain, it should be running smoothly. Is there a better name for this idea?
  • 7. How about… • Obvious architecture • Blatant domain • Lucid domain architecture • The “what are you making plain?” principle • Putting related stuff together and naming it well • Feature folders?
  • 8. Feature folders This is a broad idea. Narrow our focus! “obvious architecture” idea implies that code should be arranged with related code for a feature in the same folder.
  • 9. How? In ASP MVC You need a custom controller locator and custom view locator. Good news for the controller locator: Your Ioc Container can do it. Not as good news for the view locator. You need some custom code. Demo In Visual studio…
  • 10. In ServiceStack or Nancy These frameworks support feature folders without customisation. Just do it. Demo In Visual Studio
  • 11. Repositories / Data Stores / Services • Still have a “data layer” where access to DB/ Web services becomes the main concern. • Split at this boundary where the concerns, dependencies change • Vocabulary of tests change at the boundary too. • But inside that project, still have related stuff together.
  • 12. In Angular • Even further integrated by feature: • 2 levels of tests live in with the js “codebehind” and the html markup. • The build process does different things with them. Sublime text demo
  • 13. Conclusion • Some things can easily be found by the tooling • But the problem domain can’t • Make that explicit • Put conceptually related things together