프로그래밍
예외처리(Exception)에 대한 고찰
예외처리(Exception)에 대한 고찰
2021.07.25예외처리의 필요성 대학을 졸업하고 개발자로 회사에 다니면서 개발하는데 있어 가장 큰 차이점은 예외처리의 유무였다. 어떻게든 기능만 동작하면 끝이었던 대학생때와는 다르게 회사에서는, 기능은 기본이고 안정성과 유지보수성을 고려해야하는데, 이를 위해 필수적으로 해야하는 것이 바로 예외처리였다. 한 기능에 대해서도 정말 많은 예외가 발생할 가능성이 있기 때문에 최소한 발생가능성을 인지하고 있는 모든 예외에 대해서는 예외처리가 필요했다. 에러 vs 예외 발생가능성을 인지하고 있는 모든 예외에 대해 처리가 필요하다고 했는데, 이 예외가 뭔지 알기 위해서는 에러와 예외를 구분할 필요가 있다. 에러 예외 시스템 단계에서 발생 프로그램 로직에서 발생 프로그래머가 관리하지 않음 프로그래가 관리 발생 시 프로세스 중단 발생..
[C#] 컴포지트 패턴 (Composite Pattern)
[C#] 컴포지트 패턴 (Composite Pattern)
2021.07.17Composite 패턴이란? 위키의 내용은 다음과 같다. 컴포지트 패턴(Composite pattern)이란 객체들의 관계를 트리 구조로 구성하여 부분-전체 계층을 표현하는 패턴으로, 사용자가 단일 객체와 복합 객체 모두 동일하게 다루도록 한다. 이 문장만 보면 무슨 의미인지 정확하게 와닿지 않아 이해한 내용을 토대로 문장을 재구성하면 다음과 같다. 컴포지트 패턴(Composite pattern)이란 동일한 타입의 객체(child)들을 관리하는 동일한 타입의 객체(composite)를 생성하여 관리하는 객체를 통해 child 객체들을 접근하는 패턴이다. 컴포지트 패턴을 적용한 구조를 보면 이렇게 나온다. 채널을 보여주는 IChannel 인터페이스가 있다고 할 때 특정 채널을 보여주는 Channel 클래스..
[C#] 널 조건 연산자 (Null-Conditional Operator)
[C#] 널 조건 연산자 (Null-Conditional Operator)
2021.07.04널 조건 연산자란? 널 조건 연산자는 c# 6.0부터 사용가능한 연산자로 변수의 null 체크를 할 수 있는 편리한 기능이다. 기존에는 특정 객체가 null값인 상태로 참조하려 할 때 NullReferenceException이 발생하는 상황을 막기 위해 변수마다 예외처리를 해야만 했다. 하지만 널 조건 연산자를 사용하면 같은 기능을 수행하면서 보다 편리하고 가독성 있는 코드를 작성할 수 있게된다. 널 조건 연산자 사용 방법 사용 방법은 다음과 같다. public string testFunc(string temp) { //temp가 null이라면 null 반환하고 아니라면 Replace 리턴 값 반환합니다. return temp?.Replace("-",""); } 특정 인덱스를 참조하는 경우에도 사용 가능..
[C#] 싱글톤 패턴 (Singleton Pattern)
[C#] 싱글톤 패턴 (Singleton Pattern)
2021.06.12Singleton 패턴이란? 싱글톤 패턴은 런타임 동안 단 하나의 인스턴스만을 생성하는 패턴을 의미한다. 싱글톤 패턴이 적용된 객체는 하나의 인스턴스만 생성할 수 있으며 다른 객체에서 싱글톤 객체의 인슨턴스를 생성하려 할 경우 기존에 생성된 인스턴스가 있다면 해당 인스턴스를 반환하는 형태이다. Singleton 패턴의 장점 싱글톤 패턴의 장점은 다음과 같다. 1. 메모리 절약과 성능향상 만약 많은 클래스에서 동일한 객체의 인스턴스를 생성해야 하는 경우, 싱글톤 패턴을 적용하지 않았다면 사용할때마다 인스턴스가 생성된다. 물론 어지간해서는 인스턴스를 많이 생성했다고 성능이 저하되는 일은 드물지만 프로젝트의 규모가 크거나 성능이 중요시되는 프로젝트에서는 싱글톤 패턴을 사용하면 큰 도움이 된다. 2. 데이터 관..
[C#] 리플렉션 (Reflection)
[C#] 리플렉션 (Reflection)
2021.06.05Reflection 이란? 객체의 클래스 타입, 메서드, 프로퍼티 등의 메타 정보를 런타임 중에 알아내는 기능이다. 알아낸 정보를 통해 메서드를 호출하거나, 특정한 값을 불러오고 새로운 값을 할당할 수도 있다. 해당 정보를 직접 호출하여 원하는 동작을 수행할 수도 있지만 런타임 도중 동적으로 로드하거나 사용해야 하는 경우 주로 사용한다. 또한, 사용하려는 클래스나 메서드가 public이 아닌 경우, 다른 클래스에서 이를 사용할 수 없기 때문에 백도어처럼 사용하기도 한다. Refelction 사용 방법 Assembly.GetType으로 접근하려는 Type 검색 Reflection을 사용하기 위해서는 Assembly.GetType을 통해 접근하고자 하는 클래스의 Type을 찾아야 한다. Type이라는 용어가..