2009-07-16 3 views
2

상태 및 명령 패턴을 사용할 응용 프로그램을 작성하려고합니다. 국가는 명령에 대한 정면으로 행동 할 것입니다.코드 생성기 작성을위한 모범 사례

모든 상태가 실행할 수있는 상태가 7 개 및 약 50 개이며, 명령을 실행할 수없는 모든 메서드는 실행을 중지합니다. 그렇지 않으면 명령을 만들고 실행 한 다음 결과를 반환합니다.

이와 비슷한 클래스가 너무 많아서 자동 생성 코드를 작성하려고합니다. Excel에서 어떤 상태로 어떤 명령을 실행할 수 있는지를 매핑 한 행렬을 얻었으며이를 CSV로 출력하고이를 코드 생성의 기초로 사용할 계획이었습니다.

제 아이디어는 다양한 클래스가 구현하는 인터페이스를 수동으로 작성한 다음 코드 생성기의 템플릿으로 사용하는 것입니다.

이것은 좋은 아이디어입니까? 누구든지이 일을하는 가장 좋은 방법에 대한 조언이 있습니까?

나는 자바로 코딩 할 것이지만 기본 원리는 모든 OO 언어의 코드 생성에 적용된다고 생각한다.

+0

귀하의 경우 [ragel] (http://www.complang.org/ragel/) 도움을 받으시겠습니까? – jfs

답변

2

클래스가 실제로 그렇게 비슷한 경우 코드 생성을 사용하는 대신 일반 Command 개체에서 파생시키지 않는 이유는 무엇입니까?

당신이 말하는 것은 기본 규칙 엔진 인 것 같습니다. 규칙 엔진은 기본적으로 각 명령을 실행하는 것입니다.

+0

내 디자인에는 추상 명령 클래스를위한 공간이 있지만 코드 생성을 위해 50 개의 클래스를 코딩해야합니다. –

+0

그래서 50 개의 클래스를 만들고 50 개의 템플릿을 컴파일하거나 채울 수 있습니까? 코드 생성기를 사용하는 경우를 제외하고 코드 생성기를 작성해야한다는 점을 제외하면 거의 같은 양의 작업처럼 보입니다! 내 말은, 대부분의 클래스가 비슷하다면 파생 클래스의 클래스 정의는 정말 간단해야한다는 것입니다 ... –

+0

코드 생성기를 사용하여 단일 템플릿을 사용하여 골격을 작성하는 지루한 작업을 수행 할 계획이었습니다. 그리고 나서 발록스를 채워라. 그러나 나는 당신의 요점을 보았습니다. –

0

우리는 Excel 매크로를 사용하여 FSM 코드를 생성합니다 (C에서). 이렇게하면 실제로 잘 작동합니다. 한 가지 제안 할 것은 생성 된 코드를 최대한 많이 사용하여 다른 사용자가 선호하는 스타일에 맞게 템플릿을 변경할 수 있도록하는 것입니다.

0

비슷한 종류의 시나리오에서 코드 생성을 많이 사용하는 프로젝트를 진행하고 있습니다. 언젠가 생성 된 코드로 작업을하고 나면 Generate가 제네릭 형식 (반복되는 비트를 유지할 수 있음)과 독립 함수 형식을 더 많이 사용하는 로테 코드를 제공하는 데 사용되는 경우 특정 논리를 유지하면 실제로 유지 보수 할 코드의 양이 줄어 듭니다.

자바에서는 함수 포인터를 작성하는 구문이 다른 언어 (클래스의 구현을위한 또 다른 인터페이스)보다 성가 시지만, 문제를 충분히 분석하여 템플릿을 만들 때가되면, 선제 리팩토링이 필요했습니다.