리스코프 치환 원칙(Liskov substitution principle)
·
Computer Science/Terminology and Concepts
“자식 클래스는 부모 클래스로 교체해도 프로그램의 동작에 문제가 없어야 한다”리스코프 치환 원칙 (Liskov Substitution Principle, LSP) 주요 특징1. 서브타입의 대체 가능성자식 클래스(서브타입)는 부모 클래스(슈퍼타입)와 완전히 호환되어야 하며, 부모 클래스 대신 자식 클래스를 사용해도 프로그램이 정상적으로 동작해야 합니다.즉, 부모 클래스의 인스턴스가 필요한 모든 곳에서 자식 클래스 인스턴스를 대체할 수 있어야 합니다.2. 행동 일관성 보장자식 클래스는 부모 클래스의 행동(메서드)을 변경하거나 예외를 추가하지 않고, 기존의 계약(Contract)을 그대로 따라야 합니다.부모 클래스가 특정 입력에 대해 예상되는 출력을 제공하면, 자식 클래스도 동일한 입력에 대해 일관된 출력을 ..
Unique Identifiers
·
Computer Science/Terminology and Concepts
Unique Identifiers: Overview, Pros, Cons, and Best PracticesUnique identifiers are crucial for ensuring uniqueness, reducing collision probability, and enabling easy tracking in various systems. Below is a summary of common identifier types:1. UID (Unique Identifier)Description: General term for any unique identifier, often implemented as an incremental integer, hash, or other ID type.Common Use..
에러와 버그의 차이점
·
Computer Science/Terminology and Concepts
에러(Error)와 버그(Bug)는 소프트웨어 개발에서 자주 혼용되지만, 의미와 맥락에서 차이가 있습니다.아래에서 두 개념을 비교합니다.1. 에러 (Error)정의: 소프트웨어가 실행 중 예상치 못한 동작을 수행하거나 실패할 때 발생하는 문제.발생 원인: 주로 런타임(Runtime) 또는 컴파일 단계에서 코드나 시스템이 의도한 대로 작동하지 않을 때 발생.유형:컴파일 에러: 문법 오류나 잘못된 코드 작성으로 인해 프로그램이 컴파일되지 않는 경우.예: int x = "text"; (데이터 타입 불일치)런타임 에러: 실행 중에 발생하는 문제로, 프로그램이 멈추거나 비정상적으로 종료됨.예: 0으로 나누기, NullPointerException, 메모리 부족 등.논리적 에러: 실행에는 문제가 없으나, 결과가 의..
peerDependencies 와 overrides 의 차이점(package management)
·
Computer Science/Terminology and Concepts
바로 요약peerDependencies - 다른 패키지들의 의존 관계도 만족되는 경우에만 peerDependencies 의 설정된 버전이 사용된다.overrides - 의존 관계와 상관없이 overrides 를 사용하면 항상 설정된 버전이 사용된다.패키지 관리에서 peerDependencies와 overrides의 차이는 버전 처리 및 강제 적용 방식에 관한 것입니다.아래는 그 차이에 대한 설명입니다:peerDependencies• 목적: 주로 패키지가 호스트 프로젝트(또는 다른 라이브러리)가 특정 버전의 의존성을 제공할 것으로 기대할 때 사용됩니다.• 버전 유연성: peerDependencies는 의존성을 자체적으로 설치하지 않습니다. 대신, 호스트 애플리케이션이 사용해야 하는 요구된 버전 범위를 명시..
DOM 트리의 탐색
·
Computer Science/Terminology and Concepts
DOM 트리의 순회는 트리 자료구조의 순회 방법을 따른다. 트리구조 역시 자료를 효율적으로 탐색하고, 삽입이나 삭제할 수 있는 구조로 저장하는 것을 목적으로 하는 자료구조이기 때문에 효율적인 탐색 방법이 존재한다. 트리를 효율적으로 탐색하기 위해서는 타깃 노드에 도달할 때까지 최소한의 노드들을 거쳐가야 한다. 즉, 중복으로 방문하는 노드가 없어야 하는데 이를 위해 트리를 탐색하는 과정엔 방문한 노드를 기록하는 것도 포함되어 있다. 트리 자료구조의 노드를 탐색하여, 원하는 타깃을 찾아내는 방법에는 깊이 우선 탐색과 너비 우선 탐색이 있다. 깊이 우선 탐색 방법은 루트 노드로부터 계속해서 자식 노드로 내려가며 탐색하다가 마지막 자식 노드에 도달했을 때, 만약 아직 타깃을 찾지 못했다면 다시 부모 노드로 올라..
dependencies version in package.json
·
Computer Science/Terminology and Concepts
semantic versioning Semantic versioning (aka SemVer), is a widely adopted version scheme that uses a sequence of three digits (Major.Minor.Patch), an optional pre-release tag and optional build meta tag. backward-incompatible change increments the major number new functionality that is backwards compatible API additions/changes increments the minor number simple bug fix to existing functionality..