본문 바로가기
기타 프로그래밍

[C++] C++ Core Guidelines (C++ 핵심 가이드라인) - P.2, P.3

by 나무꾼 2022. 2. 22.

[Philosophy]

P.2 ISO 표준 C++ 사용해라

 단, 일부 환경에서는 표준 C++ feature 사용이 제한되는 경우가 있다.

 (예) 항공기 제어 SW 의 경우 동적할당을 피하는 것을 권고하고 있다.

 

 

P.3 의도를 표현해라

// bad case

gsl::index i = 0;
while( i < v.size())
{
	// ... do something with v[i] ...
}

// better case

for(const auto& x : v)
{
	∕* do something with the value of x *∕
}
for(auto& x : v)
{
	∕* do something with the value of x *∕
}

bad case

이유1 v의 element를 활용하겠다는 의도가 없음,

이유2 index i 가 loop밖에 노출됨(의도하지 않음)

 

프로그래머는 "The guidelines support library", "The ISO C++ Standard library"에 친숙해져야 한다.

 

draw_line(int, int, int, int);	//모호함
draw_line(Point, Point);		//분명함

제공되는 기본 자료형보다 의도하는 내용을 표현할 수 있는 구조체, 클래스를 생성하여 활용하면 더 좋다.

Guidlines : Enfocement

1. 기본 for반복문 vs 범위기반 반복문 : 가급적 의도를 확인할 수 있도록 범위기반 반복문 사용
2. f(T*, int) interface vs f(span<T>) interface : gsl의 span 사용
3. 기본 new, delete 사용 확인 : 문제가 있을 수 있으므로 유의해서 사용
4. 함수에 너무 많은 기본형 타입의 파라미터 사용 지양

댓글