-
Recent Posts
Building Backbone Plugins
Backbone apps are plagued with boilerplate code. Eliminate the cruft by building the add-ons and abstractions that you need.
Buy it now, before the price increases (again)!
Amazon affiliate
Recent Comments
- techpines on SEO And Accessibility With HTML5 PushState, Part 1: Introducing PushState
- Matthew Leingang on Git: Oops. I Forgot To Add Those New Files Before Committing
- Carl-Erik Kopseng on View Helpers For Underscore Templates
- Patrick Mulder on Don’t Execute A Backbone.js Route Handler From Your Code
- Jack on Multiple External Monitors On MacBook Pro: Don’t Bother… Yet
Archives
- June 2013
- April 2013
- March 2013
- February 2013
- January 2013
- December 2012
- November 2012
- October 2012
- September 2012
- August 2012
- July 2012
- June 2012
- May 2012
- April 2012
- March 2012
- February 2012
- January 2012
- December 2011
- November 2011
- October 2011
- September 2011
- August 2011
- July 2011
- June 2011
- May 2011
- April 2011
- March 2011
- February 2011
- January 2011
- December 2010
- November 2010
- October 2010
- September 2010
- August 2010
- July 2010
- June 2010
- May 2010
- April 2010
- March 2010
- February 2010
- January 2010
- December 2009
- November 2009
- October 2009
- September 2009
- August 2009
- July 2009
- June 2009
- May 2009
- April 2009
- March 2009
- February 2009
- January 2009
- December 2008
- November 2008
- October 2008
Categories
- .NET
- Accessibility
- Agile
- AJAX
- Albacore
- Analysis and Design
- Android
- AntiPatterns
- AppController
- AppleScript
- Arduino
- Async
- Austin Code Camp
- AutoMocking
- Backbone
- Backbone.EventBinder
- Backbone.Memento
- Backbone.ModelBinding
- Backbone.Syphon
- Behavior Driven Development
- Books
- Books Reviews
- Bootstrap
- Branch-Per-Feature
- Branching Strategies
- Brownfield
- Build Tools
- Bundler
- Business
- C
- C#
- Capybara
- Certification
- ChaiJS
- Classy Inheritance
- Coaching
- Code Review
- Command Line
- CommonJS
- Community
- Compact Framework
- Composite Apps
- Consulting
- Continuous Improvement
- Continuous Integration
- CQRS
- Craftsmanship
- Cucumber
- Daily Standups
- Data Access
- Database
- Debugging
- Deployment
- Design
- Design Patterns
- DLR
- Documentation
- DOM
- Domain Driven Design
- DSL
- E-Books
- ECMAScript
- Education
- Ember
- Fluent NHibernate
- FNH.Contrib
- Functional
- Git
- Goals
- Growl
- HAML
- Handlebars
- Hardware
- Haskell
- HTML5
- IronRuby
- Jasmine
- jasmine-async
- Java
- Javascript
- JohnnyFive
- JQuery
- JSFiddle
- JSON
- Kaizen
- Kanban
- KendoUI
- Knockout
- Lambda Expressions
- Lean Systems
- Linux
- Logs
- LSSC
- LSSC10InfoQ
- MacRuby
- Management
- Marionette
- Math
- Messaging
- Metrics
- Mobile
- MochaJS
- Model-View-Controller
- Model-View-Presenter
- Monads
- MongoDB
- Mongoid
- Networking
- NHibernate
- Ninject
- NodeJS
- NPM
- Open Source
- OSX
- Performance
- Philosophy of Software
- PHP
- Podcast
- Pragmatism
- Presentations
- Principles and Patterns
- Product Reviews
- Productivity
- Prototypal Inheritance
- Prototype
- Pusher
- PushState
- Quality
- Rails
- Rake
- Re-Post
- Refactoring
- Resharper
- REST
- Retrospectives
- RhinoMocks
- Risk Management
- RSpec
- Ruby
- SASS
- Screencast
- Security
- Selenium
- Semantics
- SEO
- SignalR
- Sinatra
- SlideChop
- Smoke Test
- Socket.IO
- Source Control
- Stack Trace
- Standardized Work
- Subversion
- Technical Debt
- Teensy
- Telerik
- Test Automation
- Testing
- Theory Of Constraints
- Thor
- Throughput
- Tools and Vendors
- Twitter Bootstrap
- Uncategorized
- Underscore
- Unit Testing
- User Experience
- Validation
- Vim
- Visual Studio
- Vlad
- WatchMeCode
- Web Sockets
- WinForms
- WinJS
- Workflow
- Xcode
Meta
Category Archives: Refactoring
Dependency Inversion: ‘Abstraction’ Does Not Mean ‘Interface’
A coworker recently asked if we should always abstract every object into an interface in order to fulfill the Dependency Inversion Principle (DIP). The question stunned me at first, honestly. I knew in my head that this was a bad … Continue reading
DI and IoC: Creating And Working With A Cloud Of Objects
A few months ago, I posted some thoughts and questions on the proper use of Inversion of Control (IoC) containers and the Dependency Inversion (DI) principle. Since then, I’ve had the opportunity to do some additional study and teaching of … Continue reading
Also posted in .NET, Analysis and Design, Design Patterns, Principles and Patterns, Unit Testing
6 Comments
Separation of Concerns by example: Part 5
In our last example, disaster finally struck our quaint little application. A strange defect showed up, which would be almost impossible to reproduce back on our developer machine. But because we’ve broken out our dependencies, our CustomerFinder became easier to … Continue reading
Also posted in AntiPatterns, Principles and Patterns, Quality, RSpec, Test Automation, Testing, Unit Testing
19 Comments
Separation of Concerns by example: Part 4
In the last part, we finally broke out the caching and data access concerns from our original class. The series so far includes: Separation of Concerns – how not to do it Separation of Concerns by example: Part 1 – … Continue reading
Also posted in Agile, Analysis and Design, Continuous Improvement, Productivity, Quality
42 Comments
Entities and the Law of Demeter
The Law of Demeter, and its corresponding code smell, Inappropriate Intimacy, are some of the best bang-for-your-buck code smells that you can address. The basic idea behind each of these concepts is code related to an object should probably be … Continue reading
Also posted in Behavior Driven Development, Command Line, Git, Productivity, RSpec, Ruby, Source Control, Test Automation, Testing, Tools and Vendors, Unit Testing, Vim
7 Comments
Separation of Concerns by example: Part 3
We made quite a bit of progress separating out the concerns in Part 2, but there are still some issues with our current design. Other parts in this series include: Separation of Concerns – how not to do it Separation … Continue reading
Separation of Concerns by example: Part 2
Separation of concerns is one of the fundamental tenets of good object-oriented design. Anyone can throw a bunch of code in a method and call it a day, but that’s not the most maintainable approach. So far, we’ve looked at: … Continue reading
Also posted in Pragmatism, Product Reviews
Leave a comment
Separation of Concerns by example: Part 1
In the prelude to this series, I looked at a snippet of code that took the kitchen sink approach to concerns. Here’s what we started out with: public class CustomerManager { [DataObjectMethod(DataObjectMethodType.Select, false)] public static List<Customer> GetCustomers(int startRowIndex, int maximumRows) … Continue reading
Also posted in Analysis and Design, Pragmatism, Productivity, Quality, Risk Management, Testing
12 Comments
Separation of Concerns – how not to do it
In a recent article on layered LINQ applications in the latest ASP.NET PRO magazine (no link, you have to pay), the author proposes separating your application into three distinct layers: User Interface (UI) layer Business Logic Layer (BLL) Data Access … Continue reading
Also posted in Principles and Patterns, Product Reviews
4 Comments
Failures of aimless large-scale refactorings
At the recent Austin Code Camp, I heard a few stories after my Legacy Code talk about teams attacking their legacy code in prolonged refactoring binges that never seemed to end. Never ending, because no one had a good idea … Continue reading
Also posted in Monads, Principles and Patterns, Ruby
3 Comments
