현대적인 언어 형태로 C++로 개발하기

그냥 개인적으로 생각하던 거 올릴 곳도 없고 해서 올려봅니다.
내용이 반말이라 죄송합니다. 좀 강하게 딱 필요한것만 적은거라서요.
제가 생각하기엔 이정도만 지켜도 현대적인 언어 못지않게 개발이 가능하고 또 메모리릭 같은것에서
벗어날 겁니다.

  1. C++17이상을 지원하는 컴파일러만 사용하자.
  2. pointer를 사용하지 말자.
    2.1. 메모리 할당이 필요한곳에는 std::shared_ptr, std::unique_ptr을 사용하자.
    2.2. pointer는 인자 또는 legacy api에만 사용하자.
  3. 변수에 타입을 나타내는 접두사를 붙이지 말자.
  4. 천저리기나 맥크로 사용을 최소화 하자.
    4.1. 함수형태의 전처리기 사용금지. inline으로 충분하다.
    4.2. 전처리기 상수를 만들지 말자. constexpr, static등으로 충분하다.
    4.3. 컴파일 분기를 위한 전처리기만 사용하자.
  5. STL을 적극 활용하자. 어지간한건 STL에 전부 있다.
  6. lambda를 적극 활용하자.
  7. thread가 필요하면 STL를 찾아라. 종류별로 있다.
  8. 전역 변수를 만들지 말자.
    8.1. 프로그램 설정등을 저장할 곳이 필요하면 singleton 패턴을 사용하는 클래스를 하나 만들어라.
  9. 형변환이 필요한곳에 (char)같은 C스타일 캐스팅을 사용하지 말자.
    9.1. C++타입 캐스팅(static_cast, reinterpret_cast, dynamic_cast)을 사용하자.
    9.2. stl 타입을 형변환할 경우 stl에도 cast가 있다.
  10. template을 사용하자. 가급적 “<class T>” 형태로 사용하자. 남발금지
  11. enum class 를 사용하자.
  12. 함수에 noexcept, throw() 를 사용하자.
    12.1. 작은 규모의 함수는 예외처리를 확실히 하고 noexcept를 사용하자.
  13. try, catch를 사용하자.
  14. 인터페이스를 변수로 만들 경우 접두사i를 붙이자.
  15. class를 만들때는 한가지 용도로만 만들자. 여러가지 기능이 필요하면 기능별 class를 만들고 그 class들을 내부적으로 사용하거나 다중상속하는 class를 만들자.
  16. 미래에 사용할지도 모를 멤버 변수, 멤버 함수는 만들지 말자.

부록

  1. std::shared_ptr, std::weak_ptr 사용법을 통달하자.
  2. std::function과 std::bind 사용법을 통달하자.
  3. lambda 사용법을 통달하자.
  4. std::thread, std::promise, std::future, std::packaged_task, std::async 사용법을 통달하자.
  5. std::atomic 사용법을 통달하자.
좋아요 6

내용에는 공감이 갑니다. 저도 고인물이라 Qt 같은 프로젝트 말고는 구식 C++ 방식으로 코딩하는데(링크드 리스트도 직접 만들어 씁니다 -_-;:wink: 문제는 기존 레거시 코드가 c++11 이전 방식으로 전부 코딩되어있고 크로스 플랫폼 지원이 가능해야해서 혹시나 빌드가 안될까싶어 수정을 못하는 상황이네요…
윈도우/리눅스/안드로이드 등등에서 다 빌드가 되어야하거든요. low level API 들은 전부 c로 되어있는데 최악의 경우 마이컴 펌웨어로도 빌드가 되어야합니다.
저도 최신 C++ 문법으로 개발해보고 싶네요.

좋아요 1

당연히 그런 경우는 방법이 없죠.
제가 적은 경우에 해당되는 건 현재는 윈도우, 리눅스죠.
아마~ 안드로이드도 될 듯 싶긴한데. 버전에 따라서 다르지 않을까 싶네요.
뭐~ 언젠가는 다 되지 않겠습니까? ^^

좋아요 1

좋은 정보 감사합니다 !!!
(북마크 꽝)

좋아요 1