라이브러리를 디자인 할 때 어떤 지침을 따라야합니까?


11

Uno를 사용하여 Arduino 프로젝트를 진행 중입니다. 이 프로젝트에는 상당한 양의 코드가 포함되어 있습니다. 라이브러리를 만들고 싶습니다. 나중에 공유 할 수도 있습니다. 라이브러리를 디자인 할 때 따라야 할 지침은 무엇입니까?


이것은 아마도 스택 오버플로에 대한 일반적인 질문이 아닌 Arduino 부분과 관련이없는 것처럼 보입니다. 즉, Arduino의 메모리 제약에 대한 유용한 팁을 얻을 수 있습니다.

답변:


12

라이브러리를 디자인 할 때 명심해야 할 점이 많이 있습니다. 아마도 다른 사람과 작업을 공유하게되면 일관된 디자인 패턴을 따르는 것이 매우 중요합니다. 다른 사용자의 기술 수준은 매우 다양하므로 최대한 사용하기 쉬운 라이브러리를 디자인하십시오.

기본 팁

핀 맵

라이브러리가 기대하는 기본 핀 맵을 제공하십시오. 핀 매핑을 정적으로 유지하지 말고 사용자가 쉽게 변경할 수 있도록하십시오.

작업 라이브러리

가장 먼저 확인해야 할 것 중 하나는 라이브러리가 작동한다는 것입니다. 그렇지 않은 경우 명확하게 명시하십시오. 깨진 소프트웨어로 작업하는 데 시간을 낭비하고 싶지 않으므로 다른 사람들도 그렇게하지 마십시오.

기본 추가 정보

라이브러리가 디자인 된 보드, 테스트 된 보드 및 작동 할 보드는 매우 명확하게 언급되어 있습니다. 여기에 언급 된 모든 보드의 생성 (버전)을 지정하십시오.

인터페이스

다음은 인터페이스를 명확하게 정의해야한다는 것입니다. 복잡한 인터페이스가있는 작업 라이브러리는 실망 스럽습니다. 이렇게하면 나중에 라이브러리를 사용하는 데 도움이되며 다른 사용자가 더 쉽게 작업 할 수 있습니다. 이것은 명심해야 할 가장 중요한 측면 중 하나 여야합니다.

하향식 또는 상향식 접근 방식을 따를 때마다 항상 인터페이스가 명확해야합니다. 상향식 접근법에서는 이것이 어려울 수 있지만 무시해서는 안됩니다. 그렇지 않으면 사용할 수없는 지나치게 복잡한 라이브러리가 생길 수 있습니다.

특수 기능

일부 특수 보드 특성을 사용하는 기능이있는 경우 이러한 기능을 두드러지게 작성하고 추가 정보 및 설명에 언급하십시오.

바쁜 대기

바쁜 대기를 사용해야하는 시나리오가있을 수 있습니다. 프로그램 로직에 따라 이러한 기능은 정상적인 제어 흐름을 방해하여 중요한 작업 중에 문제를 일으킬 수 있습니다. 가능하면 인터럽트 나 다른 알고리즘을 사용하십시오. 그렇지 않다면, 그러한 기능을 명확하게 언급하십시오.

코멘트

작고 큰 변화마다 의견을 남기십시오. 모든 중요한 기능에 대해서는 긴 주석을 쓰고 다른 기능에는 작은 주석을 쓰십시오. 인터페이스, 각 인수, 기능 및 반환 내용을 명시 적으로 설명하십시오. 이것은 많은 추가 작업이지만 귀하와 타인 모두에게 큰 도움이 될 것입니다. 다른 보드에서 작동하지 않을 수있는 기능이있는 경우 여기에서 언급하십시오. 이것들이 다른 기능에 의해 사용되는 중간 기능이고 필요한 경우 Readme에 언급하십시오.

일관성

주석까지도 모든 파일 .h.cpp파일에서 일관성을 유지해야 합니다.

단일 파일 내에 관련 기능 만 유지하십시오. 작지만 논리적으로 일관성이있는 몇 개의 모듈을 갖는 것이 하나의 거대한 파일보다 낫습니다.


고급 팁

자세한 읽어보기

라이브러리, 해당 기능, 문제점 또는 버그 및 기본 유용성을 설명하는 명확한 readme 파일을 작성하십시오. 위에서 설명한대로 각 인터페이스를 정의하고 설명하기 위해 별도의 파일을 사용하십시오.

디렉토리 구조

라이브러리가 커지면 디렉토리로 분할해야 할 수도 있습니다. 를 사용하는 동안 이것은 쉽게 불가능합니다 . 그러나 지금까지 도달했다면 아마도 고급 Arduino 사용자 일 것이고보다 강력한 개발 도구를 사용할 것입니다. 그렇지 않다면, 이것은 당신에게 그렇게 말하는 우주입니다.

라이센싱

라이센스를 추가하십시오.

버전 관리

Git 또는 SVN과 같은 VCS 도구를 사용하십시오. 이렇게하면 변경 사항을보고, 이전 버전으로 되돌리고, 코드를 유발하는 오류를 발견하고, 다른 사람들과 공동 작업을하는 것이 훨씬 쉬워집니다.


핀 맵이란 무엇입니까?
Chris Anderson

2

AshRj의 답변은 매우 좋습니다. 추가 할 점수가 2 점 밖에 없습니다.

포인트 1 : 문서

AshRj는 자세한 readme 작성을 권장합니다. 이것이 좋은 연습이 될 수는 있지만 더 큰 라이브러리를 사용하면 신속하게 벗어날 수 있습니다. 실제로 수천 줄 (실제로는 많지는 않지만)에도 readme는 거의 이점이 없습니다. 한 단계 더 나아가 C ++ 용 Javadocs와 동등한 기능을 사용하는 것이 좋습니다. 이 답변에서 설명하는 것처럼 (Dockgen은 문서를 관리하고 처리 할 수있는 매우 유용한 도구입니다. 10K 라인 읽어보기 파일 ...)

포인트 2 : 디렉토리

AshRj의 답변과 대조적으로 항상 디렉토리를 사용하십시오. 파일이 10 개 뿐인 경우 (아마도 7 또는 8), 어리석은 소리라는 것을 알고 있지만 미래를 보장하는 작업이며 조기에 시작하지 않으면 파일. 디렉토리는 대규모 프로젝트 만을 위한 것이 아니라 소규모 프로젝트도 사용해야합니다. C ++ (실제 Arduino 언어)에서는 라이브러리의 파일을 포함 할 때 디렉토리가 무시된다는 점을 명심하십시오. 디렉토리는 코드 관리 도구로만 존재합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.