2013-10-29 1 views
0

이것은 설계상의 문제입니다. 구현을 기대하지 않습니다.C++ 변수 값과 규칙을 적용 할 객체를 디자인하십시오.

다양한 유형의 여러 매개 변수와 해당 매개 변수를 테스트하는 (별도로 구성) 규칙을 사용하는 객체를 "올바르게"설계하면 매개 변수의 값이 관련된 테스트를 통과하는지 여부가 출력됩니다 그들과 함께?

"적절하게"가능한 한 효율적이어야하며 구성에 새로운 규칙을 추가하고 컴파일하지 않고 더 많은 매개 변수를 전달하기 만하면됩니다. 게다가, 나는 (나는 희망한다) 규칙 구성이 전달되는 매개 변수의 인덱스를 (현재 구현이하는 것처럼) 알고 멋지게 설계된 코드를 생성 할 것을 요구해서는 안된다.

감사합니다.

인터페이스의 기본 예제는 다음과 같은 것이다 :

구성 :

num_rules: 2 
rule0: 
    parameter_index: 0 
    comparison_operator: gt 
    value: 12.3 
rule1: 
    parameter_index: 1 
    comparison_operator: eq 
    value: 19 

추천 개체 :

class RecoObj { 
public: 
    RecoObj(char *configFilename); 
    bool recommend(float testParameter[]); // Returns true if all tests pass 
... 
} 

이 몇 가지 문제를 가지고 내 현재 설정입니다. 모든 매개 변수가 부동 소수점이어야하고 규칙이 비교 대상인 testParameter 배열의 인덱스를 알고 있어야합니다 (즉 구성 작성자는 프로그래머가 해당 배열을로드하는 방법을 알고 있어야 함). 이 문제에 대한 더 나은 설계 솔루션이있는 것처럼 느껴집니다.

+2

무슨 뜻인지 확실하지 않습니다. 원하는 인터페이스의 예를 들려 주시겠습니까? – Shoe

+0

@Jefffrey - 모호한 점에 대해 사과드립니다. 나는 내가 현재하고있는 것을 개략적으로 보여주는 예제 인터페이스를 추가했다. 나는 정말로 이것을 다른 방식으로 모두 해결하는 해결책을 찾고있다. (아니면 이미 이미 닫혀 있는가?). –

답변

1

저는 실제 비즈니스에서 제약 조건을 주장하기 위해 소프트웨어 테스트 도구 (예 : Boost Unit Test Framework)를 사용하는 데 성공했습니다. 일상적으로 저는 실제로 Python의 단위 테스트 프레임 워크를 사용합니다. 그러나 아이디어는 완전히 동일합니다.

주어진 우주선 궤적이 주어진 시체 집합의 1,000km보다 멀리 가면 안된다고 가정합니다. 다시

trajectory = Trajectory::ReadFromFile("mytraj") 
for body in bodies: 
for state in trajectory.every_x_seconds: 
    BOOST_REQUIRE_GT(state.altitude_relative_to_body(body)) 

: 당신은 (의사 코드) 다음과 같은 도구를 사용하여 궤도를위한 "단위 테스트"를 만들 수 있습니다 당신이 소프트웨어를 테스트하지 않습니다,하지만 당신은 당신의 자신의 사업을 테스트 소프트웨어 테스팅 도구를 사용할 수 있습니다 제약 조건.

+0

확실하지 않습니다.이 답변은 그가이 질문에 대한 답을 얻은 것이라면 단서를 얻습니다. –

+1

나는 이것을 어디서 할 것인지 잘 알고 있으며 이미 테스트 프레임 워크를 사용하고 있습니다 (TDD 연습) 그러나 이것이 내 문제를 해결하는지 확신 할 수 없다. 질문에 더 많은 정보를 추가하여 모호성을 제거하겠습니다. –

관련 문제