비트를 쪼개는 개발자

allen321@naver.com

C# 16

C# - 조건문을 단순화 하는 방법

코드를 작성하면서 조건문을 작성하는 경우에는 코드가 길어지면서 조건문도 복잡해진다. if문을 사용하는 경우에는 조건식이 복잡해지거나 부정 연산자가 자주 사용되고 조건식 안에서 2중, 3중으로 작성되면서 가독성이 떨어지는 조건문이 만들어지는 경우도 많다. switch문을 사용하는 경우에는 case가 늘어나면서 코드가 길어지는 경우 역시 빈번하게 발생한다. 이렇게 복잡한 조건식이 반복되면 코드의 가독성이 떨어지면서 리팩토링이 상당히 어려워지며 새로운 조건이 추가될 때 마다 조건식 전부를 뜯어 고치거나 더욱 복잡한 조건식이 탄생해버린다. 이런 경우에는 아래의 단순화 방법을 참고해서 코드를 작성하면 너무 복잡한 조건식이 탄생하는 빈도를 줄일 수 있다.  조건문을 단순화 하는 방법  1. 부정 연산자(!) 줄이기..

C# 2025.01.13

C# - 이터레이터(Iterator) [반복자]

이터레이터(Iterator)란?  Iteration라는 단어는 반복이라는 의미를 가진다. C#에서 이를 Iterator를 사용한다는 것은 프로그램안에서 특정 동작이나 행위를 반복시키고 싶을때 사용한다. C#에서는 이 Iterator를 IEnumerator라는 인터페이스를 사용해서 나타내고 이를 열거자 라고 지칭한다. Iterator는 다음과 같은 특징을 가진다.  Iterator의 특징순차적 접근:이터레이터는 컬렉션 내의 요소를 순서대로 하나씩 접근할 수 있게 도와준다. 첫 번째 요소부터 시작해 마지막 요소까지 순차적으로 요소에 접근할 수 있다.상태 관리:IEnumerator 인터페이스는 Current, MoveNext, Reset 메서드를 통해 현재 요소의 상태를 유지하고, 다음 요소로 이동하거나 컬렉..

C# 2024.10.29

C# [디자인 패턴] - 팩토리 패턴(Factory Pattern)

팩토리 패턴(Factory Pattern)이란? 팩토리 패턴(Factory Pattern)은 객체 생성 로직을 클라이언트 코드와 분리하여 객체 생성을 관리하는 디자인 패턴이다.객체 생성 로직을 별도의 클래스나 메서드로 분리하여, 클라이언트 코드가 직접 객체를 생성하지 않고 팩토리를 통해 객체를 생성하도록 한다.팩토리 메서드만 수정하면 객체 생성 방식을 변경할 수 있으므로, 코드 수정이 유연해진다.팩토리 패턴은 크게 두가지로 분류된다. ("팩토리 메서드 패턴"과 "추상 팩토리 패턴")   팩토리 매서드 패턴     팩토리 매서드 패턴은 객체를 생성하는 메서드를 캡슐화하여 서브클래스에서 구체적인 생성 방식을 정의하게 한다.객체 생성을 일종의 공장(팩토리) 클래스로 생성을 전담시키고 나머지 자세한 부분은 서브..

C# 2024.10.24

C# [디자인 패턴] - 상태 패턴(State Pattern)

상태 패턴이란? 상태 패턴(State Pattern)은 객체의 상태에 따라 그 객체의 행동이 변경되도록 하는 디자인 패턴이다.상태 패턴은 객체의 상태가 변화할 때, 해당 상태에 따른 로직을 별도의 상태 클래스들로 분리하여 구현한다.객체의 상태와 관련된 코드가 분리되기 때문에 상태 전환을 쉽게 관리할 수 있게 된다.객체 지향 설계 원칙인 변화 부분을 "캡슐화" 할 수 있고 이를 통해 코드의 확장성이 용이해진다.   상태 패턴의 구성 요소는?상태 패턴은 크게 Context(시스템, 주체), State(상태, 인터페이스), ConcreteState(구체적 상태)로 구성된다.    1. Context 상태를 관리하는 객체로, 현재 상태에 따라 동작을 위임하는 역할을 수행한다상태 패턴의 사용자 측에서 사용할 주요..

