2. A common problem in most software projects
Technical debts increases over time and the code gets harder and
harder to maintain and add features to
| Sector, Alliance, Offering
3. Feature delivery for most projects
Technical debt
Complex and messy code
Code and logic is duplicated
No common coding standard
Features Delivered
No strict architecture
++
Time
| Sector, Alliance, Offering
5. How to reach ideal delivery?
Software development is complex
Not a single solution but a mix of many different things
• Write a lot of code
• Important to understand the business model
• Readable & maintainable code over fancy code
• Simplicity over complexity
• Decide on a common coding standard
• Reuse code instead of code duplication
• Create a project framework with common code and logic
• Design Patterns – follow generic solutions to commonly occurring problems
o 100s of design patterns exists
– Factory Pattern, MVC Pattern, Command Pattern, Fluent Interface Pattern etc.
• ++
| Sector, Alliance, Offering
6. The Fluent Interface Pattern
One of many design patterns that can contribute to a better code
base
Fluent Interfaces makes the code easier to read and easier to use
due to a simpler API that requires less code
Consists of 2 principles:
• Method chaining - Traditional code requires one line per command, method
chaining allows multiple commands per line
• More readable API – The code can be read like a sentence. Optional as it
requires more typing due to longer names and more code to write
Popular to use in frameworks: Moq, Fluent Nhibernate, FluentData
etc.
| Sector, Alliance, Offering
7. Example – Find a person
Traditional Code:
Fluent Interface Code:
Or:
| Sector, Alliance, Offering
8. A more readable Fluent Interface
Or:
| Sector, Alliance, Offering
9. Designing Fluent Interfaces - Method vs. Property
Use a method when having to
accept one or more values
Use a property when not having
to accept any values
Use a method to finish the call
| Sector, Alliance, Offering
16. Examples from other Frameworks
Moq:
FluentData:
| Sector, Alliance, Offering
17. When to use Fluent Interfaces
Anywhere where it makes the code easier to read and easier to use
Typically in methods that are often invoked
Together with the Gateway Pattern to hide complex 3rd party code or
legacy code
Frameworks
| Sector, Alliance, Offering