Ros 프로그래밍 규칙

박무언·2022년 11월 16일
0

공부자료 : 오로카 카페의 로봇 운영체제 Ros 강좌 -023


1. 코드 스타일 가이드 준수 이유

  1. 개발자의 부가적인 선택을 줄여줌
  2. 다른 협업 개발자들이나 이용자들의 코드 이해도를 높이고 코드 리뷰를 쉽게 할 수 있게 함
  3. 프로그래밍 언어의 특정 기능으로 생길 수 있는 오류와 다양한 이슈를 피할 수 있음

2. 기본 이름 규칙

  1. 파일 이름은 모두 소문자로 'snake_case' 규칙에 따름
  2. 인터페이스 류 파일은 'CamelCased' 규칙에 따름
  3. 특정 목적에 의해 만들어지는 파일은 대소문자 규칙을 따르지 않고 고유 이름 사용

3. C++ 스타일

  1. 기본 규칙
    c++14 Standard를 준수

  2. 라인 길이
    최대 100문자

  3. 이름 규칙 (Naming)
    - Camel_Cased : 타입, 클래스, 구조체, 열거형

    • snake_case : 파일, 패키지, 네임스페이스, 변수, 함수, 메소드

    • ALL_CAPITALS: 상수, 매크로
      위 규칙만 사용

    • 소스파일 : .cpp 확장자 사용

    • 헤더파일 : .hpp 확장자 사용

    • 전역변수 : g_를 앞에 붙임

      		- class 멤버 변수는 마지막에 `_`을 붙임
      
      		- 기본 들여쓰기는 공백 문자 2개 `(tab 사용 금지)`
      		- `Class의 public`, `protected:`, `private:`는 들여쓰기 사용 안함 
      		- 모든 `if`, `else`,`do`, `while`, `for` 구문에 괄호 사용

      EX

      int main(int argc, char **argc)
      {
        if (condition) {
          return 0;
        } else {
          return 1;
        }
      }
      
      // 조건문이 길 경우
      if (
        this && that || both && that || both && this && that || both && this && that
      )
      
      call_func(foo, bar);
      
      // 함수 인자가 길 경우
      call_func(
        bang,
        fooooooooooooooooooooooooooooooooooooooooooooooooo,
        bar, bat);

    • 주석
      1. 문자 주석에는 /** */ 사용
      2. 구현 주석에는 // 사용

    • 린터
      c++ 코드 스타일의 자동 오류 검출을 위하여 ament_cpplint, ament_uncrustify 사용
      정적 코드 분석이 필요한 경우 ament_cppcheck 사용

    • 기타

      1. Boost 라이브러리 사용을 가능한 피하고 어쩔 수 없을 경우에만 사용
      2. 포인터 구문 char * c로 사용
      3. 중첩 탬플릿은 set<list<string>>처럼 사용

    마무리

    Ros2 프로그래밍 언어 c++을 공부하기 전에 코드 스타일를 알아보았다.
    이제부터 번거롭더라도 이 코드 스타일을 준수하도록 노력하자.


ros2 공부 1일차

profile
되자!

0개의 댓글