我重构一个简单的Twitter应用程序时,我注意到,似乎是三(3)主要的代码在以下三个函数的形式气味我写道:重构3个功能
private function get_friend_list($username, $twitter)
{
$getfield = '?screen_name=' . $username;
$url = 'https://api.twitter.com/1.1/users/show.json';
$requestMethod = 'GET';
return $twitter->setGetfield($getfield)
->buildOauth($url, $requestMethod)
->performRequest();
}
private function get_user_timeline($username, $twitter)
{
$getfield = '?screen_name=' . $username;
$url = 'https://api.twitter.com/1.1/statuses/user_timeline.json';
$requestMethod = 'GET';
return $twitter->setGetfield($getfield)
->buildOauth($url, $requestMethod)
->performRequest();
}
private function get_favorites_list($username, $twitter)
{
$getfield = '?screen_name=' . $username;
$url = 'https://api.twitter.com/1.1/favorites/list.json';
$requestMethod = 'GET';
return $twitter->setGetfield($getfield)
->buildOauth($url, $requestMethod)
->performRequest();
}
这三个函数的每个返回关于Twitter用户的不同信息。但是,他们违反DRY规则(不要重复自己),因为每个函数几乎完全相同,除了用于从Twitter API获取特定信息的URL。
问题:
- 从重构的角度来看,是有什么错我的代码?
- 我应该将三个函数组合成一个函数吗?
您应该所有的功能组合成一个仅仅是因为代码重用 - 可用性是OOPS –
的主要功能为什么在将字符串传递给Twitter方法之前将字符串赋值给变量?为什么你的方法是私人的? – webbiedave
+1谢谢你的回复。我将字符串分配给变量,因为我认为它会更容易理解返回的行(返回$ twitter-> setGetfield($ getfield) - > buildOauth($ url,$ requestMethod) - > performRequest(); – Anthony