면책 조항 :
답장을 위해 스타일 문제에 집중하고 보안 관점에서 볼 때 ID, 로그인 및 일반 암호가 사용하기에 좋은 매개 변수 집합인지 잊어 버릴 것입니다. 사용자의 권한에 대해 알아 내기 위해 사용하는 기본 데이터 세트에 대한 대답을 추정 할 수 있어야합니다 ...
user.isAdmin()
또한와 동등한 것으로 간주 합니다 IsAdmin(User user)
. 그것은 당신이 선택하는 것입니다.
댓글:
내 권장 사항은 다음 중 하나의 사용자에게만 해당됩니다.
public bool IsAdmin(User user);
또는 다음 라인을 따라 두 가지를 모두 사용하십시오.
public bool IsAdmin(User user); // calls the private method below
private bool IsAdmin(int id, string name, string password);
공개 방법의 이유 :
공개 메소드를 작성할 때 일반적으로 메소드 사용 방법에 대해 생각하는 것이 좋습니다.
이 특정한 경우, 일반적으로이 메소드를 호출하는 이유는 특정 사용자가 관리자인지 확인하기위한 것입니다. 그것이 당신이 필요로하는 방법입니다. 각 발신자가 올바른 매개 변수를 선택하여 전송할 필요가 없도록하고 코드 중복으로 인한 실수의 위험이 있습니다.
개인용 메소드의 이유 :
필요한 매개 변수의 최소 세트 만 수신하는 개인용 메소드가 좋은 경우가 있습니다. 때로는 그렇게 많지 않습니다.
이러한 메서드를 분할 할 때 좋은 점 중 하나는 동일한 클래스의 여러 공용 메서드에서 개인 버전을 호출 할 수 있다는 것입니다. (어떤 이유)에 대한 약간 다른 논리를 가지고 당신이 원하는 경우 예를 들어, Localuser
그리고 RemoteUser
(아마도 / 오프 원격 관리자 켜 설정있다?)
public bool IsAdmin(Localuser user); // Just call private method
public bool IsAdmin(RemoteUser user); // Check if setting is on, then call private method
private bool IsAdmin(int id, string name, string password);
또한 어떤 이유로 든 개인 메소드를 공개해야 할 경우 가능합니다. 로 변경 private
하는 것만 큼 쉽습니다 public
. 이 경우에는 큰 이점처럼 보이지 않을 수도 있지만 때로는 실제로는 이점이 있습니다.
또한 단위 테스트를 수행하면 훨씬 더 많은 원자 테스트를 수행 할 수 있습니다. 일반적으로이 메소드에서 테스트를 실행하기 위해 전체 사용자 오브젝트를 작성할 필요가없는 것이 좋습니다. 그리고 전체 범위를 원하면 두 통화를 모두 테스트 할 수 있습니다.