011 重构用户名(第二部分)

简介:
Testing and refactoring go hand in hand. Refactoring is all about improving code without changing its behavior. Testing is all about making sure you don't change the behavior while you are improving the code.
 
测试和重构一般都是联合起来适用的。重构用来改良代码,而不对其行为做改动。测试是用来确保你在改良代码的同时不改变其行为。
 
在重构full_name方法之前,我们先加一个单元测试。
#user_test.rb
require File.dirname(__FILE__) + '/../test_helper'
 
class UserTest < Test::Unit::TestCase
   fixtures :users
   def test_full_name_without_milld_initial
          user=User.new(:first_name=>"John", :last_name=>'Doe')
          assert_equal 'John Doe', user.full_name
   end
 
   
   def test_full_name_with_milld_initial
          user=User.new(:first_name=>"John", :middle_initial=>'H', :last_name=>'Doe')
          assert_equal 'John H. Doe', user.full_name
   end
end
 
打开autotest
 
#model/user.rb
首先,将full_name方法的内容替换成:
 
[first_name, middle_initial, last_name].join(' ')
这样2个测试都没通过,因为middle_initial不存在,中间会加两个空格,如果middle_initial存在,少了一个"."
 
然后想到,这个代码变成
[first_name, middle_initial, last_name].compact.join(' ')
用compact方法把多的空格变成一个。然后join到一起,但是"."的问题还是没解决。
那么对于middle_initial我们调用一个方法,如果它存在的话就变成相应的形式即可。
 
最后就写成这样:
def  full_name
  [first_name, middle_initial_with_period, last_name].compact.join( ' ')
end

def  middle_initial_with_period
   "#{middle_initial}."  unless middle_initial.blank?
end
 
这儿还有一点还要注意,一般不要适用.nil?判断是否为空,用.blank?方法。
 




本文转自 fsjoy1983 51CTO博客,原文链接:http://blog.51cto.com/fsjoy/131603,如需转载请自行联系原作者
目录
相关文章
|
2月前
|
前端开发 数据安全/隐私保护
react antd 实现修改密码(原密码,新密码,再次输入新密码,新密码增加正则复杂度校验)
文章介绍了如何在React项目中使用Ant Design实现一个修改密码的组件,包括原密码、新密码和再次输入新密码的表单项,并为新密码增加了正则表达式复杂度校验。
74 0
react antd 实现修改密码(原密码,新密码,再次输入新密码,新密码增加正则复杂度校验)
|
数据库
【JavaWeb】用户名校验案例
【JavaWeb】用户名校验案例
|
安全 Java 数据安全/隐私保护
案例之密码模式测试|学习笔记
快速学习案例之密码模式测试
案例之密码模式测试|学习笔记
|
PHP
laravel-admin 自定义登陆逻辑,补充原有账号密码登录
laravel-admin 自定义登陆逻辑,补充原有账号密码登录
351 0
|
数据安全/隐私保护 C++
C/C++编程题之密码验证合格程序
C/C++编程题之密码验证合格程序
|
JavaScript 前端开发 数据安全/隐私保护
前端案例:简易登录表单的制作,包括用户名、密码、随机验证码(代码完整,复制即用)
前端案例:简易登录表单的制作,包括用户名、密码、随机验证码(代码完整,复制即用)
534 0
前端案例:简易登录表单的制作,包括用户名、密码、随机验证码(代码完整,复制即用)
|
测试技术 数据安全/隐私保护
|
存储 前端开发 安全
登录重构小记
登录重构小记
135 0
登录重构小记
|
算法 数据安全/隐私保护
密码验证合格程序(算法)
密码验证合格程序(算法)
|
前端开发
前端工作小结73-进行输入成功后验证
前端工作小结73-进行输入成功后验证
68 0