프로그래밍 공부

전문가를 위한 C++정리 73

카테고리 설명
  • 4.5.2 코드 재사용의 판단 코드 재사용 원칙은 개념적으로 보았을 때 매우 쉽다. 하지만 구체적으로 들어가면 모호할 때가 있다. 코드 재사용이 합당한지 어떻게 알 수 있을까? 재사용한다면 어느 코드를 이용할 것 인가? 어느 경우든 장점과 한꼐 단점이 따라오기 때문에 판단은 각 상황에 맞춰서 해야한다. 하지만 코드를 재사용할 경우 일반적으로 적용되는 장단점이 있다. 4.5.2.1 코드 재사용의 장점 코드 재사용은 개발자와 프로젝트 모두에 크나큰 이득을 준다. 목적하는 코드를 어떻게 작성해야 할지 또는 작성하는 데 시간이 얼마나 걸릴지 알 수 없는 경우가 있다. 예를들어 입출력 문자를 포메팅 하는 코드를 직접 짜야 할까? 당연히 아니다. 그런 경우를 위해 C++표준 I/O스트림이 존재한다. 재사용할 코드는..

  • 4.4 C++디자인의 두 가지 원칙 C++에는 근간이 되는 디자인 원칙이 두 가지 있는데, 추상화와 재사용이다. 이 두가지 원칙은 너무나 중요해서 책의 테마로 삼는것 도 고려했을 정도 이다. 이 두 가지 원칙은 여러 문헌과 효율적인 C++프로그램 디자인에서 반복적으로 다루고 있다. 4.4.1 추상화 추상화(abstraction) 원칙은 비유를 통하면 이해하기 쉽다. 예를 들어 거의 모든 집에 하나씩 있는 텔레비전을 생각해보자. 어떻게 켜고 끄는지, 채널은 어떻게 바꾸고, 소리는 어떻게 조절하는지, 스피커나 DVD 플레이어 같은 오디오 장치는 어떻게 연결하는지 등등 텔레비전 사용 방법은 대부분의 사람이 알 고 있다. 하지만 텔레비전이 내부적으로 어떻게 작동하는지 설명할 수 있는 사람은 별로 없다. 공중을 ..

  • 4.3 C++ 디자인의 특징 C++ 프로그램의 디자인은 C++의 몇몇 특징 떄문에 다른 언어보다 좀 더 어렵고 복잡하다. C++에는 너무나 많은 기능이 있다. C언어의 기능을 모두 포함하고 있으면서 객체, 연산자 오버로딩, 예외처리, 템플릿 등 여러 다른 기능이 추가되어있다. 언어크기 자체가 디자인 작업을 벅차게 만든다. C++는 객체지향 언어다. 이 때문에 클래스 계층, 클래스 인터페이스, 객체간 연동이 디자인에 포함된다. 이러한 디자인 방식은 C와 같은 절차적 언어와는 많이 다르다. C++는 공용 코드와 재사용 코드를 설계할 수 있는 많은 기능을 제공한다. 클래스와 클래스 상속 외에도 템플릿이나 연산자 오버로딩을 이용해서 효과적인 디자인을 할 수 있다. C++는 유용한 표준 라이브러리를 제공한다. s..

  • 4.2 프로그램 디자인의 중요성 분석과 디자인 과정을 대충 수행하거나 생략하고 바로 코딩에 들어가고 싶은 경우가 많다. 그 수준이야 어떻든 코드가 컴파일되고 구동되면 뭔가 진도가 나가는 것 같고 마음이 편하다. 반면 프로그램을 어떤 식으로 개발할지 이미 어느 정도 머릿속에 들어 있는데 따로 형식에 맞춰서 문서화하는 것은 시간 낭비처럼 느껴진다. 그리고 문서화는 코딩에 비하면 재미도 ㅇ벗고 지루하다. 하루 종일 문서 작업을 하는것이 프로그래머라면 프로그래머가 되지 않았을지도 모른다. 프로그래머라면 다들 코딩부터 하고 보자는 유혹에 빠지기 쉽다. 하지만 정말 단순한 프로젝트가 아니라면 나중에 문제가 발생할 가능성이 거의 100%다. 사전 디자인 단계 없이도 구현에 성공하려면, 개발자로서의 경험, 공통으로 사..

  • 코드를 한줄이라도 작성하기 전에 프로그램이 어떠해야 하는지 먼저 디자인해보는 것이 좋다. 어떤 데이터 구조를 사용할 것인가? 무슨 클래스를 작성할 것 인가? 여러 개발자가 참여한다면 사전에 계획을 짜는 것이 더더욱 중요해진다. 프로그램을 작성하는 데 같이 작업하는 동료가 무슨 생각을 하는지 전혀 알지 못하면서 프로그램이 제대로 완성되길 기대하는 것은 무모하다. 사전에 계획된 디자인이 있어야 이런 문제를 해결할 수 있다. 4.1 프로그램 디자인이란? 프로그램 디자인 또는 소프트웨어 디자인은 주어진 기능정, 성능적 요건을 구현하기 위한 아키텍처의 설명서다. 좀더 쉽게 말하면 프로그램을 작성하기 위한 계획이다. 디자인은 문서로 작성되고 남겨져야 하는데 소프트웨어 디자인 문서는 일반적으로 통용되는 형태가 있다...

  • 3.7 스타일 적용의 장애물 프로젝트를 새로 시작할 때 이번에는 제대로 해보자는 생각을 하게 된다. 파라미터나 변수가 변경되지 않을 때는 const로 확실하게 표시하고, 모든 변수명은 간결하면서도 이해하기 쉬운 이름을 부여하며, 블록 중괄호의 칼럼 위치를 지키고, 소스 편집툴의 탭/공백 설정도 팀 내 가이드에 맞춘다. 하지만 이러한 스타일을 계속해서 유지할 수 없게 만드는 몇 가지 이유가 있다. const의 경우 어떤때는 그 사용법을 잘 배우지 못한 프로그래머가 있을 수 있다. 그리고, const를 제대로 활용하지 못한 코드나 라이브러리를 만나게 될 수도 있다. 훌륭한 프로그래머라면 어쩔 수 없을 때만 const_cast를 통해 변수의 const를 잠시 해제하고 사용한다. 그런데, 경험이 없는 프로그래머..