2009-10-14 5 views
2

코드 7.6의 7.6 절은 혼란 스럽다. 어떤 스타일이 최고인지 알려주는 몇 가지 샘플 코드 (php)를 첨부했다. 또는 더 나은 것을 제안합니까? 감사코딩 스타일 : 함수 및 절차 표준 코딩

스타일 1

public function register($user, $pass) { 
if($this->model->isRegistered($user) 
{ 
    return false; 
} 
else if($this->twitter->login($user, $pass)) 
{ 
    return $this->model->addUser($user, $pass); 
} 

return false; 
} 

스타일이

public function register($user, $pass) { 
if($this->model->isRegistered($user) 
{ 
    return false; 
} 

$this->twitter->login($user, $pass); 
if($this->twitter->isLoggedIn()) 
{ 
    return $this-model->addUser($user, $pass); 
} 

return false; 
} 

스타일 나는 경우 매우 확실하지 않다하지만 나는 현재 스타일 (1)의 사용을 만들고있어 3

public function register($user, $pass) { 
if($this->model->isRegistered($user) 
{ 
    return false; 
} 

$status = $this->twitter->login($user, $pass); 
if($status) 
{ 
    return $this->model->addUser($user, $pass); 
} 

return false; 
} 

그게 맞아.

+1

이게 정말 문체적인 차이점입니까? – phoebus

+1

솔직히, 어떤 스타일을 선택해야할지 모르겠다. 별 차이가 없을 것이라고 말하고 싶습니다. –

+0

다양한 스타일은 다양한 정도의 가독성을 보여야합니다. 비록 내가 '그들에게 코딩하는 사람인 이래로 그 차이는 내게는 분명하지 않다. 그래서 나는이 질문을하고있다. – lemon

답변

3

입니다. 함수의 실행을 방해하는 조건을 검사하는 중이라면 항상이 스타일을 고수 할 것입니다. 일반적으로 :

function action() 
{ 
    if ($guard_condition1) 
     return $failure; 

    if ($guard_condition2) 
     return $failure; 

    do_action(); 
    return $success; 
} 

그래서 나는 다음과 같은 코드를 다시 작성할 것 :

public function register($user, $pass) 
{ 
    if ($this->model->isRegistered($user)) 
     return false; 

    if (!$this->twitter->login($user, $pass)) 
     return false; 

    return $this->model->addUser($user, $pass); 
} 

을 어쨌든, 당신은 당신이 제안 무엇에 대하여 의견을 필요로하는 경우, 내가 스타일 투표 것 3.

+0

걱정할 필요가 없습니다. – lemon

2

스타일 1에서 "if"와 "else if"가 다른 조건에서 사용되므로 의미가 없습니다.

스타일 2 개 라인 :

$this->twitter->login($user, $pass); 
if($this->twitter->isLoggedIn()) 

어떤 상황에서 읽기 어려운 너무 많이하지만 그것은 적절한입니다.

는 나를 위해 최고의 하나는 내가 너무 무례 소리를하고 싶지 않아하지만 3 개 제안 된 스타일의 아무도 좋아하는 스타일 3.

+0

정의에 따르면'else if'는 항상 앞의'if'와는 다른 조건을가집니다. 그래서 여러분의 이의가 이해되지 않습니다 :-) – Zano