2013-05-20 3 views
0
나는 세 (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 API에서 특정 정보를 가져올 URL 인을 제외한 과 거의 동일하기 때문에 DRY 규칙 (직접 반복하지 마십시오)이 깨집니다.

질문 : 리팩토링의 관점에서

  1. , 내 코드 문제 있나요?
  2. 3 가지 기능을 하나의 기능으로 결합해야합니까?
+1

당신은 하나에 모든 기능을 결합한다 때문 만이 코드를 다시 OUPS의 주요 특징은 유용성 –

+1

twitter 메소드에 전달하기 직전에 변수에 문자열을 할당하는 이유는 무엇입니까? 당신의 방법은 왜 개인적입니까? 대답에 대한 +1 – webbiedave

+0

+1. 변수에 문자열을 할당 했으므로 리턴 된 줄을 이해하는 것이 더 쉬울 것이라고 생각했기 때문에 return $ twitter-> setGetfield ($ getfield) -> buildOauth ($ url, $ requestMethod) -> performRequest(); – Anthony

답변

1

나는이 같은 리팩토링과 같습니다.

private function get_favorites_list($username, $twitter, $path) 
    {   
     $path = sanitize($path); 
     $getfield = '?screen_name=' . $username; 
     $url = 'https://api.twitter.com/1.1/' . $path;  
     $requestMethod = 'GET';  
     return $twitter->setGetfield($getfield) 
         ->buildOauth($url, $requestMethod) 
         ->performRequest();  
    } 

내가 당신이 어떤 취약점에 크리프를 허용하지 않도록 $path 살균 추천 할 것입니다

+0

+1 와우는 단순한 리팩터링으로 심지어 함수 이름도 변경하여 3 대신에 하나의 함수를 사용할 수있게 해줍니다 .Cal, thanks – Anthony

+1

@Anthony 참으로. 함수 사이의 공통점을 발견하면 언제든지이 작업을 수행 할 수 있습니다. – Woot4Moo

+0

+ 1 소독 $ 경로에 대한 조언 주셔서 감사합니다 – Anthony