SlideShare una empresa de Scribd logo
1 de 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

Más contenido relacionado

La actualidad más candente

Design patterns in test automation
Design patterns in test automationDesign patterns in test automation
Design patterns in test automationMikalai Alimenkou
 
iOS development best practices
iOS development best practicesiOS development best practices
iOS development best practicesMichal Juhas
 
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?Andrew Barickman
 
Headless cms architecture
Headless cms architectureHeadless cms architecture
Headless cms architectureKevin Wenger
 
Untangling - fall2017 - week 7
Untangling - fall2017 - week 7Untangling - fall2017 - week 7
Untangling - fall2017 - week 7Derek Jacoby
 
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 testsRobert Baillie
 
Workflows - The Rise of the Machines
Workflows - The Rise of the MachinesWorkflows - The Rise of the Machines
Workflows - The Rise of the MachinesKevin Wenger
 
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 MVCAnkit Kashyap
 
Automated perf optimization - jQuery Conference
Automated perf optimization - jQuery ConferenceAutomated perf optimization - jQuery Conference
Automated perf optimization - jQuery ConferenceMatthew Lancaster
 
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 EmberJSSalesforce Developers
 
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 CSSIrfan Maulana
 
Untangling the web11
Untangling the web11Untangling the web11
Untangling the web11Derek Jacoby
 
Using Chat Automation - ChatOps
Using Chat Automation - ChatOpsUsing Chat Automation - ChatOps
Using Chat Automation - ChatOpsJaap Brasser
 
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...Sencha
 
Aspect oriented programming
Aspect oriented programmingAspect oriented programming
Aspect oriented programmingRobert MacLean
 
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 ...Joe Querin
 
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 DeveloperMike Wilcox
 
Charts, PDFs, and PHP
Charts, PDFs, and PHPCharts, PDFs, and PHP
Charts, PDFs, and PHPjerkob
 

