Using Code Metrics for Targeted Code Refactoring by Andrew Glover

Sponsored by
NFJS

ABSTRACT:  Using Code Metrics for Targeted Code Refactoring

Often times, candidate code for refactoring is based upon a source file’s smell, which its spotting can take time to acquire and is largely based upon subjective determinations. The proper use of code metrics, such as Cyclomatic Complexity, Fan-In, Fan-Out, and Depth of Inheritance can also facilitate the discovery of candidate code which is in need of refactoring. For example, Cyclomatic Complexity is adept at spotting methods containing a high degree of conditional logic, which, conseqently, can be replaced with polymorphism as elaborated in Martin Fowler’s seminal work, Refactoring with the Replace Conditional with Polymorphism pattern. Additionally, excessively deep hierarchy trees create problematic testing targets, which can be broken out into separate objects with Fowler’s Replace Inheritance with Delegation and Collapse Hierarchy patterns. Fan-In and Fan-Out are quite effective at pinpointing brittle code, which can be refactored into a more stable state with a plethora of patterns including Extract Hiearchy and Extract Class. The knowledge of how to effectively spot smelly code and replace it with proven patterns will ultimately lead to a more stable, maintainable and elegant code
base.

SPEAKER BIO:  Andrew Glover

GloverAndrew Glover is the founder and CEO of Vanward Technologies, a Washington, DC, metro area company specializing in the construction of automated testing frameworks, which lower software bug counts, reduce integration and testing times, and improve overall code stability. Mr. Glover’s career includes leadership in software development for such notable companies as IBM, Philips Electronics, and Proctor & Gamble and is the co-author of Java Testing Patterns (Wiley).

MEETING SLIDES:
Refactor Slides PDF

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s