2024/01/23 7
-
4.5.3 코드 재사용 전략 라이브러리, 프레임워크, 동료가 작성한 코드, 본인이 작성한 코드, 어느 경우든 코드를 재사용 할 때는 따라야 할 몇가지 원칙이 있다. 4.5.3.1 기능과 한계의 이해 사용할 코드가 어떤 기능을 제공하고 제약 사항은 무엇인지 시간을 들여서 잘 파악하는 것이 중요하다. 이때 가장 먼저 할 일은 관련 문서를 읽어보고 공개된 인터페이스와 API를 살펴보는 것이다. 이상적으로는 이것만으로 코드의 사용법을 이해하는 데 충분해야 하지만 그렇지 않으면 직접 소스코드를 뒤져보어야 한다. 만약 주변에 해당 코드를 이용해본 적이 있거나 관련 된 내부 동작 방식을 설명해줄 수 있는 사람이 있다면 도움을 구하는 것도 좋은 방법이다. 코드의 사용법을 익힐 떄는 가장 기본적인 것부터 이해하는 것이 ..
-
Big-O 표기법 프로그래머들은 알고리즘이나 코드가 어떤 성능을 가지는지 설명할 때 Big-O 표기법 을 이용한다. 이번에는 가능한 수학을 사용하지 않으면서 알고리즘 복잡도 분석과 Big-O 표기법에 대해 설명한다. Big-O표기법은 절대적인 성능이 아니라 상대적인 성능을 나타낸다. 예를들어 이 함수는 300밀리초 안에 작업을 완료한다고 하지 않고, 작업 대상 데이터 크기가 커질 때 소요시간에 따라서 커지는 비율이 어떻게 달라지는지 이야깋 ㅏㄴ다. 작업대상 데이터란 정렬할 숫자의 개수, 해시 맵에서 항목을 찾을 때 해시에 이미 들어있는 데이터의 개수, 파일으 ㄹ복사할 때 파일의 개수 따위를 말한다. Big-O 표기법은 입력 데이터가 존재하고 그 크기가 가변적인 알고리즘을 대상으로 한다. 입력 데이터가 없..
-
4.5.2 코드 재사용의 판단 코드 재사용 원칙은 개념적으로 보았을 때 매우 쉽다. 하지만 구체적으로 들어가면 모호할 때가 있다. 코드 재사용이 합당한지 어떻게 알 수 있을까? 재사용한다면 어느 코드를 이용할 것 인가? 어느 경우든 장점과 한꼐 단점이 따라오기 때문에 판단은 각 상황에 맞춰서 해야한다. 하지만 코드를 재사용할 경우 일반적으로 적용되는 장단점이 있다. 4.5.2.1 코드 재사용의 장점 코드 재사용은 개발자와 프로젝트 모두에 크나큰 이득을 준다. 목적하는 코드를 어떻게 작성해야 할지 또는 작성하는 데 시간이 얼마나 걸릴지 알 수 없는 경우가 있다. 예를들어 입출력 문자를 포메팅 하는 코드를 직접 짜야 할까? 당연히 아니다. 그런 경우를 위해 C++표준 I/O스트림이 존재한다. 재사용할 코드는..
-
4.5 코드의 재사용 경험있는 C++프로그래머라면 절대 바닥에서부터 프로젝트를 시작하지 않는다. 대신 표준템플릿 라이브러리, 오픈소스, 직장에서 내부적으로 구할 수 있는 코드 자산, 또는 자신이 작성했던 코드 등을 광범위하게 수집하여 재활용한다. 거기에 더하여 유능한 C++프로그래머라면 여러가지 일반적인 디자인 문제에 적용되는 접근 방법이나 전략을 재활용한다. 이러한 전략은 과거 프로젝트에서 배운 것 일수도 있고 전형적인 디자인 패턴 일 수도 있다. 이러한 방법을 최대한 활용하려면 재사용하려는 코드들의 유형과 코드 재사용에 따른 장단점을 이해할 필요가 있다. 오해하지 말아야 할 점은 코드를 재사용한다는 것이 소스코드 편집기에서 복사하여 붙여넣기 하는 것이 아니라는 점이다! 코드 재사용은 중복되는 코드가 ..
-
언리얼에서 AnimNotify를 따로 생성해서, ABP의 스테이트머신을 통해 호출하고, 애니메이션을 바꾸어보자. 언리얼의 AnimNotify는 Animation의 실행중 클립을 호출해주는 기능이다. 생성은 다음과 같이 정의한다. AnimNotify로 블루프린트를 생성한다. AnimNotify AnimNotify에서는 위와같은 항목들을 확인할 수 있는데, 각각 GetNotify Name과 Receved_Notify이다. GetNotifyName은 에니메이션 그래프에서 설정할 Notify의 이름을 정의하는것 이고, Received Notify는 정의된 Notify를 실행하였을 때 작동할 동작사항을 이야기 한다. 우리는 AnimNotify를 실행해서 객체의 애니메이션을 실행시킬것 이다. Name에서 위와같이 ..
-
문제 설명 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ... 2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ... 3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ... 1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를 작..