看这个显示用户Profile的页面:
[code]
<h1>Profile</h1>
<p>
Name:
<%= @user.first_name %>
<%= "#{@user.middle_initial}." unless @user.middle_initial.nil? %>
<%= @user.last_name %>
</p>
<% link_to 'Users List', users_path %>
[/code]
当别的页面需要显示用户名时,我们又得将上述代码copy一遍,敏感的开发人员可能已经闻到“[url=http://www.blogjava.net/raimundox/archive/2007/07/10/129436.html]风水[/url]”或bad smell了吧。
好,我们来重构:
[code]
class User < ActiveRecord::Base
def full_name
name = first_name
name += "#{middle_initial}." unless middle_initial.nil?
name += last_name
name
end
end
[/code]
页面就可以这样写了:
[code]
<h1>Profile</h1>
<p>
Name:
<%= @user.full_name %>
</p>
<% link_to 'Users List', users_path %>
[/code]
[code]
<h1>Profile</h1>
<p>
Name:
<%= @user.first_name %>
<%= "#{@user.middle_initial}." unless @user.middle_initial.nil? %>
<%= @user.last_name %>
</p>
<% link_to 'Users List', users_path %>
[/code]
当别的页面需要显示用户名时,我们又得将上述代码copy一遍,敏感的开发人员可能已经闻到“[url=http://www.blogjava.net/raimundox/archive/2007/07/10/129436.html]风水[/url]”或bad smell了吧。
好,我们来重构:
[code]
class User < ActiveRecord::Base
def full_name
name = first_name
name += "#{middle_initial}." unless middle_initial.nil?
name += last_name
name
end
end
[/code]
页面就可以这样写了:
[code]
<h1>Profile</h1>
<p>
Name:
<%= @user.full_name %>
</p>
<% link_to 'Users List', users_path %>
[/code]