Proposed benefits: / * more verbose, but you can see more clearly all the "stuff" your method is using / * easier to re-use partials/helpers, since they're not coupled to instance var names / * easy to tell what data you need loaded to be able to use a helper/partial / top_file.html.haml = render :partial => 'user' / _user.html.haml = user_full_name_markup = render :partial => 'user_friend' / _user_friend.html.haml = @friend.name def user_full_name_markup @user.last_name, @user.first_name end vs / top_file.html.haml render :partial => 'user', :locals => { :user => @user, :friend => @friend } / _user.html.haml = user_full_name_markup(user) = render :partial => 'user_friend', :locals => { :friend => friend } / _user_friend.html.haml = friend.name def user_full_name_markup(user) user.last_name, user.first_name end