본문 바로가기

Unity Clean Code Unity Clean Code (원본 link : https://github.com/sampaiodias/unity-clean-code#methods) The Basics 이 가이드를 읽고 있다면 아마도 C#이 무엇인지, Unity에서 간단한 스크립트를 작성하는 방법과 그렇지 않은 것에 대한 일반적인 이해가 있을 것이다. 그러나 프로그래머가 새 스크립트를 만들 때 가장 먼저 보게되는 원칙을 이해하려고 애쓰는 경우가 종종 있다. 다음을 보자: using System.Collections; using System.Collections.Generic; using UnityEngine; public class MyCustomScript : MonoBehaviour { // Use this for initiali..
EC++Study_5 Chapter4. 설계 및 선언 항목 18: 인터페이스 설계는 제대로 쓰기엔 쉽게, 엉터리로 쓰기엔 어렵게 하자. C++에서는 발에 치이고 손에 잡히는 것이 인터페이스이다. (함수/클래스/템플릿) '제대로 쓰기에 쉽고 엉터리로 쓰기에 어려운' 인터페이스를 개발하려면 우선 사용자가 저지를 만한 실수의 종류를 머리에 넣어두고 있어야 한다. 새로운 타입을 들여와 인터페이스를 강화하면 상당수의 사용자 실수를 막을 수 있다. 어떤 타입에 제약을 부여해 그 타입을 통해 할 수 있는 일들을 묵어 버리는 방법도 있다. 제약 부여 방법으로 아주 흔히 쓰이는 예가 'const 붙이기'이다. 기본제공 타입과 쓸데없이 어긋나는 동작을 피하는 실질적인 이유는 일관성 있는 인터페이스를 제공하기 위해서..
EC++Study_4 Chapter3. 자원 관리 프로그래밍 분야에서 자원(resource)이란, 사용을 일단 마치고 난 후엔 시스템에 돌려주어야하는 모든 것을 일컫는다. 항목 13: 자원 관리에는 객체가 그만! auto_ptr [스마트 포인터(smart pointer)] 첫째 ,자원을 획득한 후에 자원 관리 객체에게 넘긴다. 자원 획득 즉 초기화(Resource Acquisition is Initialization: RAII) 둘째, 자원 관리 객체는 자신의 소멸자를 사용해서 자원이 확실히 해제되도록 한다. auto_ptr은 자신이 소멸될 때 자신이 가리키고 있는 대상에 대해 자동으로 delete를 먹인다. 그러므로 어떤 객체를 가리키는 auto_ptr의 개수가 둘 이상이면 절대로 안 된다. auto_ptr 객체를 복사하면..
EC++ Study_3 Chapter2. 생성자, 소멸자 및 대입 연산자 우리들이 만드는 거의 모든 C++ 클래스에 한 개 이상 꼭 들어 있는 것들이 생성자/소멸자/대입 연산자이다. 이들은 C++ 프로그램에 있어서 일용할 양식과 같이 중요한 함수이다. 첫 번째 것은 새로운 객체를 메모리에 만드는 데 필요한 과정을 제어하고 객체의 초기화를 맡는 함수이고, 두 번째 것은 객체를 없앰과 동시에 그 객체가 메모리에서 적절히 사라질 수 있도록 하는 과정을 제어하는 함수이며, 마지막 것은 기존의 객체에 다른 객체의 값을 줄 때 사용하는 함수이다. 따라서 클래스를 제대로 쓰려면 이들이 우선 우뚝 서 있어야 함은 분명하고도 중요한 요구사항이다. 항목 5: C++이 은근슬쩍 만들어 호출해 버리는 함수들에 촉각을 세우자 클래스가 비어 있지만 비..
EC++ Study_2 Chapter1. C++에 왔으면 C++의 법을 따르자. 항목 1: C++을 언어들의 연합체로 바라보는 안목은 필수 초창기의 C++은 단순히 C 언어에 객체 지향 기능 몇 가지가 결합된 형태였다. 오죽하면 C++의 처음 이름조차도 이 점을 드러내려는 듯 '클래스를 쓰는 C(C with Classes)'였을까. C++은 그 후 꾸준한 성장을 거쳤다. 기능, 아이디어, 프로그래밍 전략들을 취해 자기 것으로 만드는 데 있어 점점 대담하고 과감한 행보를 보였다. 이렇게 발전한 오늘날의 C++은 다중패러다임 프로그래밍 언어(multiparadigm programming language)라고 불린다. 절차적(procedural) 프로그래밍을 기본으로 해 객체 지향(object-oriented), 함수식(functi..
EC++ Study_1 용어 사용에 대하여 선언(declaration)은 코드에 사용되는 '어떤 대상'의 이름과 타입을 컴파일러에게 알려 주는 것이다. 하지만 구체적인 세부사항은 선언에 들어 있지 않다. 1) 객체 선언 : extern int A; 2) 함수 선언 : std::size_t A(int B); 3) 클래스 선언 : class A; 4) 템플릿 선언 : template ​ Class GraphNode; 모든 함수의 선언문에는 시그니처(signature), 다시 말해 그 함수의 매개변수 리스트와 반환타입이 나와있다. 함수의 경우엔 시그니처가 그 함수의 타입이다. 앞에서 본 A 함수의 시그니처는 std::size_t A(int)이다. 다시 말하면 'int 하나를 취하고, std::size_t를 반환하는 함수'라는 의미이..
6장 모노를 이용한 개발 6장 모노를 이용한 개발 1. 리스트와 컬렉션 - 모노 프레임워크는 데이터 목록을 유지할 수 있도록 여러 클래스들을 제공한다. 세 가지 메인 클래스로 List, Stack, Dictionary가 있다. 이 클래스들은 각각 특정 목적에 유용한 것들이다. 1) List 클래스 - 정렬되지 않은 상태로 하나의 데이터 형식을 가지는 연속적인 항목들의 목록이 필요할 때, 이 목록이 저장된 데이터의 크기에 맞게 늘어나거나 줄어드는 것을 원한다면 List 클래스가 적합하다. List는 아이템을 추가/삭제하고 저장된 모든 항목들을 순차적으로 순회해야 할 필요가 있을 때 특히 적합하다. 추가로, List 오브젝트는 유니티의 오브젝트 인스펙터에서 편집할 수도 있다. - List 클래스는 항목들을 개별적으로 혹은 한거번에 ..
5장 카메라, 렌더링, 씬 (2) 6. 프로스텀 검사: 점 - 가시성을 확인하기 위해 항상 렌더러를 검사하는 것을 원하지 않을 수 있다. 대신에 간단히 점을 검사하는 방법이 있다. 두 가지 상황 때 이럴 수 있는데 첫 번째로, 파티클이나 권총 표정 위치와 같은 오브젝트가 실제로 보이는지 알고 싶을 수 있다. 두 번째로, 화면 공간(카메라에 의해 렌더링되는)에 보이는지 알기를 원할 때 이 방법을 사용할 수 있다. 다음 예제 코드에서는 이러한 검사를 한다. 이 코드는 점이 카메라 프러스텀 안에 있는지를 검사하고, 프러스텀 안에 있는 경우 더 나아가 정규화된 뷰포트 공간 안에 존재하는 화면상의 어느 곳에 점이 렌더링될지 위치를 반환한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23..