Development common sense

mangez_js·2024년 12월 5일

Study

목록 보기
24/47

좋은 코드란 무엇인가?

좋은 코드는 가독성, 유지보수성, 효율성, 확장성을 갖춘 코드를 의미한다.
1. 가독성 : 코드의 목적과 동작이 명확히 이해되며 읽기 쉬워야 합니다.
2. 유지보수성 : 오류 수정과 기능 추가가 간단해야 합니다.
3. 효율성 : 성능과 리소스 사용이 최적화되어야 합니다.
4. 확장성 : 요구사항 변화나 기능 추가에 유연하게 대응할 수 있어야 합니다.
5. 표준 준수 : 코드 스타일 가이드와 팀 컨벤션을 따릅니다.

객체 지향 프로그래밍(OOP)이란 무엇인가?

객체 지향 프로그래밍은 객체(Object)를 중심으로 설계하고 구현하는 프로그래밍 패러다임입니다.

  • 객체 : 데이터(속성)와 그 데이터를 처리하는 메서드(기능)를 하나로 묶은 단위
  • 주요 특징
    ∘ 캡슐화 : 데이터와 메서드를 하나로 묶고 외부에서 접근을 제한.
    ∘ 상속 : 기존 클래스의 속성과 메서드를 물려받아 재사용.
    ∘ 다형성 : 동일한 인터페이스로 다양한 구현을 사용할 수 있음.
    ∘ 추상화 : 불필요한 세부사항을 숨기고 중요한 것만 노출.

객체 지향 개발 원칙(SOLID)

  1. 단일 책임 원칙(SRP) : 클래스는 하나의 책임만 가져야 한다.
  2. 개방-패쇄 원칙(OCP) : 확장에는 열려 있고, 수정에는 닫혀 있어야 한다.
  3. 리스코프 치환 원칙(LSP) : 서브클래스는 부모 클래스의 역할을 대체할 수 있어야 한다.
  4. 인터페이스 분리 원칙(ISP) : 인터페이스는 사용하지 않는 기능에 의존하지 않도록 분리한다.
  5. 의존성 역전 원칙(DIP) : 고수준 모듈은 저수준 모듈에 의존하지 않고, 추상화에 의존해야 한다.

RESTful API란?

REST(Representational State Transfer) 아키텍처 스타일을 따르는 API

  • REST의 6가지 원칙
    ∘ Uniform Interface : REST의 핵심 특징으로, API 설계의 일관성을 의미
    ∘ Stateless : 서버는 클라이언트의 상태를 저장하지 않습니다.
    ∘ Caching : 응답은 캐시 가능해야 합니다.
    ∘ Client-Server : 클라이언트와 서버의 책임을 명확히 분리합니다.
    ∘ Hierarchical system : 시스템은 계층 구조를 가지며, 각 계층은 고유한 역할을 가집니다.
    ∘ Code on demand : 서버는 클라이언트로 코드를 전송하고, 클라이언트는 이를 실행할 수 있습니다.

TDD(Test-Driven Development)란 무엇인가?

테스트 주도 개발로, 코드를 작성하기 전에 테스트를 먼저 설계하는 개발 방법론

  • 절차
  1. 실패하는 테스트 작성.
  2. 테스트를 통과시키기 위한 최소한의 코드 작성
  3. 코드 리팩터링
  • 장점
    ∘ 코드 품질 향상
    ∘ 버그 조기 발견
    ∘ 리팩터링에 대한 자신감 확보
    ∘ 명확한 요구사항 정의

함수형 프로그래밍

순수 함수와 불변성을 중심으로 데이터를 처리하는 패러다임

  • 특징
    ∘ 순수 함수 : 동일 입력에 대해 항상 동일 출력을 반환, 부작용 없음
    ∘ 불변성 : 데이터 변경 대신 복사본 생성
    ∘ 고차 함수 : 함수를 인자로 전달하거나 반환 가능
    ∘ 지연 평가 : 필요할 때만 계산 수행
  • 장점
    ∘ 코드의 예측 가능성 증가
    ∘ 병렬 처리에 유리
    ∘ 유지보수 용이

first-class citizen

함수형 프로그래밍 패러다임을 따르고 있는 언어에서의 함수는 일급 객체(first class citizen)로 간주된다. 다음과 같다.

  • 변수나 데이터 구조안에 함수를 담을 수 있어서 함수의 파라미터로 전달할 수 있고, 함수의 반환값으로 사용할 수 있다.
  • 할당에 사용된 이름과 관계없이 고유한 구별이 가능하다.
  • 함수를 리터럴로 바로 정의할 수 있다.

Reactive Programming

반응형 프로그래밍(Reactive Programming)은 선언형 프로그래밍이라고도 불리며, 명령형 프로그래밍의 반대말이다. 또 함수형 프로그래밍 패러다임을 활용하는 것을 말한다.
반응형 프로그래밍은 기본적으로 모든 것을 스트림으로 본다.
스트림이란 값들의 집합으로 볼 수 있으며 제공되는 함수형 메서드를 통해 데이터를 불변하게 관리할 수 있다.

MVC(Model-View-Controller) 패턴이란 무엇인가?

애플리케이션의 구조는 모델(Model), 뷰(View), 컨트롤러(Controller)로 나누어 설계하는 패턴

  • Model : 데이터 및 비즈니스 로직 처리
  • View : 사용자에게 보이는 화면 처리
  • Controller : 사용자 입력 처리 및 모델-뷰 간 연결
  • 장점 : 역할 분리로 유지보수성과 확장성 향상

Git과 GitHub에 대해서

  • Git
    ∘ 분산 버전 관리 시스템으로, 코드 변경 이력을 관리하고 협업을 지원
    ∘ 주요 명령어
    git init : Git 저장소 초기화
    git add : 변경 내용을 스테이징
    git commit : 변경 이력을 저장
    git push : 원격 저장소에 변경 내용 업로드
    git pull : 원격 저장소 변경 내용 가져오기
  • GitHub
    ∘ Git 저장소를 호스팅하고 협업 도구를 제공하느 플랫폼
    ∘ 주요 기능
    ∘ 코드 공유 및 협업
    ∘ 이슈 관리 및 프로젝트 트래킹
    ∘ Pull Request를 통한 코드 리뷰
    ∘ Actions로 CI/CD 구축 가능

0개의 댓글