C# 2024.10.22

C# [디자인 패턴] - 옵저버 패턴(Observer Pattern)

옵저버 패턴(Observer Pattern)이란?  옵저버 패턴(Observer Pattern)은 객체 간의 일대다 관계를 정의하여, 하나의 객체(주체, Subject)의 상태가 변경될 때, 이 상태를 관찰하는 여러 객체(옵저버, Observer)들에게 자동으로 알림을 보내는 디자인 패턴이다.  Observer Pattern은 크게 Subject(주체) 파트와 Observer(관찰자) 파트로 구성된다,Subject(주체): 상태를 관리하며, 상태 변화 시 옵저버들에게 알림을 보내는 역할을 수행한다.Observer(옵저버): 주체의 상태 변화를 관찰하며, 변경 사항을 수신하는 역할을 수행한다.객체 간의 느슨한 결합을 유지하면서도 효율적으로 상태 변화를 처리할 수 있는 디자인 패턴이다.유니티 엔진의 Unit..

C# 2024.10.04

C# - LINQ(Language Integrated Query)

LINQ(Language Integrated Query)란? LINQ는 개발자가 다양한 데이터(컬렉션, 데이터베이스, XML 등)에 대해 일관된 방식으로 쿼리*하고 조작할 수 있도록 지원하는 기능이다.C#에서 LINQ 기능은 .NET 프레임워크의 일부로 제공되며 "using System.Linq;" 구문을 사용하여 System.Linq 네임스페이스에서 제공된다.LINQ는 다양한 데이터 소스에 따라 "LINQ to Objects" (List, Array 등), "LINQ to SQL" (SQL 데이터베이스 쿼리), "LINQ to XML" (XML 데이터 쿼리), "LINQ to DataSet" 등과 같이 여러 확장 기능을 제공한다.즉 LINQ를 사용하는 이유는 다양한 데이터 소스를 일관적이고 가독성 좋게..

C# 2024.09.24

C# - 예외 처리 (try ~ catch)

예외 처리(Exception Handling)란? 예외 처리란 프로그램 실행 중에 발생할 수 있는 의도치 않은 오류 상황이나 프로세스가 발생할 때 이를 관리하고 제어하기 위한 일종의 메커니즘이다. "예외"라는 것은 내가 의도한 프로그램의 정상적인 흐름을 방해하는 요소이며 예외 처리를 해 놓으면 이를 통해 오류를 적절하게 처리할 수 있다. Try와 Catch, 그리고 Finally 키워드는 C# 뿐만 아니라 자바와 파이썬 등 여러 언어에서 사용하는 예외 처리용 키워드다.   Catch에서 Exception 클래스를 상속받거나 사용 가능한 예외 타입 목록 - 일반적인 예외  Exception: 모든 예외를 포괄적으로 처리하는 기본 클래스, 모든 예외를 잡을 때 사용한다.SystemException: CLR(..

C# 2024.09.19

C# - 이벤트(Event) / 델리게이트와 이벤트의 차이점

이벤트(Event)란?  이벤트는 객체 또는 클래스에서 특정 상황이 발생하거나 상황을 발생시켰을때 알림을 받기 위해 사용되는 메커니즘이다. 특정한 조건이 충족되면 이벤트가 호출되며 버튼 클릭, 마우스 이동이나 키보드 입력 등 다양한 작업을 수행하다가 발생하는 이벤트를 처리하기 위해 사용된다. 이벤트는 기본적으로 델리게이트를 기반으로 작동하며 이벤트를 정의할 때에는 해당 이벤트를 처리할 델리게이트 형식을 정의해야 한다. 이벤트는 상호 참조를 막기 위해 대입 연산자를 사용할 수 없고, 증감 연산자만 사용할 수 있다.(+=, -=) 이벤트는 객체 간 느슨한 결합을 유지하면서 상호 작용을 유지하며 하나의 이벤트에 여러 응답을 지정해 확장성이 뛰어나다. 이벤트의 사용법은?  우선 이벤트를 사용하려면 두 역할을 수..

C# 2024.08.21