2011-03-18 3 views
4

는 다음과 같은 방법 가정 : 여기어떤 식별자 변수가 메서드에 인수로 전달하는 것이 더 낫습니까?

public void ShareClassStuff(int shareClassId) 
{ 
    var shareClass = _shareClassService.GetShareClassById(shareClassId); 

    (if shareClass != null) 
     var shareClassStat = _shareClassService.GetShareClassStat(shareClass.Id); 

    //go on to do stuff with shareClass & shareClassStat 
} 

을, 내가 필요로하는 개체를 반환하는 서비스에 shareClassId를 전달하여 shareClass를 얻을. 다음으로 다른 데이터를 얻기 위해 다른 메소드에 ID를 전달해야한다.

내가 가진 질문은 두 번째 서비스 호출에서 shareClassId 변수를 사용하는 것이 더 나은지 여부입니다.

GetShareClassStat(shareClassId) 

또는 Id shareClass 객체의 속성.

GetShareClassStat(shareClass.Id) 

또는 중요합니까?

답변

0

성능 측면에서 중요하지 않다고 생각하지만 shareClassId를 두 번째 메서드로 전달하고 shareClass.Id는 전달하지 않습니다.

이유는 shareClass.Id를 사용할 때 코드 위치에 의존하게됩니다. _shareClassService.GetShareClassById는 _shareClassService.GetShareClassStat보다 먼저 호출되어야합니다. 또한 Id 속성을 제대로 채우기 위해 _shareClassService.GetShareClassById 구현에 대한 종속성을 소개합니다.

0

별로 중요하지 않다고 생각합니다.

shareClass.Id는 속성입니다 (또는 최적화에 의해 인라인되지 않을 수 있습니다) 따라서 메서드 호출 하나는 아마 두 가지를 주장 할 수 있지만

0

shareClassId을 전달하는 아주 작은 장점이있다. shareClassId은 단순한 정수입니다.

매개 변수를 전달할 때 이점이 매우 적습니다.

하나가 매개 변수를 사용하여 선호 할 또 다른 이유가있다 업데이트 : 그것은 consistant입니다. 첫 번째 "ID 별 조회"에 매개 변수를 사용 했으므로 두 번째 매개 변수를 다시 사용하십시오.

위의 두 가지 이유 모두 대단히 매력적이지 않지만 사용자가 질문 한 이후로 나는 당신이 상상할 수있는 추론에 관심이 있다고 가정합니다.

+0

'shareClass' 자체가 전달되면 속성은 여전히 ​​호출 된 메소드 내에서 평가되어야한다고 가정하는 것이 안전하다고 생각합니다. –

+0

@ 존 : 질문 : 내가 가지고있는 ID를 전달해야하고 ID를 사용하여 개체를 검색하는 데 사용 된 개체의 ID 속성과 동일한 값을 사용해야하는지, 아니면 속성을 사용하고 사용해야합니까? 'GetShareClassStat' 메소드는 ID로부터 객체를 리턴하는 또 다른 룩업 메소드 일뿐입니다. 대답은 유용하지만이 시나리오에는 적용되지 않습니다. – Tergiver

+0

나는 확실히 말할 필요가 있다고 더 많이 알 필요가 있다고 생각한다.나는 네가 옳다면 내 대답은 * 유용하다고 말하고 싶다. 그리고 OP가 ID를 전달하도록 이끌어야한다. 논리적으로 의존해야하는 것이기 때문이다. –

0

중요하지 않습니다. 나중에 어떤 이유로 GetShareClassById() 메서드가 null을 반환하지 않고 빈 클래스를 반환하기 시작한 경우에만 나중에 문제가됩니다. 이제 잘못된 ID를 가진 클래스가 생겼습니다. 그것이 일어날 것입니다. 단지 문제가 될 것이라고 말하는 것입니다.

속도가 0.0001 초인 경우 변수를 전달하십시오.

관련 문제