La actualidad más candente (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
 

Similar a Feature folders

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 NoSQLInside Analysis
 
50 Shades of Fail KScope16
50 Shades of Fail KScope1650 Shades of Fail KScope16
50 Shades of Fail KScope16Christian Berg
 
Sitting in the Driver's Seat
Sitting in the Driver's SeatSitting in the Driver's Seat
Sitting in the Driver's SeatJack Moffett
 
Features, Exportables & You
Features, Exportables & YouFeatures, Exportables & You
Features, Exportables & Youjskulski
 
Java Design Patterns Tutorial | Edureka
Java Design Patterns Tutorial | EdurekaJava Design Patterns Tutorial | Edureka
Java Design Patterns Tutorial | EdurekaEdureka!
 
learn mvc project in 7 day
learn mvc project in 7 daylearn mvc project in 7 day
learn mvc project in 7 dayQuach Long
 
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 ProcessFibonalabs
 
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 DeveloperOfer Zelig
 
Bootstrap for Beginners
Bootstrap for BeginnersBootstrap for Beginners
Bootstrap for BeginnersD'arce Hess
 
Weekly Meeting: Basic Design Pattern
Weekly Meeting: Basic Design PatternWeekly Meeting: Basic Design Pattern
Weekly Meeting: Basic Design PatternNguyen Trung Kien
 
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 valuableComsysto Reply GmbH
 
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 Dutyreedmaniac
 
Farewell XSL, Welcome Display Templates SPSNL
Farewell XSL, Welcome Display Templates SPSNLFarewell XSL, Welcome Display Templates SPSNL
Farewell XSL, Welcome Display Templates SPSNLElio Struyf
 
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 releaseKristen Eberlein
 
JSLink for ITPros - SharePoint Saturday Jersey
JSLink for ITPros - SharePoint Saturday JerseyJSLink for ITPros - SharePoint Saturday Jersey
JSLink for ITPros - SharePoint Saturday JerseyPaul Hunt
 
MWLUG 2015 - An Introduction to MVC
MWLUG 2015 - An Introduction to MVCMWLUG 2015 - An Introduction to MVC
MWLUG 2015 - An Introduction to MVCUlrich Krause
 
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 365Ed Musters
 

Similar a 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
 

Último

Azamgarh Call Girls WhatsApp Chat: 📞 8617370543 (24x7 ) Service Available Nea...
Azamgarh Call Girls WhatsApp Chat: 📞 8617370543 (24x7 ) Service Available Nea...Azamgarh Call Girls WhatsApp Chat: 📞 8617370543 (24x7 ) Service Available Nea...
Azamgarh Call Girls WhatsApp Chat: 📞 8617370543 (24x7 ) Service Available Nea...Nitya salvi
 
Call Girls Sultanpur Just Call 📞 8617370543 Top Class Call Girl Service Avail...
Call Girls Sultanpur Just Call 📞 8617370543 Top Class Call Girl Service Avail...Call Girls Sultanpur Just Call 📞 8617370543 Top Class Call Girl Service Avail...
Call Girls Sultanpur Just Call 📞 8617370543 Top Class Call Girl Service Avail...Nitya salvi
 
LESSON-1-MUSIC-Q4 also a reviewer mapeh.pptx
LESSON-1-MUSIC-Q4 also a reviewer mapeh.pptxLESSON-1-MUSIC-Q4 also a reviewer mapeh.pptx
LESSON-1-MUSIC-Q4 also a reviewer mapeh.pptxmatthewmirafuentes
 
Storyboard short: Ferrarius Tries to Sing
Storyboard short: Ferrarius Tries to SingStoryboard short: Ferrarius Tries to Sing
Storyboard short: Ferrarius Tries to SingLyneSun
 
Call Girls Aligarh Just Call 8617370543 Top Class Call Girl Service Available
Call Girls Aligarh Just Call 8617370543 Top Class Call Girl Service AvailableCall Girls Aligarh Just Call 8617370543 Top Class Call Girl Service Available
Call Girls Aligarh Just Call 8617370543 Top Class Call Girl Service AvailableNitya salvi
 
SB_ Dragons Riders of Berk_ Rough_ RiverPhan (2024)
SB_ Dragons Riders of Berk_ Rough_ RiverPhan (2024)SB_ Dragons Riders of Berk_ Rough_ RiverPhan (2024)
SB_ Dragons Riders of Berk_ Rough_ RiverPhan (2024)River / Thao Phan
 
Theoretical Framework- Explanation with Flow Chart.docx
Theoretical Framework- Explanation with Flow Chart.docxTheoretical Framework- Explanation with Flow Chart.docx
Theoretical Framework- Explanation with Flow Chart.docxAman119787
 
Top Rated Lucknow Escorts Service, ₹5000 Best Hot Call Girls With Room +91-82...
Top Rated Lucknow Escorts Service, ₹5000 Best Hot Call Girls With Room +91-82...Top Rated Lucknow Escorts Service, ₹5000 Best Hot Call Girls With Room +91-82...
Top Rated Lucknow Escorts Service, ₹5000 Best Hot Call Girls With Room +91-82...meghakumariji156
 
Digital C-Type Printing: Revolutionizing The Future Of Photographic Prints
Digital C-Type Printing: Revolutionizing The Future Of Photographic PrintsDigital C-Type Printing: Revolutionizing The Future Of Photographic Prints
Digital C-Type Printing: Revolutionizing The Future Of Photographic PrintsMatte Image
 
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
 
一比一原版(UofG学位证书)圭尔夫大学毕业证学历认证快速办理
一比一原版(UofG学位证书)圭尔夫大学毕业证学历认证快速办理一比一原版(UofG学位证书)圭尔夫大学毕业证学历认证快速办理
一比一原版(UofG学位证书)圭尔夫大学毕业证学历认证快速办理txkonu
 
ppt seni budaya kelas xi, menganalisis konsep,unsur,prinsip dan teknik
ppt seni budaya kelas xi, menganalisis konsep,unsur,prinsip dan teknikppt seni budaya kelas xi, menganalisis konsep,unsur,prinsip dan teknik
ppt seni budaya kelas xi, menganalisis konsep,unsur,prinsip dan teknikAgustinus791932
 
codes and conventions of film magazine and website.pptx
codes and conventions of film magazine and website.pptxcodes and conventions of film magazine and website.pptx
codes and conventions of film magazine and website.pptx17duffyc
 
Azad Nagar Call Girls ,☎️ ((#9711106444)), 💘 Full enjoy Low rate girl💘 Genuin...
Azad Nagar Call Girls ,☎️ ((#9711106444)), 💘 Full enjoy Low rate girl💘 Genuin...Azad Nagar Call Girls ,☎️ ((#9711106444)), 💘 Full enjoy Low rate girl💘 Genuin...
Azad Nagar Call Girls ,☎️ ((#9711106444)), 💘 Full enjoy Low rate girl💘 Genuin...delhimunirka15
 
+97470301568>> buy weed, thc oil,cbd oil, kush, hash in Doha qatar}}
+97470301568>> buy weed, thc oil,cbd oil, kush, hash in Doha qatar}}+97470301568>> buy weed, thc oil,cbd oil, kush, hash in Doha qatar}}
+97470301568>> buy weed, thc oil,cbd oil, kush, hash in Doha qatar}}Health
 
