2010-08-17 2 views
3

내가 SWIG를 사용하여 PHP에서 C++ 라이브러리를 포장하고있어 생성 내가 생성 된 코드 (모두 생성 된 C++ 및 PHP) 수정하려는 어떤 경우가 있었다 :수정 코드

  • 수정 코드 생성 오류
  • PHP에서 의미가 추가 코드가 아니라 C++에서 (예를 들어, 유형 검사)
  • (예하는 PHPDoc을) 문서 태그 추가

나는 현재 이러한 수정을 자동화하고있어 patch. 이 접근 방식은 효과가 있지만 유지 관리가 쉽고 취약합니다. 이 작업을 수행하는 더 좋은 방법이 있습니까?

+0

SWIG 전문가가 SWIG 전용 방식을 제공하는 경우 "swig"라는 태그가 붙어 있습니다. –

답변

1

가장 좋은 방법은 코드 생성기에서 필요에 맞게 올바른 코드를 생성하는 것입니다. 손으로 조정 한 출력은 지속될 수 없습니다. 입력이 바뀔 때마다 다시 조정해야합니다.

도구가 오류가있는 출력을 생성하는 경우 도구를 복구하고 유지 보수 담당자에게 패치를 제출하는 것이 가장 좋습니다. 상황에 따라 출력이 맞지만 잘못 되었으면 필요한대로 동작을 변경하는 옵션을 추가하는 것이 좋습니다.

때로는 생성 된 코드를 패치하는 지능적인 작업을 자동으로 수행하는 짧은 프로그램을 사용하여 패치를 만드는 데 수동 프로세스가 필요하지 않을 수도 있습니다.

또는 코드 생성기를 직접 작성할 수도 있지만 원하는 것보다 훨씬 많은 작업이 필요합니다. 그것은 또한 당신이하는 일에 달려 있습니다. 때로는 코드 생성은 실제로 매크로 확장 일 뿐이고 자연스럽게 코드 생성을위한 많은 도구가 있습니다.

행운을 빈다.

+0

AtomWeaver를 사용해보십시오. 코드 생성기를 쉽게 작성할 수 있습니다. 실용 모델 중심 접근 방식 인 ABSE를 기반으로합니다 (UML/MDA가 아님). 템플릿 기반 시스템이고 매우 간단하기 때문에 OP의 요구에 맞을 수도 있습니다. –

1

나중에 유지 관리의 악몽이 들릴 수 있습니다. 대신 꿀꺽 꿀꺽 당신은 또 다른 생산적인 방법을 사용하는 것이 좋습니다 :

  • 가 (당신이 그것을 포스트 세대를 추가 할 필요가 없습니다 않도록)는
  • 는 정의 할 수 있습니다 직접 모델에 사용자 정의 코드를 추가하자 당신의 자신의 발전기. 이 기능만으로도 맞춤 코드를 추가 할 필요가 없어졌습니다.

제 3 자 생성기를 사용할 때의 문제점은 실제로 원하는 것을 생성하지 못한다는 것입니다. 자신의 코드 생성기를 작성하는 문제는 훨씬 더 많은 작업이라는 것입니다. 당신이 선택합니다.

그러나 다른 자동화와 자동화를 수정 ...

1

코드 생성은 매우 광범위한 주제이며, 위에서 언급 한 바와 같이 당신에게 더 인터 휴식 수 있습니다 확실히 다른 많은 방법이있다. 그러나 생성 된 코드와 PHP OO 기능에 따라 다른 도구를 사용하지 않으려면 Generation Gap pattern을 사용할 수 있습니다.