C++ Best Practices (0) - 시작하면서...

시리즈를 시작하면서

제 주변에는 기업/대학원에서 연구를 하시는 분들이 많이 계십니다.

공부도 많이 하시면서 state-of-the-art 알고리즘을 개발하시는 분들이 많으신데, 굉장히 의외인 점을 하나 발견했습니다.

Software engineering에 약하다.

왜 그런걸까요?

개인적으로 느끼기에는 많은 분들이 대학교->대학원->연구소 테크트리를 타면서, 기업에서 중요시하는 소프트웨어 엔지니어링을 겪지 못하면서 생기는 문제인 것 같습니다.

특히나 컴퓨터 공학을 전공하지 않아도 진학할 수 있지만, C++ 코딩을 많이 해야하는 분야에서 이러한 모습이 많이 보입니다 (e.g. 로보틱스 분야 -> 전기전자공학 졸업생)

Software engineering을 공부해도 좋지만, 대부분의 사람들은 시간이 없습니다.

 

그러므로 이번 시리즈에서는 알짜배기 느낌으로 C++ 언어로 프로그래밍을 할 때 권장되는 기법에 대해 소개합니다.

이 기법들을 사용했을 때 기대할 수 있는 점들은…

  • 초보가 하기 쉬운 실수들을 피할 수 있습니다
  • 코드에서 버그를 찾기 쉬워집니다
  • 좋은 성능을 유지하면서 코드 퀄리티를 높일 수 있습니다.

이 시리즈를 적을 때 Jason Turner의 C++ Best Practices 책의 목차를 많이 참고했습니다.

 


C++ 코딩의 특징

여러분이 C++로 코드를 짜는 이유는 단 하나 때문일겁니다.

성능 때문이지요.

C++은 굉장히 low-level한 수준까지 코드를 짤 수 있게 해주지만, 그만큼 고려해야할 부분이 많고 실수하기 쉽습니다.

다른 언어보다 더 좋은 성능을 얻기 위해 C++을 썼지만, 더 위험할수도 있다는 것이지요 (하이리스크, 하이리턴이라고도 볼 수 있습니다).

우리의 C++ 코드에서 실수가 있을 때, 실제 사용처에서는 이러한 경우가 나타납니다.

  • 게임분야 : 버그가 나타납니다. 게임성이 떨어질수도 있고, 게임이 꺼질수도 있고, 해킹을 당할수도 있습니다.
  • 금융분야 : 잘못된 결정을 내려 돈을 잃습니다. 내 결정으로 인해 시장의 다른 결정들도 영향을 받을 수도 있습니다.
  • 로보틱스 : 당신의 로봇/드론이 사고를 겪어 더 움직일 수 없습니다.
  • 자율주행/우주항공 : 당신의 자동차/로켓이 사고를 겪어 폐기해야합니다. 인명사고가 있을 수 있습니다.

이러한 C++의 특성을 고려했을 때, 코드 퀄리티를 높이고 좋은 코드를 적어야하는건 중요합니다.