프로그래밍 공부
작성일
2024. 1. 22. 15:54
작성자
WDmil
728x90

4.3 C++ 디자인의 특징

C++ 프로그램의 디자인은 C++의 몇몇 특징 떄문에 다른 언어보다 좀 더 어렵고 복잡하다.

  • C++에는 너무나 많은 기능이 있다.
    • C언어의 기능을 모두 포함하고 있으면서 객체, 연산자 오버로딩, 예외처리, 템플릿 등 여러 다른 기능이 추가되어있다. 언어크기 자체가 디자인 작업을 벅차게 만든다.
  • C++는 객체지향 언어다.
    • 이 때문에 클래스 계층, 클래스 인터페이스, 객체간 연동이 디자인에 포함된다. 이러한 디자인 방식은 C와 같은 절차적 언어와는 많이 다르다.
  • C++는 공용 코드와 재사용 코드를 설계할 수 있는 많은 기능을 제공한다.
    • 클래스와 클래스 상속 외에도 템플릿이나 연산자 오버로딩을 이용해서 효과적인 디자인을 할 수 있다.
  • C++는 유용한 표준 라이브러리를 제공한다.
    • string 클래스, I/O스트림, 일반적인 데이터구조와 알고리즘이 포함되어있다. 이러한 기능들은 C++코딩을 더욱 풍부하며 쉽게 할 수 있게 해준다.
  • C++언어는 적용할 수 있는 디자인 패턴이나 공통적인 문제 해결 방식이 많이 존재한다.

이러한 이슈 때문에 C++프로그램 디자인을 제대로 하려면 그 방대함에 압도된다. 대부분 프로그래머는 디자인 아이디어를 종이에 쓰고, 연관 관계를 만들고, 아이디어를 더하는 반복 작업을 하는데 하루를 온전히 소모한다.

 

이러한 절차는 며칠 또는 몇 주가 걸리기도 하지만 종종 간명하고 효율적인 디자인을 만들어낸다.

어떤 경우에는 당황스럽기만 하고 어디로 가는건지 혼란스러울 수도 있다. 그러나 이 과정이 시간 낭비가 아니라는것을 이해해야 한다.

 

이러한 과정을 거치지 않는다면 나주엥 구현 단계에서 다시 설계를 바꾸면서 더 많은 시간을 소모할 가능성이 다분하다.

 

일이 실제로 진척되고 있는지 아닌지 인식하는것 은 매우 중요하다. 만약 제자리를 맴돌고 있다면 다음주 하나를 실행해보자.

  • 도움을 요청한다.
    • 동료나 멘토 또는 책이나 인터넷 커뮤니티에 상담을 구한다.
  • 잠깐 다른 일을 한다.
    • 나중에 돌아와서 디자인 선택사항을 결정한다.
  • 일단 결정을 내리고 나서 다음 사항으로 넘어간다.
    • 이상적인 선택이 아니라고 하더라도, 뭔가에 결정을 내리고 그에 따라 작업을 시도해본다. 그 선택이 수용할 만한 것일 수도 있다. 만약 잘못된 선택이라면 금방 문제가 드러날 것이다. 어쩜너 문제 자체가 하나의 정답이 없는 경우일 수도 있다. 어떤 때는 요구 사항을 만족시키기 위해 어쩔 수 없이 지저분하지만 현실적인 전략을 택해야 할 수도 있다. 어떤 결정을 하든 그 결정을 문서화하는 것이 좋다. 그렇게 해야 나중에 왜 그런 결정을 했는지 알 수 이싿. 문서에는 폐기한 설계 내용이 무엇이고 왜 선택하지 않았는지에 대한 이유도 들어 있어야 한다.

좋은 디자인을 만들고 올바르게 수행하는 것은 어려운 일 이라는것을 이해하고 있어야 한다.

하룻밤에 전문가가 될 수는 없다! C++코딩 보다 C++디자인을 마스터하는 것이 더 어렵다는 것을 알게 될 것이다.

728x90