一比一原版(UEA毕业证书)东英吉利亚大学毕业证如何办理
一比一原版(UEA毕业证书)东英吉利亚大学毕业证如何办理一比一原版(UEA毕业证书)东英吉利亚大学毕业证如何办理
一比一原版(UEA毕业证书)东英吉利亚大学毕业证如何办理ss
 
WhatsApp-(# 9711106444 #)Call Girl in Noida Sector 80 Noida (Escorts) Delhi
WhatsApp-(# 9711106444 #)Call Girl in Noida Sector 80 Noida (Escorts) DelhiWhatsApp-(# 9711106444 #)Call Girl in Noida Sector 80 Noida (Escorts) Delhi
WhatsApp-(# 9711106444 #)Call Girl in Noida Sector 80 Noida (Escorts) Delhidelhimunirka15
 
SB_ Scott Pilgrim_ Rough_ RiverPhan (2024)
SB_ Scott Pilgrim_ Rough_ RiverPhan (2024)SB_ Scott Pilgrim_ Rough_ RiverPhan (2024)
SB_ Scott Pilgrim_ Rough_ RiverPhan (2024)River / Thao Phan
 
如何办理澳洲迪肯大学毕业证(Deakin毕业证书)毕业证成绩单原版一比一
如何办理澳洲迪肯大学毕业证(Deakin毕业证书)毕业证成绩单原版一比一如何办理澳洲迪肯大学毕业证(Deakin毕业证书)毕业证成绩单原版一比一
如何办理澳洲迪肯大学毕业证(Deakin毕业证书)毕业证成绩单原版一比一avy6anjnd
 
Call Girls Varanasi Just Call 8617370543Top Class Call Girl Service Available
Call Girls Varanasi Just Call 8617370543Top Class Call Girl Service AvailableCall Girls Varanasi Just Call 8617370543Top Class Call Girl Service Available
Call Girls Varanasi Just Call 8617370543Top Class Call Girl Service AvailableNitya salvi
 

Último (20)

Azamgarh Call Girls WhatsApp Chat: 📞 8617370543 (24x7 ) Service Available Nea...
Azamgarh Call Girls WhatsApp Chat: 📞 8617370543 (24x7 ) Service Available Nea...Azamgarh Call Girls WhatsApp Chat: 📞 8617370543 (24x7 ) Service Available Nea...
Azamgarh Call Girls WhatsApp Chat: 📞 8617370543 (24x7 ) Service Available Nea...
 
Call Girls Sultanpur Just Call 📞 8617370543 Top Class Call Girl Service Avail...
Call Girls Sultanpur Just Call 📞 8617370543 Top Class Call Girl Service Avail...Call Girls Sultanpur Just Call 📞 8617370543 Top Class Call Girl Service Avail...
Call Girls Sultanpur Just Call 📞 8617370543 Top Class Call Girl Service Avail...
 
LESSON-1-MUSIC-Q4 also a reviewer mapeh.pptx
LESSON-1-MUSIC-Q4 also a reviewer mapeh.pptxLESSON-1-MUSIC-Q4 also a reviewer mapeh.pptx
LESSON-1-MUSIC-Q4 also a reviewer mapeh.pptx
 
Storyboard short: Ferrarius Tries to Sing
Storyboard short: Ferrarius Tries to SingStoryboard short: Ferrarius Tries to Sing
Storyboard short: Ferrarius Tries to Sing
 
Call Girls Aligarh Just Call 8617370543 Top Class Call Girl Service Available
Call Girls Aligarh Just Call 8617370543 Top Class Call Girl Service AvailableCall Girls Aligarh Just Call 8617370543 Top Class Call Girl Service Available
Call Girls Aligarh Just Call 8617370543 Top Class Call Girl Service Available
 
SB_ Dragons Riders of Berk_ Rough_ RiverPhan (2024)
SB_ Dragons Riders of Berk_ Rough_ RiverPhan (2024)SB_ Dragons Riders of Berk_ Rough_ RiverPhan (2024)
SB_ Dragons Riders of Berk_ Rough_ RiverPhan (2024)
 
Theoretical Framework- Explanation with Flow Chart.docx
Theoretical Framework- Explanation with Flow Chart.docxTheoretical Framework- Explanation with Flow Chart.docx
Theoretical Framework- Explanation with Flow Chart.docx
 
Top Rated Lucknow Escorts Service, ₹5000 Best Hot Call Girls With Room +91-82...
Top Rated Lucknow Escorts Service, ₹5000 Best Hot Call Girls With Room +91-82...Top Rated Lucknow Escorts Service, ₹5000 Best Hot Call Girls With Room +91-82...
Top Rated Lucknow Escorts Service, ₹5000 Best Hot Call Girls With Room +91-82...
 
Digital C-Type Printing: Revolutionizing The Future Of Photographic Prints
Digital C-Type Printing: Revolutionizing The Future Of Photographic PrintsDigital C-Type Printing: Revolutionizing The Future Of Photographic Prints
Digital C-Type Printing: Revolutionizing The Future Of Photographic Prints
 
Museum of fine arts Lauren Simpson…………..
Museum of fine arts Lauren Simpson…………..Museum of fine arts Lauren Simpson…………..
Museum of fine arts Lauren Simpson…………..
 
一比一原版(UofG学位证书)圭尔夫大学毕业证学历认证快速办理
一比一原版(UofG学位证书)圭尔夫大学毕业证学历认证快速办理一比一原版(UofG学位证书)圭尔夫大学毕业证学历认证快速办理
一比一原版(UofG学位证书)圭尔夫大学毕业证学历认证快速办理
 
ppt seni budaya kelas xi, menganalisis konsep,unsur,prinsip dan teknik
ppt seni budaya kelas xi, menganalisis konsep,unsur,prinsip dan teknikppt seni budaya kelas xi, menganalisis konsep,unsur,prinsip dan teknik
ppt seni budaya kelas xi, menganalisis konsep,unsur,prinsip dan teknik
 
codes and conventions of film magazine and website.pptx
codes and conventions of film magazine and website.pptxcodes and conventions of film magazine and website.pptx
codes and conventions of film magazine and website.pptx
 
Azad Nagar Call Girls ,☎️ ((#9711106444)), 💘 Full enjoy Low rate girl💘 Genuin...
Azad Nagar Call Girls ,☎️ ((#9711106444)), 💘 Full enjoy Low rate girl💘 Genuin...Azad Nagar Call Girls ,☎️ ((#9711106444)), 💘 Full enjoy Low rate girl💘 Genuin...
Azad Nagar Call Girls ,☎️ ((#9711106444)), 💘 Full enjoy Low rate girl💘 Genuin...
 
+97470301568>> buy weed, thc oil,cbd oil, kush, hash in Doha qatar}}
+97470301568>> buy weed, thc oil,cbd oil, kush, hash in Doha qatar}}+97470301568>> buy weed, thc oil,cbd oil, kush, hash in Doha qatar}}
+97470301568>> buy weed, thc oil,cbd oil, kush, hash in Doha qatar}}
 
一比一原版(UEA毕业证书)东英吉利亚大学毕业证如何办理
一比一原版(UEA毕业证书)东英吉利亚大学毕业证如何办理一比一原版(UEA毕业证书)东英吉利亚大学毕业证如何办理
一比一原版(UEA毕业证书)东英吉利亚大学毕业证如何办理
 
WhatsApp-(# 9711106444 #)Call Girl in Noida Sector 80 Noida (Escorts) Delhi
WhatsApp-(# 9711106444 #)Call Girl in Noida Sector 80 Noida (Escorts) DelhiWhatsApp-(# 9711106444 #)Call Girl in Noida Sector 80 Noida (Escorts) Delhi
WhatsApp-(# 9711106444 #)Call Girl in Noida Sector 80 Noida (Escorts) Delhi
 
SB_ Scott Pilgrim_ Rough_ RiverPhan (2024)
SB_ Scott Pilgrim_ Rough_ RiverPhan (2024)SB_ Scott Pilgrim_ Rough_ RiverPhan (2024)
SB_ Scott Pilgrim_ Rough_ RiverPhan (2024)
 
如何办理澳洲迪肯大学毕业证(Deakin毕业证书)毕业证成绩单原版一比一
如何办理澳洲迪肯大学毕业证(Deakin毕业证书)毕业证成绩单原版一比一如何办理澳洲迪肯大学毕业证(Deakin毕业证书)毕业证成绩单原版一比一
如何办理澳洲迪肯大学毕业证(Deakin毕业证书)毕业证成绩单原版一比一
 
Call Girls Varanasi Just Call 8617370543Top Class Call Girl Service Available
Call Girls Varanasi Just Call 8617370543Top Class Call Girl Service AvailableCall Girls Varanasi Just Call 8617370543Top Class Call Girl Service Available
Call Girls Varanasi Just Call 8617370543Top Class Call Girl Service Available
 

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