Inheriting Code
Anthony Eden
Tuesday, June 8, 2010
Who are you?
Tuesday, June 8, 2010
Explorer
Tuesday, June 8, 2010
You’ll need to be willing to travel down uncharted paths and create a map to find your way out.
Historian
Tuesday, June 8, 2010
You’ll need to understand what got the code here.
Forensic Analyst
Tuesday, June 8, 2010
You’ll need to understand the motives by looking at the crime scene.
Psychic
Tuesday, June 8, 2010
You’ll need to read minds.
Sadist
Tuesday, June 8, 2010
You’ll need to be able to hurt the code.
MasochistTuesday, June 8, 2010
You’ll need to be able to withstand the pain that the code causes you.
Prepare
Tuesday, June 8, 2010
Adjust your mode of thinking.
Assume nothing
Tuesday, June 8, 2010
You are not smarter, just different
Tuesday, June 8, 2010
Put yourself in the mind of the author. Keep an open mind about implementations that are different from how you might do it.Understand why they may have written code in the way they did.
Learn
Tuesday, June 8, 2010
Read
Tuesday, June 8, 2010
Read the codeRead the documentation
Cause and Effect
Tuesday, June 8, 2010
What were the business needs that caused this code to be written?What other factors were present when the code was written?
Find the dragons
Tuesday, June 8, 2010
What code was written to solve an immediate problem, but never refactored?What code was written to old APIs?What code was written in different styles by different developers?
Act
Tuesday, June 8, 2010
Resolve DependenciesTuesday, June 8, 2010
Run the test suite
Tuesday, June 8, 2010
Write tests where there are none
Tuesday, June 8, 2010
Top down approach with Cucumber.Bottom up approach with RSpec, Shoulda or plain Test::Unit.If tests are already written then start Regardless you’ll need both.
Simplify complex code
Tuesday, June 8, 2010
When a test is written you can refactor it.
Reduce
Tuesday, June 8, 2010
Reduce the amount of code.Remove unused methods and classes.Version control is your friend.
Have a rollback strategy
Tuesday, June 8, 2010
You will misunderstand the purpose of some of the code.Be able to rollback easily.Version control is essential.Make small changes.
Make small changes
Tuesday, June 8, 2010
Small changes are easier to fix.Small changes are easier to undo.
CompartmentalizeTuesday, June 8, 2010
Break down monolithic code into smaller chunks.Break down large features into smaller ones.
Protectthe data
Tuesday, June 8, 2010
Along with code you’ll be inheriting data.
Write for maintainabilityTuesday, June 8, 2010
New features are always tested.
Follow conventions
Tuesday, June 8, 2010
Rails conventions are your friend.
Deploy Early, Deploy Often
Tuesday, June 8, 2010
Build a better legacy
Tuesday, June 8, 2010
Share knowledge
Tuesday, June 8, 2010
Pairing helps tremendously herePerform code reviews
http://www.flickr.com/photos/natedreger/4272271989/http://www.flickr.com/photos/atelier_tee/212176187/
http://www.flickr.com/photos/h-k-d/3617751660/http://www.flickr.com/photos/vogelium/2623770180/
http://www.flickr.com/photos/9619972@N08/2636808004/http://www.flickr.com/photos/emeraldrose/3587025487/
http://www.flickr.com/photos/mcgraths/3248483447/http://www.flickr.com/photos/inhalingsounds/4444522392/http://www.flickr.com/photos/rossinabossio/289756071/
http://www.flickr.com/photos/wili/2628869994/http://www.flickr.com/photos/fofurasfelinas/2549402702/http://www.flickr.com/photos/ironrodart/4154904299/http://www.flickr.com/photos/myrmician/228790898/
http://www.flickr.com/photos/29487767@N02/3644730871/http://www.flickr.com/photos/teacherafael/2038442136/
http://www.flickr.com/photos/gamene/4015192611/http://www.flickr.com/photos/shewatchedthesky/2835193235/
http://www.flickr.com/photos/myreflex/180524429/http://www.flickr.com/photos/tzofia/202684786/
http://www.flickr.com/photos/capedcrusader/3713232485/http://www.flickr.com/photos/jaxxon/93296381/http://www.flickr.com/photos/jbird/19650368/
http://www.flickr.com/photos/joeharper/3872936498/http://www.flickr.com/photos/bassclarinetist/4448830860/
http://www.flickr.com/photos/winterofdiscontent/3301816514/http://www.flickr.com/photos/74274915@N00/3554610230/
http://www.flickr.com/photos/tal_axl/4297212753/http://www.flickr.com/photos/essjay/2397379457/
Tuesday, June 8, 2010
Top Related