2008-09-15 5 views
3

우리는 게임 개발자, 애니메이션 소프트웨어 개발자, 아바타 개발자가 자신의 제품을 향상시키기 위해 라이브러리/DLL로 사용되는 C++ 및 Java의 미들웨어 SDK를 개발 중입니다.미들웨어 API의 모범 사례는 무엇입니까?

내가 알고 싶은 것은 다음과 같습니다. 이러한 유형의 API를 개발하는 데있어 "모범 사례"가 있습니까?

내가 사용 편의성, 가독성, 효율성 등의 측면에서 생각하고

답변

0

당신이 해결하는 내용에 따라, API를 설계하는 많은 방법이있다. 이 질문에 대한 완전한 대답은 gang of four patterns book과 같은 전체 책에서 가치가 있다고 생각합니다. Java의 경우 특별히 OO 프로그래밍뿐 아니라 Effecitve Java 2nd Edition을 권장합니다. 첫 번째는 일반적인 프로그래밍 패턴과 적용시기, 장점입니다. 효과적인 Java는 Java 중심이지만 일부는 프로그래밍 언어에 적용하기에 일반적입니다.

0

Framework Design Guidelines을 살펴보십시오. 나는 그것이 .NET에 특화된 것이라는 것을 안다. 그러나 아마 당신은 그것으로부터 많은 일반적인 정보를 배울 수있을 것이다. 주제에

1

YRP 언급 조쉬 블로흐의 비디오는 고전 - 나는 두 번째 것을 추천.

몇 가지 일반적인 지침 :

  1. 은 주로 인터페이스, 공장 및 빌더의 관점에서 당신의 API를 정의 않습니다.
  2. 정확히 어떤 패키지와 클래스가 API의 일부인지 정확하게 지정하십시오.
  3. API에 대해 컴파일 할 때 사용되는 jar를 제공하십시오.
  4. 상속 또는 템플릿 메서드 패턴에 크게 의존하지 마십시오. 시간이 지남에 따라 이것이 약해지고 손상됩니다.
  5. 싱글 톤 패턴을 사용하거나 최소한주의해서 사용하십시오.
  6. 사용법 및 개념을 설명하는 패키지 및 클래스 레벨 javadoc을 작성하십시오.
2

Windows에서 타사 라이브러리를 사용에서 나는 다음과 같은 두 가지를 배웠다 :

시도는 DLL이 아닌 정적 라이브러리로 라이브러리를 배포 할 수 있습니다. 이렇게하면 다른 c 컴파일러와 링커간에 더 나은 호환성을 제공합니다. Visual C++의 정적 라이브러리에 대한 또 다른 문제점은 런타임 라이브러리를 선택하면 다른 런타임 라이브러리를 사용하는 코드와 라이브러리가 호환되지 않아 각 런타임 라이브러리에 대해 라이브러리의 한 버전을 배포해야 할 수 있다는 것입니다.

가능한 경우 C++을 피하십시오. C++ 이름 맹 글링은 서로 다른 컴파일러 사이에서 많이 다르며 Visual C++ 용으로 빌드 된 라이브러리는 Windows의 다른 빌드 환경에서 링크 할 수 없습니다. C에 관해서는, 특히 dll을 사용하면, 상황이 훨씬 더 좋습니다.

C++의 좋은 부분 (생성자와 소멸자를 통한 자원 관리와 같은)을 실제로 얻으려면 C++에서 사용자 기능을 숨기는 소스 코드로 배포하는 편의 층을 빌드하십시오.사용자는 소스를 가지고 있고 그것을 로컬에서 컴파일하기 때문에 로컬 환경에 대해 언젠가 또는 abi 문제가 발생하지 않습니다.

Java에서 c/C++ 코드를 호출하는 것에 대해 너무 많이 모르는 상태에서 나는 mangling 문제로 인해 C++ 코드보다 c 코드로 작업하기가 더 쉬울 것으로 기대합니다.

"불완전한 C++"책은 내가 매우 유용하다고 생각한 라이브러리 호환성에 대한 몇 가지 토론을했습니다.

관련 문제