Unity/C#

·Unity/C#
의존관계 역전 원칙(Dependency inversion principle)소프트웨어 모듈들을 분리하는 특정 형식상위(High-Level) 모듈은 하위(Low-Level) 모듈의 것을 직접 가져오면 안됨둘 다 추상화(abstraction)에 의존해야 함추상화는 세부 사항에 의존해서는 안됨.세부사항이 추상화에 의존해야 함.클래스가 다른 클래스와 관계가 있으면 안됨클래스가 다른 클래스의 작동 방식을 많이 알고 있으면 안됨종속성(dependency)또는 결합(coupling) 발생종속성은 어느 잠재적인 위험public class Switch : MonoBehaviour { public Door door; public bool isActivated; public void Toggle() {..
·Unity/C#
인터페이스 분리 원칙(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..
·Unity/C#
리스코프 치환 원칙(Liskov substitutaion principle)리스코프는 해당 원칙을 만든 사람의 이름이다.파생 클래스는 기본 클래스를 대체할 수 있어야 함하위클래스를 강력하고 유연하게 만드는 원칙OOP의 상속을 사용하면 하위 클래스를 통해 기능을 추가할 수 있음그러나, 주의하지 않으면 불필요한 복잡성이 발생서브클래싱 할 때 기능을 제거하는 경우 리스코프치환원칙 위배추상화(abstractiuon)를 단순하게 유지하위 클래스에는 기본 클래스의 퍼블릭 멤버 존재상속(inheritance)보다는 구성(composition)클래스 계층 구조를 설정하기 전에 클래스 API를 고려현실의 분류가 항상 클래스 계층 구조로 변환되는 것은 아님Ex: Car와 Train이 별도의 상위 클래스에서 상속받는 것이 ..
·Unity/C#
개방-폐쇄 원칙(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..
·Unity/C#
단일 책임 원칙(Single responsibility principle)모든 클래스는 하나의 책임만 가짐클래스는 그 책임을 완전히 캡슐화해야 함클래스가 제공하는 모든 기능은 이 책임과 부합Readability(가독성) : 짧은 클래스가 읽기 쉬움Extensibility(확장성) : 작은 클래스로부터 상속이 쉬움Reusability(재사용성) : 부분에서 재사용할 수 있도록 작고 모듈식으로 설계그림을 통해 단일 책임 원칙을 적용 전과 후의 구조 차이를 확인해 보자// 단일 책임 원칙을 적용하지 않은 코드public class UnrefactoredPlayer : MonoBehaviour { [SerializeField] private string inputAxisName; [SerializeF..
·Unity/C#
SOLID(객체 지향 설계)이번 SOLID 게시글은 시리즈로 진행할 예정입니다.해당 시리즈는 유니티 코리아에서 제작해주신 영상을 기반으로 정리하게 되었습니다.https://youtu.be/J6F8plGUqv8?feature=shared SOLID는 기억술의 약자 입니다.소프트웨어 설계의 5가지 핵심 기본에 대해 설명합니다.객체 지향을 유지하기 위해 코딩하는 동안 염두할 5가지 기본 규칙이라고 생각 할 수 있습니다.디자인패턴은 이해하기 쉽고, 유연하며, 유지 보수가 용이합니다.해당 원칙들은 애자일 소프트웨어 개발과 적응적 소프트웨어 개발의 전반적 전략의 일부입니다.단일 책임 원칙(Single responsibility principle)클래스가 한 가지 작업만 수행. 변경할 이유는 하나만.개방-폐쇄 원칙(..
·Unity/C#
제네릭(Generic)제네릭(Generic)은 C#에서 타입에 독립적인 코드를 작성할 수 있게 해주는 기능입니다.제네릭을 사용하면, 같은 코드로 여러 가지 데이터 타입을 처리할 수 있으며, 타입 안정성을 보장할 수 있습니다.왜 제네릭을 사용할까요?코드 재사용성 : 제네릭을 사용하면 여러 타입에 대해 동일한 동작을 수행하는 코드를 하나만 작성해도 됩니다.예를 들어, 'List'와 'List' 모두 'List'라는 제네릭 리스트 클래스를 사용하여 구현할 수 있습니다.타입 안정성 : 제네릭을 사용하면 특정 타입에 대해 안전하게 코드를 작성할 수 있습니다.잘못된 타입을 사용하는 경우, 컴파일 시점에 오류를 확인할 수 있습니다.제네릭의 예시C#에서 가장 많이 사용되는 제네릭의 예는 'List'입니다.여기서 'T'..
·Unity/C#
레퍼런스(Reference)영어 단어로 "참조" 또는 "참고"를 의미한다.컴퓨터 과학에서 레퍼런스는 어떤 값이나 리소스(예: 변수, 객체, 메서드)를 가리키는 포인터나 주소 같은 개념으로 사용한다.레퍼런스는 그 리소스를 직접 사용하지 않고도 가리키고, 필요할 때 사용할 수 있게 한다. 그러면 메서드 레퍼런스에서 "레퍼런스(Reference)"란,메서드를 직접 호출하지 않고도 그 메서드를 가리킬 수 있는 방법을 의미한다.즉, 메서드를 이름으로 참조(reference)하여, 그 메서드를 언제든지 호출할 수 있도록 준비해 두는 것이다. 메서드 레퍼런스는 C#에서 메서드를 직접 참조할 수 있는 기능을 의미한다.이를 통해 메서드를 인수로 전달하거나, 대리자(Delegate)또는 이벤트 핸들러에서 사용될 메서드를 ..
sonsazang
'Unity/C#' 카테고리의 글 목록