Adaptive Code via C#: Agile coding with design patterns and SOLID principles (Developer Reference)

Adaptive Code via C#: Agile coding with design patterns and SOLID principles (Developer Reference)

Gary McLean Hall

Language: English

Pages: 448

ISBN: 0735683204

Format: PDF / Kindle (mobi) / ePub

Agile coding with design patterns and SOLID principles

As every developer knows, requirements are subject to change. But when you build adaptability into your code, you can respond to change more easily and avoid disruptive rework. Focusing on Agile programming, this book describes the best practices, principles, and patterns that enable you to create flexible, adaptive code--and deliver better business value.


Expert guidance to bridge the gap between theory and practice 

  • Get grounded in Scrum: artifacts, roles, metrics, phases 
  • Organize and manage architectural dependencies 
  • Review best practices for patterns and anti-patterns 
  • Master SOLID principles: single-responsibility, open/closed, Liskov substitution 
  • Manage the versatility of interfaces for adaptive code 
  • Perform unit testing and refactoring in tandem 
  • See how delegation and abstraction impact code adaptability 
  • Learn best ways to implement dependency interjection 
  • Apply what you learn to a pragmatic, agile coding project


Get code samples at:

Apache: The Definitive Guide

Functional Programming in C#: Classic Programming Techniques for Modern Projects (Wrox Programmer to Programmer)

Blender Game Engine: Beginner's Guide

Glitch: The Hidden Impact of Faulty Software

The Internet Peering Playbook: Connecting to the Core of the Internet

AutoCAD 2006 For Dummies















But also to iteratively refine the development process. This encourages teams to adopt subtle changes to ensure that the process is working for them, given their unique situations and context. After discussing the constituent elements of Scrum, this chapter examines its flaws. This chapter sets the scene for the rest of the book, which details how to implement code in such a way that it remains adaptive to the change that is embraced by the Scrum process. There is little point in having a process.

Common kinds of cards you will create, use the most commonly available index cards and sticky notes. The last thing you need is to run out of index cards, so try to use the most commonly available colors. Who creates cards? The simple answer to the question, “Who can create the cards?” is: anyone. This does, of course, come with some conditions. Though anyone can create a card, its validity, priority, criticality, and other such states are not something that should be decided by one person.

Points. FIGURE 1-6  Min/max/average chart showing correlation between estimated effort and actual effort. The main takeaway from this chart is that larger stories have correspondingly larger ranges—the larger a story is assumed to be, the harder it is to accurately predict how long it will take to complete. Velocity Over multiple sprints, it is possible to calculate a running average of the achieved story points. Let’s say that a team has completed three sprints, meeting the definition of done.

Aspects of continually managing dependencies. This includes avoiding anti-patterns and, more importantly, understanding why these common patterns are anti-patterns. Conversely, some patterns are benevolent and should be embraced; these are offered as direct alternatives to the noted anti-patterns. Patterns and anti-patterns As an engineering discipline, object-oriented software development is a relatively new endeavor. Over the last few decades, some repeatable collaborations between classes and.

Occur only if the AccountService is constructed with a null passed in as its constructor parameter. Because a valid account repository is a required dependency for the account service, you could say that this is a precondition of the constructor. Thus, you can write the test in Listing 4-18. CHAPTER 4  Unit testing and refactoring 143 From the Library of Ida Schander LISTING 4-18  No Arrange and no Assert, yet this is a valid test pattern for exceptions. [TestMethod].

Download sample