때때로 시퀀스 다이어그램을 구현할 때와 같이 설정된 순서로 수행해야하는 작업 목록 만 있습니다. 시퀀스 변경을 통해 미묘한 버그를 유발하는 리펙토링을 방지하기 위해 코드 실행 순서를 적용하는 가장 좋은 방법은 무엇입니까?코드 실행 순서 적용
기존 단위 테스트에서 foo() 및 bar()의 실행 순서를 변경하면 발생하는 문제를 파악할 수 없다고 가정 해 봅니다.
내가 본과 사용했던 방법 중 몇 :
댓글 (그들을 이해 &을 읽는 사람에 의존) :
// do this
foo();
// then this
bar();유창함 문법을 (코드를 영어와 같이 읽고 더 나은 리펙토링을 방해하도록) :
obj
.Do
.foo()
.Then
.bar();상태 변수 balking & (너무 정교) : 기능에 논리 블록을 그룹화
foo_done=false;
if(foo()) foo_done=true;
if(foo_done) bar(); else throw_an_exception;:
void foo_bar()
{
foo();
bar();
}
... 많은 설명이 더 너무 추한 (중첩이 이벤트는, 함수 포인터의 배열, 이름 기능 (시작), 중동() 및 종료() ...) .
이런 종류의 작업을 수행하는 데있어 우수한 패턴이 있습니까?
더 구체적인 예가 더 나은 답변을 이끌어 낼 수 있다고 생각합니다. 일을 완수해야하는 순서는 얼마나 엄격합니까? 정확한 순서로 몇 가지 메소드를 항상 호출해야하는 경우, 올바른 순서로 모든 메소드를 호출하는 void doEverything()에 무엇이 잘못된지에 대한 오류가 발생하지 않습니다. 임시 주문에서 작업을 호출해야 할 경우 어떤 제약이 있습니까? 왜 특정 순서로 호출해야합니까? 그들은 어떤 일반적인 상태에서 작동합니까?부작용이 있습니까? –