Exploring Software Extensibility
With chapters selected by Dane Hillard
  • July 2020
  • ISBN 9781617298769
  • 115 pages
Returning to code days, or even years, after its creation can feel foreign—even if you wrote it! That’s why it’s so important to write flexible, extensible code that’s easy for you and others to painlessly reuse and customize in the future. Exploring Software Extensibility showcases software extensibility concepts that will benefit developers at any stage of their careers. With a code base that you can easily navigate, your job will be more fun than ever before!

About the Technology

Exploring Software Extensibility is a collection of chapters from three Manning books chosen by author and seasoned web developer Dane Hillard. The first two chapters show you how to bake flexibility into your code base by making it into manageable chunks. Then you’re ready for the final two chapters that will help you actualize some of the many benefits of extensible code. This sampler is a great first step to creating software that’s a joy to maintain, update, and extend!
Table of Contents detailed table of contents


Part 1: Separation of concerns in practice

Separation of concerns in practice

6.1 A command-line bookmarking application

6.2 A tour of Bark

6.2.1 The benefits of separation: Reprise

6.3 An initial code structure, by concern

6.3.1 The persistence layer

6.3.2 The business logic layer

6.3.3 The presentation layer

Part 2: Extensibility and flexibility

Extensibility and flexibility

7.1 What is extensible code?

7.1.1 Adding new behaviors

7.1.2 Modifying existing behaviors

7.1.3 Loose coupling

7.2 Solutions for rigidity

7.2.1 Letting go: Inversion of control

7.2.2 The devil’s in the details: Relying on interfaces

7.2.3 Fighting entropy: The robustness principle

7.3 An exercise in extension

Part 3: Changing the behavior of services

Changing the behavior of services

9.1 Introduce constructor arguments to make behavior configurable

9.2 Introduce constructor arguments to make behavior replaceable

9.3 Compose abstractions to achieve more complicated behavior

9.4 Decorate existing behavior

9.5 Use notification objects or event listeners for additional behavior

9.6 Don’t use inheritance to change an object’s behavior

9.6.1 When is it okay to use inheritance?

9.7 Mark classes as final by default

9.8 Mark methods and properties private by default

Part 4: Evolving an API design

Evolving an API design

9.1 Designing API evolutions

9.1.1 Avoiding breaking changes in output data

9.1.2 Avoiding breaking changes to input data and parameters

9.1.3 Avoiding breaking changes in success and error feedback

9.1.4 Avoiding breaking changes to goals and flows

9.1.5 Avoiding security breaches and breaking changes

9.1.6 Being aware of the invisible interface contract

9.1.7 Introducing a breaking change is not always a problem

9.2 Versioning an API

9.2.1 Contrasting API and implementation versioning

9.2.2 Choosing an API versioning representation from the consumer’s perspective

9.2.3 Choosing API versioning granularity

9.2.4 Understanding the impact of API versioning beyond design

9.3 Designing APIs with extensibility in mind

9.3.1 Designing extensible data

9.3.2 Designing extensible interactions

9.3.3 Designing extensible flows

9.3.4 Designing extensible APIs

What's inside

  • “Separation of Concerns in Practice” – Chapter 6 from Practices of the Python Pro by Dane Hillard
  • “Extensibility and Flexibility”—Chapter 7 from Practices of the Python Pro by Dane Hillard
  • “Changing the Behavior of Services”—Chapter 9 from Object Design Style Guide by Matthias Noback
  • “Evolving an API Design” – Chapter 9 from The Design of Web APIs by Arnaud Lauret

About the author

Dane Hillard has spent the majority of his development career using Python to build web applications.

placing your order...

Don't refresh or navigate away from the page.
eBook $0.00 PDF only + liveBook
Exploring Software Extensibility (eBook) added to cart
continue shopping
go to cart

Prices displayed in rupees will be charged in USD when you check out.

FREE domestic shipping on three or more pBooks