일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 쉐이더
- 유니티
- github
- 메모리
- 리깅
- 튜토리얼
- 유니티 그래픽 최적화
- 익명 타입
- unity
- 파이널 IK
- 속성
- 애님
- NavMesh
- c#
- shader
- 2판
- tutorial
- 사용법
- 깃허브
- 애니메이션
- error
- 최적화
- 유니티 그래픽스 최적화 스타트업
- 오류
- Effective C#
- 프로퍼티
- 쓰는 법
- Final IK
- 리팩토링
- 에러
- Today
- Total
목록책 (13)
참치김밥은 최고의 한식이다
이 책의 Item 8장을 읽기 전, 알고 있으면 좋을 사전 지식 (직접 정리) 이름 기반 타이핑과 구조 기반 타이핑이 뭘까? 이름 기반 타이핑? : 객체 간의 타입 호환성을 확인할 때, 타입의 ‘이름’을 사용하는 것.\ 예를 들어, class MyClass{ … }는 ‘MyClass’라는 이름으로 식별되고, 클래스 내의 int myInt1, int myInt2 등은 각각 ‘myInt1’과 ‘myInt2’라는 이름을 통해 개별 멤버로 인식된다. (내 이해를 담은 예시로, 실제 개념과 차이가 있을 경우 알려주시면 감사하겠습니다.) 구조 기반 타이핑? : 이름 대신 형태를 확인하여 타입이 같은지 확인한다. 예를 들면, 두 개의 정수를 가지는 모든 튜플은 모두 같은 타입으로 간주되며, 모두 System.Valu..
익명 타입 컴파일러가 생성하는, 변경 불가능한 참조 타입 사용법 var aPoint = new {x = 5, y = 67}; 이 문장은 컴파일러에 여러 가지 사항을 알려주는데, 일단 internal sealed 클래스가 필요하다는 것과, 이 타입은 변경이 불가능하고, 2개의 읽기 전용 public 속성인 x, y가 필요하다는 것이다. 장점 : 손으로 직접 sealed 클래스를 짜는 것보다, 컴파일러를 이용하는 편이 훨씬 수월하다. 컴파일러는 사람과 달리 정확히 동일한 코드를 빠르고 예외 없이 재생성해준다. 컴파일러에 코드 생성을 위임함으로써, 개발자가 직접 관리해야 할 코드를 최소화할 수 있다. 즉, 이해하거나 검토해야 할 코드가 줄어든다. 단점 : 이 타입은, 매개변수를 전달할 수도 없고, 반환값의 타..
대부분의 사용자는 속성(프로퍼티)이 데이터 멤버와 동일하게 동작할 것으로 기대하며, 그렇지 않을 경우 타입을 잘못 사용할 수 있다. 속성을 사용하는 문법이 데이터 멤버를 직접 사용하는 것과 같기 때문에, 동작 방식 또한 같으리라고 생각하게 된다. 즉, 프로퍼티가 데이터 멤버를 올바르게 모델링하도록 작성해야 사용자들이 불편하지 않다. 프로퍼티는, 다른 변경 사항이 없다면, get 접근자를 반복해서 호출할 때 늘 같은 값을 반환해야 한다. 덧붙여, 사용자들은 프로퍼티 접근자가 많은 작업을 수행할 것으로 생각하지 않는다. get 접근자가 내부적으로 너무 많은 작업을 수행하지 않도록 한다. 또, set 접근자에서도 값의 유효성 검증 정도만 처리하도록 작성하는 것이 좋다. 아래가 적절한 예시이다. public s..
.NET은 기본적으로 모든 객체를 0으로 초기화한다. 따라서 0이 타입의 기본값이 되도록 설정하는 것이 좋다. 열거형(enum)은 좀 특별한 사례다. 열거형은 반드시 0을 유효한 값으로 선언해야 한다. 열거형 멤버를 선언하면, 그 값이 0으로 초기화되기 때문이다. public enum Planet{ Mercury = 1, Venus = 2, Earth = 3, Mars = 4, ... Neptune = 8 } Planet sphere = new Planet(); 위 코드는 0일 때를 구현해놓지 않았다. 즉, sphere의 값은 0으로 초기화되어 유효하지 않은 값을 지니게 된다. 따라서 열거형을 아래처럼 변경하는 것이 좋다. public enum Planet{ None = 0, Mercury = 1, Ve..