Dealing with duplicated code

« »

We’ve all seen it: we’re working along, and we come across code that just has a feel to it. It’s like déjà vu. You’ve seen this code before. You open another file – sure enough, there it is. The same code. Almost line for line.

In large code bases, it’s likely that there are dozens if not hundreds of similar behaviors that have to be completed more than once. And as code grows, is worked on by multiple developers, or just for the sake of speed, the same code gets copied or rewritten over and over again in different places.

But this creates a nightmare to maintain. Change one bit of the code in one place and you risk breaking all the other bits of duplicated code elsewhere. Lucky for you, there’s something you can do about duplicated code.

The beauty of abstraction

One way that we can defeat duplicate code is by abstracting the code out into a base class or object.

This strategy works well when the code meets the following criteria:

The idea behind object oriented programming is to reduce code duplication by encouraging reuse. And inheritance allows us to reuse code by moving common, core elements into base classes that are extended by objects that do similar jobs.

Of course, this doesn’t work every time. Sometimes, the duplicated code is in parts of the app that do very different things. But never fear: there’s something else we can do in that case.

Creating utility classes and libraries

When you run across duplicated code in classes or modules that have disparate jobs, it’s impossible to have these extend from a common base class. But that doesn’t mean we can’t consolidate the duplicated code in one place. That’s what utilities and libraries are for.

For example, if the same code to manipulate a set of strings is scattered throughout your application, this is a prime candidate for consolidating these functions into a single string manipulation library.

Another great example is database code. Sure, your database code may be scattered through modules that have different responsibilities, but that doesn’t mean you can’t take that code and place it in a single library that’s easy to maintain and use.

Learn to make great design decisions

On June 8th, I’ll be hosting the Mastering Object Oriented Design Seminar. This four-hour seminar will be laser-focused on helping you make great object oriented design decisions. Struggling with how to lay out your app? Wish you could make framework-level decisions? The Mastering Object Oriented Design Seminar is for you!

Registration opens Thursday, May 14th. The early bird cost is $179 – a discount of $50 off the full ticket price. However, I’ll be using a rolling early bird discount, meaning that for every day you wait, the price goes up! Also, due to technical limitations, there are only 45 seats available.

Want to get a sweet discount off the ticket price? Buy a copy of Mastering Object Oriented PHP by Thursday morning and you’ll receive $20 off the registration fee!

Brandon Savage is the author of Mastering Object Oriented PHP and Practical Design Patterns in PHP

Posted on 5/15/2013 at 7:00 am
Categories: Best Practices, PHP 5, Object-Oriented Development, PHP

There are currently no comments.

« »

Copyright © 2023 by Brandon Savage. All rights reserved.