분류 전체보기 55

더 나은 코드 품질을 위한 SOLID 원칙

소프트웨어 개발에서 좋은 코드 품질을 유지하는 것은 매우 중요하다. 코드가 복잡해질수록 유지보수와 확장성이 어려워지기 때문에, 코드가 처음부터 이해하기 쉽고, 유지보수하기 쉬우며, 확장 가능한 구조로 작성되는 것이 중요하다. 이러한 목표를 달성하기 위해 객체 지향 프로그래밍과 소프트웨어 설계에서 SOLID 원칙이 탄생했다.SOLID는 소프트웨어 개발에서 따르기 좋은 다섯 가지 기본 원칙의 약어로, 이 원칙들을 준수하면 더 나은 코드 품질을 유지할 수 있다. 각 원칙은 고유한 목적과 가치를 가지고 있으며, 이를 통해 소프트웨어 시스템을 보다 효율적이고 유연하게 만들 수 있다.1.단일 책임 원칙 (Single Responsibility Principle, SRP)단일 책임 원칙은 "클래스는 하나의 책임만 가..

Develope/기타 2024.08.30

JavaScript 호이스팅(Hoisting)

Javascript 호이스팅(Hoisting)JavaScript에서 호이스팅(Hoisting)은 변수 선언과 함수 선언이 코드 실행 전에 자바스크립트 엔진에 의해 최상위로 끌어올려지는 동작을 말하며, 이로 인해 코드 작성 순서와 관계없이 변수나 함수를 사용할 수 있는 것처럼 보이나, 호이스팅의 실제 동작 방식을 이해하는 것이 중요하다변수 호이스팅자바스크립트에서는 var 키워드로 선언된 변수들이 호이스팅 된다. 하지만 호이스팅 시 변수 선언만 끌어올려지고, 변수 할당은 원래 코드에서 선언된 위치에 남아 있게 된다.이는 초기화 전에 변수를 참조할 수 있지만, 이 경우 값은 undefined가 된다.console.log(a); // undefinedvar a = 10;console.log(a); // 10위 ..

Develope/Javascript 2024.08.29

CSS Grid vs Flex

CSS Grid와 Flexbox의 차이점CSS Grid와 Flexbox는 웹 디자인에서 레이아웃을 구성할 때 사용하는 강력한 도구들이다. 이 두 가지는 비슷해 보일 수 있지만, 그 용도와 기능에는 중요한 차이점이 있다. 아래에서는 CSS Grid와 Flexbox의 차이점, 장단점, 그리고 각각의 사용 사례에 대해 정리하고자 한다..1. 레이아웃 모델Flexbox: Flexbox는 1차원 레이아웃 모델이며, 이는 단일 행(row)이나 단일 열(column)에서 요소들을 정렬하고 배치하는 데 최적화되어 있다. Flexbox는 주로 요소들을 행 또는 열 단위로 나열하고 정렬할 때 유용하다.CSS Grid: CSS Grid는 2차원 레이아웃 모델이며. 그리드를 사용하여 행과 열 모두에서 요소들을 배치할 수 있다..

Develope/CSS 2024.08.29

CommonJS(CJS)와 ESModules(ESM)

CommonJS(CJS)와 ES Modules(ESM)은 JavaScript에서 모듈을 관리하고 불러오는 두 가지 방식이다.이 두 방식은 모듈의 정의, 불러오기, 사용 방법에서 차이가 존재한다.CommonJS(CJS)개요CommonJS는 Node.js에서 널리 사용되는 모듈 시스템이다. JavaScript가 서버 사이드 환경에서 사용되기 시작하면서 생겨났으며, Node.js는 처음부터 CommonJS를 기본 모듈 시스템으로 사용해 왔다.사용법모듈 불러오기: require() 함수로 모듈을 불러온다.모듈 내보내기: module.exports 또는 exports 객체를 사용해 모듈을 내보낸다.// module.jsconst message = "Hello, CommonJS!";module.exports = m..

Develope/Javascript 2024.08.27

JavaScript 클로저(Closure)

