본문 바로가기

Dev/notion7

데코레이터(Decorator)? 클래스 기반 프로그래밍에서 특정 기능을 "주석처럼" 붙여서 확장하거나 수정하는 문법으로, TypeScript, NestJS, Python, Java 같은 언어에서 자주 사용되며, 메타 프로그래밍의 한 형태라고 볼 수 있다.데코레이터란?함수나 클래스, 메서드, 속성 등에 메타데이터를 부여하거나 동작을 변경할 수 있는 특수한 문법입니다.@ 기호로 시작한다.컴파일러 / 프레임워크가 이 데코레이터를 읽고 자동으로 동작을 수행함코드의 의도를 명확히 하고, 반복을 줄이는 장점이 있다.TypeScript / NestJS 기준1. 클래스 데코레이터@Controller('users') // 이 클래스는 '/users' 경로의 컨트롤러임을 의미export class UserController {} 2. 메서드 데코레이터@.. 2025. 4. 3.
Syntactic sugar - 문법적 설탕 - 문법 설탕 문법적 설탕 또는 문법 설탕(syntactic sugar)은 프로그래밍 언어에서 본질적인 기능이나 계산 능력을 바꾸지 않으면서도 코드를 더 읽기 쉽고 쓰기 쉽게 만들어 주는 추가적인 문법 요소를 말한다. 주요 특징 편의성 증대:프로그래머가 코드를 작성할 때 보다 직관적으로 표현할 수 있도록 도와준다.  내부 변환:문법적 설탕으로 작성된코드는 컴파일러나 인터프리터에 의해 본질적으로 동일한 기본 구조로 변환된다. 즉, 설탕이 씌워진 구문은 결국 동일한 동작으로 하는 기본 문법으로 바뀐다.  왜 중요한가?가독성 향상:코드를 더 간결하고 이해하기 쉽게 만들어, 유지보수와 협업에 유리하다. 개발 생산성 증대:반복적이고 복잡한 구문을 단순화하여 코드를 빠르게 작성할 수 있게 도와준다. 언어 설계의 미학:언어 개발자.. 2025. 2. 21.
JavaScript : Prototype-based inheritance - 프로토타입 기반 상속 아... 이건 뭔가 벌집을 쑤신듯 한 기부니가 드는데... 흠 일단 제목을 잡았으니 시작해 볼까나... 자바스크립트는 전통적인 클래스 기반 상속 대신 프로토타입 기반 상속(prototype-based inheritance)을 사용한다. 이로 인해서 자바스크립트는 클래스가 없다라는 오해에 한동안 시달려왔다카더라...  "우~ 클래스 개념도 없는 자바스크립트가 뭔 프로그래밍 언어냐...""자바스크립트 개발자는 개발자도 아니다" 한 동안 서러웠다... 물론, 아주 오래전 이야기다... 1. 기본 개념1.1 Object와 Prototype내부 프로퍼티자바스크립트의 모든 객체는 보이지 않는 내부 프로퍼티인 Prototype을 가지고 있다. 이 프로퍼티는 다른 객체에 대한 참조로, 해당 객체의 프로토타입 역할을 한.. 2025. 2. 20.
JavaScript: First-Class Functions (일급 함수) 일급 함수(First-Class Functions)는 함수가 다른 일반 객체와 동일하게 취급된다는 개념을 말한다.즉, 함수가 다른 값들과 동일하게 변수에 할당되거나, 함수의 인자로 전달하거나, 함수의 반환값으로 사용할 수 있다는 의미이다. 일급 함수의 특징1. 변수에 할당 가능함수를 변수에 저장할 수 있다.const greet = function(name) { return `안녕하세요, ${name}님!`;}console.log(greet("철수")); // "안녕하세요, 철수님!" 2. 함수의 인자로 전달 가능함수를 다른 함수의 매개변수로 전달하여, 동적인 로직 처리가 가능하다.function processUserInput(callback) { const name = prompt("이름을 입력하세.. 2025. 2. 20.
Closure - 클로저 클로저(Closure)는 함수와 그 함수가 선언될 때의 렉시컬 환경을 함께 기억하는 기능을 말한다. 다시 말해, 자신이 생성될 당시의 변수 환경에 대한 접근 권한을 유지하는 함수를 의미한다. 주요 개념1. 렉시컬 스코프 (Lexical Scope) : 함수가 선언될 때, 주변의 변수들에 대한 참조를 함께 기억한다.함수가 실행될 때, 이 변수들에 접근할 수 있다.2. 함수와 환경의 결합  클로저는 단순히 함수를 반환하는 것이 아니라, 그 함수가 생성될 당시의 환경(변수들)을 함께 저장한다.이 때문에 외부 함수가 종료된 후에도 내부 함수가 외부 변수에 접근할 수 있다.3. 은닉화 및 상태 유지클로저를 사용하면 외부에서 직접 접근할 수 없는 개인 변수(private variable)를 만들 수 있다.클로저는 .. 2025. 2. 19.
enum Enum은 관련 상수들을 하나의 타입으로 묶어 표현하며, 코드의 가독성과 안정성을 높이기 위해 사용한다. 1. 기본 개념상수 집합 표현 - enum (열거형)은 미리 정의된 여러 상수 값들을 의미 있는 이름으로 나열할 수 있다enum Weekday { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, STATURDAY, SUNDAY};타입 안정성 제공 - enum을 사용하면, 변수에 미리 정해진 값들만 할당할 수 있도록 하여 잘못된 값이 사용되는 것을 막는다.2. Rust에서의 EnumRust의 enum은 단순한 상수 나열을 넘어서, 알제브라적 데이터 타입(Algebraic Data Types)를 구현할 수 있는 강력한 기능을 제공한다. 각.. 2025. 2. 19.