반응형 IT34 Bad smells in code(마틴 파울러의 코드의 악취) 마틴 파울러의 책 'Refactoring'에 소개된 '코드의 악취(Bad smells in code)'에 대해 알아보겠습니다. '중복된(Duplicated) 코드'는 같은 소스 코드가 여기저기 쓰인 경우입니다. '너무 긴 메서드(Long method)'는 메서드의 소스가 너무 긴 경우입니다. 긴 메서드는 피해야 할 습관입니다. 메서드 소스가 길고 장황하다는 것은 메서드가 하나의 역할만 하지 않는다는 말입니다. 간단한 + 같은 수식을 메서드로 빼라는 말이 아니라 메서드가 하는 역할은 하나만 해야 하는 것을 말합니다. 트랜잭션을 처리하는 메서드의 경우 길게 작성되는 경우를 종종 보게 됩니다. 그렇게 작성된 메서드보다는 역할에 따라 명확하게 분리하여 트랜잭션 메서드에 엮는 것이 좋은 방법입니다. '거대한 클래.. 2022. 6. 24. 리팩터링(Refactoring) 오늘은 소프트웨어 리팩터링에 대해 얘기해 볼까 합니다. 리팩터링은 기존의 소스 코드를 개선시키는 과정을 말합니다. 의식의 흐름에 따른 코드(생각나는 대로 작성한 코드 또는 스파게티 코드)는 나중에 다시 보면 상당히 읽기가 어렵습니다. 그런 소스코드를 재작성하여 일목요연하고 중복을 제거하는 과정을 리팩터링으로 보시면 됩니다. 리펙터링(Refactoring)의 정의 코드의 기능은 유지하면서 클래스, 함수, 필드처럼 여러 프로그래밍 요소를 변경하여 더 나은 코드로 개선하는 과정 또는 그러한 기술을 말합니다. 리펙터링의 목적 가장 핵심적인 목표는 소프트웨어를 더 이해하기 쉽고, 수정하기 쉽게 만드는 작업입니다. 리팩터링은 디자인 패턴(Design Pattern)을 기반으로 탄생했습니다. 디자인 패턴은 객체 간의.. 2022. 6. 24. C# 생성자 및 소멸자 주의할 점은 생성자에서 다른 생성자를 호출할 때는 "this" 키워드, 소멸자를 사용할 때는 "~"를 사용하여 호출해야 됩니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 public class TestObject { private string name; // 기본 생성자 public TestObject() { Console.WriteLine("생성자 호출 : {0}", "생성자 1"); } // 생성자에서 다른 생성자를 호출할 때는 this 키워드 사용 public TestObject(string name) : this() { this.name = name; Console.WriteLine("생성자 호출 : {0}", "생성자 2"); } //.. 2022. 6. 14. Visual Studio 작업목록 주석의 내용을 분석해 해당 목록을 리스트업 시켜주는 기능입니다. 보통 코드를 작성할 때 To-do나 Fix-me로 앞에 설명하는 주석을 다는 경우가 있습니다. 이런 키워드를 기준으로 리스트업 해주는 기능이죠. 1 2 3 // TODO : 작업목록 테스트 입니다. // todo : 작업목록 테스트 입니다.(소문자) // To-do : 작업목록 테스트 입니다. cs 검색하는 문자열은 대소문자를 구분하지 않습니다. 사용해 보면 좋은 기능이니 사용해 보세요. 작업 목록을 볼 때는 메뉴에서 [보기] → [작업목록] 을 선택하거나, 단축키 Ctrl + W, T를 사용합니다. 검색하는 키워드를 추가할 때는 메뉴에서 [도구] → [옵션]을 선택하고, 옵션 창에서 [환경] → [작업목록]에서 키워드를 추가하면 됩니다. 2022. 6. 14. Visual Studio 2019 이동 및 검색 단축키 소스 작성시 소스 파일 및 코드 이동에 편리함을 제공하는 이동 및 검색 단축키를 정리했습니다. 책갈피 책갈피는 소스의 줄번호에 북마크를 설정해 놓고 해당 북마크를 빠르게 이동할 때 사용합니다. Ctrl + K, Ctrl + K : 책갈피 설정/해제 Ctrl + K, Ctrl + N : 다음 책갈피 Ctrl + K, Ctrl + P : 이전 책갈피 Ctrl + B, Ctrl + C : 모든 책갈피 지우기 Ctrl + W, Ctrl + B : 책갈피 창 보기 책갈피를 설정해 놓으면 위 그림처럼 책갈피 보기 창에서 전체적으로 볼 수도 있고, Ctrl + K,N(다음), Ctrl + K,P(이전) 단축키로 지정한 순서로 탐색이 가능합니다. 참고해야 할 소스가 많은 경우 유용합니다. 이동 관련 단축키 이동 관련 .. 2022. 6. 14. 객체 타입(Type) 비교 및 부모 클래스 타입 확인 GetType() 인스턴스의 타입을 가져올 때 사용합니다. 풀네임(네임스페이스 + 클래스명)으로 반환합니다. 1 2 SampleClass a = new SampleClass Console.WriteLine("{0}", a.GetType()); cs typeof 클래스명을 통해 타입을 가져옵니다. 풀네임을 반환합니다. 1 Console.WriteLine("{0}", typeof(SampleClass)); cs 타입의 비교 1 2 Console.WriteLine("{0}", sampleClass.GetType() == typeof(SampleClass)); Console.WriteLine("{0}", sampleClass is SampleClass); cs 부모 클래스 타입 확인 및 비교 1 2 3 4 5 .. 2022. 6. 9. dll 컨트롤 라이브러리 exe 폴더로 복사 방법 (빌드 이벤트 명령어) exe 파일에서 동적으로 컨트롤 라이브러리(dll)를 읽어 처리하는 프로그램을 개발하고자 한다면 컨트롤 라이브러리를 빌드할 때 exe 가 생성된 폴더로 복사시켜야 dll를 사용할 수 있습니다. 아래와 같이 WpfApp4.exe 프로젝트 한 개와 WpfControlLibrary1.dll 프로젝트가 있다면, WpfControlLibrary1dll 프로젝트의 [빌드 이벤트]에 [빌드 후 이벤트 명령줄]에 파일 복사 명령어를 추가하면 됩니다. [빌드 후 이벤트 명령줄] 명령어 예제 - dll 파일을 exe 프로젝트 Debug 폴더로 복사시키는 명령어 xcopy /R /Y "$(TargetPath)" "$(SolutionDir)WpfApp4\bin\Debug" $(TargetPath) : dll 파일 $(Solu.. 2022. 6. 1. 이전 1 2 3 4 5 다음 반응형