클로저(Closure)는 JavaScript의 중요한 개념 중 하나로, 함수와 함수가 선언된 어휘적 환경(Lexical Environment)을 함께 기억하는 구조이다.클로저는 주로 함수 내부에서 정의된 또 다른 함수를 통해 외부 함수의 변수에 접근할 수 있도록 하며, 이를 통해 다양한 유용한 기능을 구현할 수 있다.클로저의 기본 개념클로저는 내부 함수가 외부 함수의 변수에 접근할 수 있는 메커니즘이며, 내부 함수가 외부 함수의 범위에 있는 변수를 "기억"하기 때문에 클로저가 형성된다.function outerFunction() { const outerVariable = "I am outside!"; function innerFunction() { console.log(outerV..

Develope/Javascript 2024.08.27

Javascript에서의 this

JavaScript에서 this는 컨텍스트(context)를 나타내는 중요한 키워드로, 코드가 실행되는 문맥에 따라 달라진다. this의 동작을 이해하는 것은 JavaScript의 핵심 개념 중 하나이며, 다음은 this에 관한 주요 사항과 그 사용 방법을 설명한 내용이다.전역 컨텍스트(Global Context)에서의 thisJavaScript에서 this는 기본적으로 전역 객체를 참조한다. 브라우저 환경에서는 window 객체가 전역 객체이며, Node.js에서는 global 객체가 전역 객체이다.console.log(this); // 브라우저에서는 window, Node.js에서는 global 출력함수 컨텍스트(Function Context)에서의 this함수 내부에서 this는 해당 함수를 호출한..

Develope/Javascript 2024.08.27

자바스크립트에서의 커링(Currying)

자바스크립트는 함수형 프로그래밍을 지원하는 언어 중 하나이다. 함수형 프로그래밍의 여러 기법 중 하나인 커링(currying)은 자바스크립트 코드의 재사용성과 가독성을 높이는 데 도움을 줄 수 있다. 이번 블로그 글에서는 커링의 기본 개념과 이를 자바스크립트에서 어떻게 활용할 수 있는지 정리하고자 한다.커링(Currying)이란?커링은 다수의 인수를 받는 함수를 일련의 함수 호출로 변환하는 기술이다. 보다 구체적으로 말하자면, 커링은 여러 인수를 받는 함수를 단일 인수를 받는 함수의 연속으로 변환하는 과정이며, 이를 통해 부분 적용(partial application)과 같은 강력한 함수형 프로그래밍 패턴을 활용할 수 있다.커링의 기본 개념커링의 기본 개념을 이해하기 위해 간단한 예를 살펴보자. 두 수를..

Develope/Javascript 2024.08.26

자바스크립트 비동기 처리: Callback, Promise, Async/Await 그리고 Yield

자바스크립트는 싱글 스레드 기반 언어로, 한 번에 하나의 작업만 수행할 수 있다. 그러나 실제 웹 애플리케이션에서는 여러 작업을 동시에 처리해야 하는 경우가 많다. 예를 들어, 서버에서 데이터를 가져오거나, 파일을 읽거나, 사용자 입력을 기다리는 등의 작업이 있다.이러한 비동기 작업을 처리하기 위해 자바스크립트는 다양한 방법을 제공한다. 이 글에서는 Callback, Promise, Async/Await에 이어 Generator와 Yield 문법까지 살펴보려 한다.CallbackCallback 함수란?Callback 함수는 다른 함수에 인수로 전달되어 나중에 실행되는 함수이다. 비동기 작업이 완료된 후에 호출되는 함수로, 자바스크립트에서 비동기 처리를 구현하는 가장 기본적인 방법이다.function fe..

Develope/Javascript 2024.08.26

Typescript Infer란?

infer란 무엇인가?infer 키워드는 TypeScript의 조건부 타입(Conditional Types)과 함께 사용되어 특정 타입을 추론할 수 있는 메커니즘을 제공한다. 기본적으로 제네릭 타입에서 특정 부분을 추출하거나 변환할 때 유용하며, 타입스크립트가 타입을 추론하는 과정에서 특정 타입을 변수처럼 사용할 수 있다.type Example = T extends infer U ? U : never;여기서 T extends infer U는 T 타입을 U라는 이름으로 추론하겠다는 의미이다. 이 간단한 예제는 T 타입 자체를 U로 추론하고, 그 결과로 U를 반환합니다infer의 실제 활용 예제infer 키워드를 사용하면 복잡한 타입에서 특정 부분을 쉽게 추출할 수 있으며, 이를 통해 타입 변환을 간결하게 ..

Develope/기타 2024.08.26

피보나치 수열(Finbonacci Sequence)

피보나치 수열(Fibonacci Sequence)란?피보나치 수열(Fibonacci Sequence)은 각 숫자가 그 앞의 두 숫자의 합인 수열이다. 이 수열은 13세기 수학자 레오나르도 피보나치(Leonardo Fibonacci)의 이름을 따서 명명되었다. 피보나치 수열은 자연에서 자주 발견되는 패턴으로, 예를 들어 나뭇잎의 배열, 꽃잎의 수, 소라 껍질의 나선형 등에서 볼 수 있다.수열의 시작은 일반적으로 0과 1로 설정되며, 그 다음 수들은 다음과 같이 계산된다.0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...피보나치 수열의 수식피보나치 수열의 기본 수식을 정의하면 다음과 같다.F(0) = 0F(1) = 1F(n) = F(n-1) + F(n-2) (n >= 2)이 수식에 따라 n번째..

Algorithm 2024.08.26