2011-07-04 3 views
1

클래스의 일부 메서드가 특정 순서로 호출되어야합니다. 이러한 메소드가 부적절하게 호출되면 (자), 오브젝트는 올바르게 동작하지 않게됩니다. 객체가 유효한 상태인지 확인하는 방법에는 몇 가지 단언이 있습니다. 어떤 사람이 특정 순서로 호출해야하는 코드를 읽으려면 다음 사람과 통신하기 위해 어떤 이름 지정 규칙을 사용할 수 있습니까?특정 순서로 호출해야하는 메소드의 이름 지정 규칙은 무엇입니까?

거대한 방법으로 전환하는 것이 가능하지만 거대한 방법은 문제를 만드는 좋은 방법입니다. (이 시퀀스를 트리거 할 수있는 것보다 두 가지 방법이 있으므로 1 개의 거대한 메서드로 인해 중복 될 수도 있습니다.)

메서드를 순서대로 호출해야하지만 주석은 덜 유용하다고 설명하는 주석을 작성할 수 있습니다 명확하게 명명 된 방법.

제안 사항?

답변

4

첫 번째 함수의 상태가 두 번째 함수의 매개 변수로 전달되므로 리팩토링이 가능합니까? 그렇다면 피할 수없는 것입니까?

의견이나 주장이 있다면 매우 잘하고 있습니다.

그러나 "이 코드를 하나의 거대한 메서드로 변환 할 수 있습니다"라는 말은 외부 코드처럼 어떤 식 으로든 중간 상태에 액세스 할 필요가 없다는 것을 의미합니다. 그렇다면 왜 여러 개의 개인 메소드를 연속적으로 호출하는 하나의 공용 메소드를 작성하지 않는가? 뭔가 같은 : 완벽하지,하지만 순서가 하나 개의 기능에 대한 중앙 집중화 된 경우, 그것은 그들이 와서해야 어떤 순서로 볼 상당히 쉽게

FroblicateWeazel() { 
    // Need to be in this order: 
    FroblicateWeazel_Init(); 
    FroblicateWeazel_PerformCals(); 
    FroblicateWeazel_OutputCalcs(); 
    FroblicateWeazel_Cleanup(); 
} 

0

메시지 다이제스트 및 암호화/복호화 루틴가 종종 있습니다. 설정하려면 _init() 방법을 사용하고, 새 데이터를 추가하려면 _update()을, 최종 결과를 반환하고 다시 눈물을 흘리는 방법은 _final()입니다.

관련 문제