Software Develop 38

의존성 주입 (Dependency Injection)

의존성 주입(Dependency Injection)이란? 의존성 주입(Dependency Injection)은 객체에 또 다른 객체에 대한 의존성을 부여하는 것을 말한다 설명 의존성 그렇다면, 의존성은 무엇일까? 아래 코드를 살펴보자. Job class public class Job { public string JobName { get; set; } } Person class public class Person { public string Name { get; set; } public int Age { get; set; } public Job Job { get; set; } } 위 코드를 보면 Job과 Person 클래스가 정의되어 있다. Job 클래스의 경우는 직업 이름을 프로퍼티로 가지고 있고, Pe..

빌더 패턴 (Builder Pattern)

빌더 패턴(Builder Pattern)이란? 빌더 패턴(Builder Pattern)은 객체를 생성할 때 주로 사용되는 패턴이다. 어떠한 객체를 생성하고자 할 때, 객체 생성에 필요한 요소들은 Builder에 주입하고 Builder가 해당 요소를 바탕으로 객체를 생성하는 방식이다. 우리가 개발할 때 주로 사용되는 StringBuilder가 대표적인 예이다. 내용 일반적으로 객체를 생성할 때, 생성자를 이용하여 객체를 생성한다. 하지만 객체 내부 요소에 대한 접근이 어렵다면? 객체 생성시 입력된 요소에 따라 다른 의미의 객체가 생성되어야 한다면? 필요한 요소에 따라 생성자가 계속 overload 되어야 할 것이다. 이러한 문제를 빌더 패턴을 통해 해소할 수 있다. 빌더패턴을 이용하여 객체를 생성하면 아래..

파사드 패턴 (Facade Pattern)

파사드 패턴(Facade Pattern)이란? 이번엔 Facade Pattern(파사드 패턴)에 대해 정리하고자 한다. Facade의 사전적 의미는 '건물의 정면'이라는 뜻이다. 그 뜻처럼 파사드 패턴은 하나의 시스템을 건물이라 생각한다면 사용자는 건물의 정면을 바라보고 이를 제어하는 방식을 나타낸다. 구성 System 복잡한 기능과 데이터를 구성한다. Facade 객체 System을 직접 제어한다. 복잡한 기능들을 복합적으로 사용하지만 Client에게는 간단하게 기능을 제공한다. Client Facade 객체를 통해 System을 사용 및 제어한다. 특징 - 코드의 간결성 (가독성) - Client가 System을 다루기에 더욱 단순하게 사용 가능 예시 파사드 패턴의 사용을 식당의 운영에 빗대어 예시를..

[JavaScript] CORS (Cross Origin Resource Sharing) 에러

배경 XMLHttpRequest를 이용하여 Json 파일을 읽어 들이는 기능 개발시 구현 확인을 위한 실행시 CORS와 관련된 오류가 발생하였다. 원인 CORS ? CORS(Cross Origin Resource Sharing)는 교차 출처 리소스 공유이다. 이는 브라우저에서 발생하는 에러이다. 브라우저는 동일 출처 정책(Same Origin Policy)를 지키며 운용되고 있는데, 이 정책에는 다른 출처의 리소스 접근을 금지하고 있다. 해결 필자는 보통 Chrome 브라우저를 사용한다. JavaScript를 공부할 때에도 자연스럽게 Chrome 브라우저를 사용하여 결과를 확인하고 있다. 아래에는 Chrome 브라우저를 사용시 CORS 에러를 해결하는 방법이다. Chrome 브라우저 설정 변경 Chrom..

[1] ColorFlippter

튜토리얼 github GitHub - john-smilga/javascript-basic-projects Contribute to john-smilga/javascript-basic-projects development by creating an account on GitHub. github.com 개요 document.getElementById() html 파일내에서 id값을 통해 Element를 찾는 함수 document.querySelector() css 파일에서 정의한 형식을 적용받는 첫번째 Element를 수집하는 함수 addEventListener() addEventListener() - 생활코딩 addEventListener은 이벤트를 등록하는 가장 권장되는 방식이다. 이 방식을 이용하면 여..

[JavaScript] let과 var 차이

개요 let, var은 모두 JavaScript에서 사용이 가능한 변수 선언 방법이다. 물론 두 방법 사이에는 차이점이 있다. 내용 var의 한계 C#을 공부했었던 필자로써는 var가 상당히 간편하고 편리한 변수 선언 방법이지만, JavaScript에서는 var를 사용함에 있어서 한계가 있다. var test = "Test1"; console.log(test); var test = "Test2"; console.log(test); C#을 사용할 때에는 위 코드를 보자마자 이상하다고 생각이 들 것이다. "같은 이름의 변수를 두 번 선언하는 것은 컴파일 에러가 발생할텐데.." JavaScript에서는 위 코드가 두 번의 console.log(test) 함수 호출은 다른 결과를 출력하지만 정상적으로 실행이 된..

[VisualStudio] Visual Studio 중단점 (Break Point)

배경 중단점 (Break Point) 회사에서의 개발은 CAD를 다루기 때문에 자주 Visual Studio의 중단점 기능을 사용하곤 한다. 주로 Geometry 데이터의 값에 대한 수치, 계산 등의 값 확인을 위해서다. 오늘 CAD가 정상적으로 그려지지 않아 이에 대한 원인을 파악하려고 여기저기 중단점을 찍어 값을 확인했다. 해당 문제를 해결하고자 테스트 코드도 작성하고 수많은 형상 정보 중 특정 형상을 확인하기 위한 로직도 덧붙였다. 생각보다 쉽게 문제를 찾았고 이를 찾기 위해 작성했던 로직들을 지우기 위해 모든 브런치를 develop으로 강제 checkout을 하고 작업물을 git에 올리려 했다. 새로 Branch를 생성하여 내용을 수정한 뒤, 마지막으로 정상 동작 여부를 확인하고자 프로그램을 실행..

[코드규칙] 변수 네이밍 규칙

변수명을 작성할 때에는 아래의 규칙을 반드시 적용한다 본 포스팅의 변수 네이밍 규칙은 필자의 규칙이므로 옳고 틀림의 문제가 아님을 알려드립니다. 특징 가독성을 확보할 수 있다. 변수명만으로 의미를 설명할 수 있다. 협업시 코드에 대한 이해도를 높힐 수 있다. 규칙 const 변수는 모두 대문자로 표기하고 띄어쓰기를 '_'로 구분한다. // 비권장 public const double MaxHeight = 10; // 권장 public const double MAX_HEIGHT = 10; var을 사용하고 변수명을 통해 변수의 데이터 타입을 유추할 수 있도록 한다. // 비권장 string str = ""; // 권장 var str = ""; 복수형의 데이터는 -s를 붙혀 복수의 의미를 부여한다. // 비권..

[코드규칙] Partial 클래스 사용

클래스 내용이 길어지면 기능별 partial 클래스로 분리한다. 특징 기능별로 유지보수가 용이하다. (문제 발생시 추적 확인 용이) 파일명으로 클래스의 기능을 파악할 수 있다. 예시 나쁜 예) Restaurant.cs public class Restaurant { public void OrderFood() { ... } public void OrderWater() { ... } public void OrderAlcohol() { ... } public void OrderDesert() { ... } public void WashDish() { ... } public void WashCup() { ... } public void WashFork() { ... } public void WashKnife() ..