퇴사 후 새로운 도전: 유니티에서 언리얼로의 전환오랜만에 다시 공부를 시작했습니다. 이번에는 유니티 개발자에서 언리얼 클라이언트 개발자로 전직하기 위해, 스파르타 코딩클럽에서 진행하는 국비 지원 과정에 참여하게 되었습니다. 오늘부터 꾸준히 TIL(Today I Learned)을 작성하려 합니다. 첫날의 여정을 기록해 보겠습니다.Day 1: 시작1. 사전 캠프 준비 완료팀장이 되어 팀 노션 페이지를 생성하였습니다.앞으로의 작업 기록과 협업을 위한 준비를 끝냈습니다.2. 스파르타 코딩클럽 강의 수강현재 C++ 언어로 게임 만들기 강의를 수강 중입니다.MacOS에서 VS Code 개발 환경 구성언리얼 엔진 공식 문서를 참고하여 진행하였습니다.VS Code 설치 확인은 Visual Studio Code 공식 문..
의존관계 역전 원칙(Dependency inversion principle)소프트웨어 모듈들을 분리하는 특정 형식상위(High-Level) 모듈은 하위(Low-Level) 모듈의 것을 직접 가져오면 안됨둘 다 추상화(abstraction)에 의존해야 함추상화는 세부 사항에 의존해서는 안됨.세부사항이 추상화에 의존해야 함.클래스가 다른 클래스와 관계가 있으면 안됨클래스가 다른 클래스의 작동 방식을 많이 알고 있으면 안됨종속성(dependency)또는 결합(coupling) 발생종속성은 어느 잠재적인 위험public class Switch : MonoBehaviour { public Door door; public bool isActivated; public void Toggle() {..
인터페이스 분리 원칙(Interface segregation principle)클라이언트가 자신이 이용하지 않는 메서드에 의존하지 않아야 한다는 원칙큰 덩어리의 인터페이스들을 구체적이고 작은 단위들로 분리클라이언트들이 꼭 필요한 메서드들만 이용할 수 있게함시스템의 내부 의존성을 약화하고 유연성을 강화public interface IUnitStats{ public float Health { get; set; } public int Defense { get; set; } public void Die(); public void TakeDamage(); public void RestoreHealth(); public float MoveSpeed { get; set; } pu..
리스코프 치환 원칙(Liskov substitutaion principle)리스코프는 해당 원칙을 만든 사람의 이름이다.파생 클래스는 기본 클래스를 대체할 수 있어야 함하위클래스를 강력하고 유연하게 만드는 원칙OOP의 상속을 사용하면 하위 클래스를 통해 기능을 추가할 수 있음그러나, 주의하지 않으면 불필요한 복잡성이 발생서브클래싱 할 때 기능을 제거하는 경우 리스코프치환원칙 위배추상화(abstractiuon)를 단순하게 유지하위 클래스에는 기본 클래스의 퍼블릭 멤버 존재상속(inheritance)보다는 구성(composition)클래스 계층 구조를 설정하기 전에 클래스 API를 고려현실의 분류가 항상 클래스 계층 구조로 변환되는 것은 아님Ex: Car와 Train이 별도의 상위 클래스에서 상속받는 것이 ..
개방-폐쇄 원칙(Open-closed principle)확장에 대해 열려 있어야 하고,모듈의 동작을 확장할 수 있다는 것을 의미요구 사항이 변경될 때, 새로운 동작을 추가해 모듈을 확장즉, 모듈이 하는 일을 변경할 수 있음수정에 대해서는 닫혀 있어야 한다.코드를 수정하지 않아도 모듈의 기능을 확장하거나 변경 가능모듈의 라이브러리(ex:DLL)의 수정이 필요 없음public class Rectangle { public float width; public float height;}public class Circle { public float radius;}public class AreaCalculator { public float GetRectangleArea(Rectangle rect..
단일 책임 원칙(Single responsibility principle)모든 클래스는 하나의 책임만 가짐클래스는 그 책임을 완전히 캡슐화해야 함클래스가 제공하는 모든 기능은 이 책임과 부합Readability(가독성) : 짧은 클래스가 읽기 쉬움Extensibility(확장성) : 작은 클래스로부터 상속이 쉬움Reusability(재사용성) : 부분에서 재사용할 수 있도록 작고 모듈식으로 설계그림을 통해 단일 책임 원칙을 적용 전과 후의 구조 차이를 확인해 보자// 단일 책임 원칙을 적용하지 않은 코드public class UnrefactoredPlayer : MonoBehaviour { [SerializeField] private string inputAxisName; [SerializeF..
SOLID(객체 지향 설계)이번 SOLID 게시글은 시리즈로 진행할 예정입니다.해당 시리즈는 유니티 코리아에서 제작해주신 영상을 기반으로 정리하게 되었습니다.https://youtu.be/J6F8plGUqv8?feature=shared SOLID는 기억술의 약자 입니다.소프트웨어 설계의 5가지 핵심 기본에 대해 설명합니다.객체 지향을 유지하기 위해 코딩하는 동안 염두할 5가지 기본 규칙이라고 생각 할 수 있습니다.디자인패턴은 이해하기 쉽고, 유연하며, 유지 보수가 용이합니다.해당 원칙들은 애자일 소프트웨어 개발과 적응적 소프트웨어 개발의 전반적 전략의 일부입니다.단일 책임 원칙(Single responsibility principle)클래스가 한 가지 작업만 수행. 변경할 이유는 하나만.개방-폐쇄 원칙(..
제네릭(Generic)제네릭(Generic)은 C#에서 타입에 독립적인 코드를 작성할 수 있게 해주는 기능입니다.제네릭을 사용하면, 같은 코드로 여러 가지 데이터 타입을 처리할 수 있으며, 타입 안정성을 보장할 수 있습니다.왜 제네릭을 사용할까요?코드 재사용성 : 제네릭을 사용하면 여러 타입에 대해 동일한 동작을 수행하는 코드를 하나만 작성해도 됩니다.예를 들어, 'List'와 'List' 모두 'List'라는 제네릭 리스트 클래스를 사용하여 구현할 수 있습니다.타입 안정성 : 제네릭을 사용하면 특정 타입에 대해 안전하게 코드를 작성할 수 있습니다.잘못된 타입을 사용하는 경우, 컴파일 시점에 오류를 확인할 수 있습니다.제네릭의 예시C#에서 가장 많이 사용되는 제네릭의 예는 'List'입니다.여기서 'T'..