기술 면접 준비 9

Jiwontwopunch·2022년 2월 23일
0

스터디

목록 보기
16/16
post-thumbnail

좋은 코드란 무엇인가

참고 블로그 https://jbee.io/etc/what-is-good-code/

객체 지향 프로그래밍 Object Oriented Programming

인간 중심적 프로그래밍 패러다임

  • OOP 로 코드를 작성하면 이미 작성한 코드에 대한 재사용성이 높다.
  • 자주 사용되는 로직을 라이브러리로 만들어두면 계속해서 사용할 수 있으며 그 신뢰성을 확보 할 수 있다.
  • 라이브러리를 각종 예외상황에 맞게 잘 만들어두면 개발자가 사소한 실수를 하더라도 그 에러를 컴파일 단계에서 잡아낼 수 있으므로 버그 발생이 줄어든다.
  • 개발자는 라이브러리가 제공하는 기능들을 사용할 수 있기 때문에 생산성이 높아지게 된다.

객체 지향적 설계 원칙

  • SRP(Single Responsibility Principle) : 단일 책임 원칙
    클래스는 단 하나의 책임을 가져야 하며 클래스를 변경하는 이유는 단 하나의 이유이어야 한다.
  • OCP(Open-Closed Principle) : 개방-폐쇄 원칙
    확장에는 열려 있어야 하고 변경에는 닫혀 있어야 한다.
  • LSP(Liskov Substitution Principle) : 리스코프 치환 원칙
    상위 타입의 객체를 하위 타입의 객체로 치환해도 상위 타입을 사용하는 프로그램은 정상적으로 동작해야 한다.
  • ISP(Interface Segregation Principle) : 인터페이스 분리 원칙
    인터페이스는 그 인터페이스를 사용하는 클라이언트를 기준으로 분리해야 한다.
  • DIP(Dependency Inversion Principle) : 의존 역전 원칙
    고수준 모듈은 저수준 모듈의 구현에 의존해서는 안된다.

RESTful API

REST란, REpresentational State Transfer 의 약자이다. 여기에 ~ful 이라는 형용사형 어미를 붙여 ~한 API 라는 표현으로 사용된다. 즉, REST 의 기본 원칙을 성실히 지킨 서비스 디자인은 'RESTful'하다라고 표현할 수 있다.

RESTful 하게 API 를 디자인 한다는 것은 무엇을 의미하는가.

  • 리소스 와 행위 를 명시적이고 직관적으로 분리한다.
  • Message 는 Header 와 Body 를 명확하게 분리해서 사용한다.
  • API 버전을 관리한다.
  • 서버와 클라이언트가 같은 방식을 사용해서 요청하도록 한다.

장점

  • Open API 를 제공하기 쉽다.
  • 멀티플랫폼 지원 및 연동이 용이하다.
  • 원하는 타입으로 데이터를 주고 받을 수 있다.
  • 기존 웹 인프라(HTTP)를 그대로 사용할 수 있다.

단점

  • 사용할 수 있는 메소드가 4 가지 밖에 없다.
  • 분산환경에는 부적합하다.
  • HTTP 통신 모델에 대해서만 지원한다.

참고 블로그 : https://velog.io/@somday/RESTful-API-%EC%9D%B4%EB%9E%80

TDD

Test-Driven Development(TDD)는 매우 짧은 개발 사이클의 반복에 의존하는 소프트웨어 개발 프로세스이다. 우선 개발자는 요구되는 새로운 기능에 대한 자동화된 테스트케이스를 작성하고 해당 테스트를 통과하는 가장 간단한 코드를 작성한다. 일단 테스트 통과하는 코드를 작성하고 상황에 맞게 리팩토링하는 과정을 거치는 것이다. 말 그대로 테스트가 코드 작성을 주도하는 개발방식이다.

테스트 주도형 개발에선, 새로운 기능을 추가하기 전 테스트를 먼저 작성한다. 테스트를 작성하기 위해서, 개발자는 해당 기능의 요구사항과 명세를 분명히 이해하고 있어야 한다. 이는 사용자 케이스와 사용자 스토리 등으로 이해할 수 있으며, 이는 개발자가 코드를 작성하기 전에 보다 요구사항에 집중할 수 있도록 도와준다. 이는 정말 중요한 부분이자 테스트 주도 개발이 주는 이점이라고 볼 수 있다.

TDD에 대한 의견들 https://slipp.net/questions/16

함수형 프로그래밍

참고 블로그 : https://medium.com/@jooyunghan/%ED%95%A8%EC%88%98%ED%98%95-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EC%86%8C%EA%B0%9C-5998a3d66377
참고 블로그 :
https://brunch.co.kr/@yudong/33

MVC 패턴이란 무엇인가

참고 블로그 : https://asfirstalways.tistory.com/180

Git과 GitHub

Git

Git은 본인의 코드와 그 이력을 기록하고 관리하도록 돕는 버전관리 시스템으로 개인적인 공간의 로컬 저장소를 사용하기 때문에, 다른 개발자가 실시간으로 작업하는 내용을 알 수 없습니다. 팀원들이 프로젝트의 같은 부분을 수정한다해도, 서로의 작업을 확인할 수 없다.

GitHub

GitHub는 Git 저장소를 관리하는 클라우드 기반 호스팅 서비스로 개인의 로컬 서버 밖에서 Git 버전 프로젝트를 공유하고 기록하는 온라인 데이터베이스입니다. Git과 달리 GitHub는 완전히 클라우드 기반입니다. 또한 영리 목적의 서비스이다.

출처 : https://escapefromcoding.tistory.com/281

0개의 댓글