본문 바로가기

전체 글18

TDD 정리 TDD란?TDD(Test-Driven Development, 테스트 주도 개발)는 반복 테스트를 이용한 소프트웨어 방법론으로 프로덕션 코드를 작성하기 이전에 테스트를 먼저 작성하고, 그 테스트를 통과하는 코드를 작성함으로써 테스트된 동작하는 코드를 얻는 개발 방법이다.TDD의 핵심은 테스트 작성이 아니다. 실제 목적은 구체적인 코드를 작성해나가면서 역할, 책임, 협력을 식별하고, 식별된 역할, 책임, 협력이 적합한지를 피드백 받는 것이다. "TDD는 객체가 이미 존재한다고 가정하고 객체에게 어떤 메시지를 전송할 것인지에 관해 먼저 생각하라고 충고한다. 이 같은 종류의 충고는 역할, 책임, 협력의 관점에서 객체를 바라보지 않을 경우 무의미하다."    -객체지향의 사실과 오해-TDD의 목표TDD의 목표는 .. 2024. 10. 31.
Clean Code 의 한계 클린코드(Clean Code)란?: 읽기 쉽고 이해하기 쉬운 좋은 코드를 작성하는 것으로 코드 자체가 가독성이 뛰어나고 유지 보수가 쉽도록 작성되어야 한다. 클린코드는 품질 높은 코드 작성을 위한 원칙이다. 그러나 원칙을 엄격하게 따르다보면 문제들이 생길 수 있다. 클린코드 한계1. 초기 개발 속도 저하가독성과 유지보수성을 높이기 위해 코드를 반복적으로 설계하고 리팩토링해야 한다. 이 과정에서는 명확한 변수명과 클래스 구조를 만들어야 하며, 이러한 추가 작업으로 인해 속도가 늦춰질 수 있다. 2. 복잡성 증가복잡성 증가 원인- 지나치게 클린코드를 적용하여 간단한 로직에도 과도한 추상화가 발생하여 코드 복잡성 증가- 클린코드를 작성할때는 다양한 디자인 패턴을 적용하라고 권장함, 하지만 모든 상황에 디자인 .. 2024. 10. 17.
Clean Code Getter를 지양한다.필드를 private으로 숨겨놓고도 Getter를 public으로 하면 정보 은닉의 효과를 볼 수 없다. Getter는 조회로 끝나지 않는 경우가 많다.public void withdraw(long id, long amount) { Account account = accountRepository.findById(id).orElseThrow(); long newBalance = account.getBalance() - amount; if (newBalance 위의 과정은 계좌 인출을 위해 Account 객체에 잔액을 조회한 뒤 인출할 금액을 따로 계산하는 과정을 진행하고 있다.그냥 인출할 금액을 전달하고 잔액이 충분한지만 판단하면 되는데 그걸 직접 확인하고 있다... 2024. 10. 17.
HTTP 프로토콜 HTTP 특징- 클라이언트 서버 구조- 무상태 프로토콜(Stateless)- 비연결성- HTTP 메시지1. 클라이언트 서버 구조Request, Response 구조이다.클라이언트는 서버에 요청을 보내고, 응답을 대기한다.서버가 요청에 대한 결과를 만들어서 응답을 하게된다. 2. 무상태 프로토콜(Stateless)서버가 클라이언트의 상태를 보존하지 않는다.장점 : 서버의 확장성 높음(스케일 아웃)단점 : 클라이언트가 추가 데이터 전송 상태 유지(Stateful)중간에 다른 서버로 변경되면 안 되고 항상 같은 서버가 유지되어야 한다.Stateful은 중간에 서버가 장애가 발생할 경우 서버를 변경할 수 없어 리스크가 크다. 무상태(Stateless)중간의 다른 서버로 변경되어도 된다.중간에 서버에 장애가 발.. 2024. 10. 10.
운영체제: CPU 스케줄링 알고리즘 CPU 스케줄러 결정 1번과 4번 비선점형 스케줄링,  그외 나머지 선점형 스케줄링1. 비선정형 방식어떤 프로세스가 CPU를 점유하고 있다면 이를 뺏을 수 없는 방식이며, 강제로 프로세스를 중지하지 않는다. 따라서 컨텍스트 스위칭으로 인한 부하가 적다. 비선점형 스케줄링의 종류FCFS가장 먼저 온 것을 가장 먼지 처리하는 스케줄링 방법한 번 실행되면 그 프로세스가 끝나야지 다음 프로세스 실행 가능하다.작성이 간단하고 이해하기 쉽다.Convoy Effect(호위 효과)가 발생할 수 있다.  SJF CPU를 가장 짧은 실행 시간을 가진 프로세스에 먼저 처리하는 스케줄링 방법평균 대기 시간이 짧다.긴 시간을 가진 프로세스가 실행되지 않는 현상 발생할 수 있다.우선순위프로세스에게 우선순위를 부여하고, 높은 우선.. 2024. 9. 19.
운영체제 : 메모리 1. 메모리 계층 - 레지스터 : CPU가 요청을 처리하는데 필요한 데이터를 일시적으로 저장하는 기억장치 - 캐시 : 데이터나 값을 미리 복사해 놓는 임시 장소, 시스템의 효율성을 위해 사용, 속도가 빠른 장치와 느린 장치 사이에서 속도차에 따른 병목 현상을 완화 - 메인 메모리 : 주기억장치로 컴퓨터에서 수치-명령-자료 등을 기억하는 하드웨어 장치     - RAM : 휘발성 기억장치, 전원이 유지되는 동안 저장되며 어느 위치에서든 똑같은 속도로 접근하고 읽고 쓸 수 있음     - ROM : 고정 기억 장치, 전원이 종료되도 내용 유지, 초기 부팅 관련 부분이나 프린터 작동에 관여하는 펌웨어 명령 저장 - 하드 디스크 : 비휘발성으로 순차접근이 가능한 보조 기억 장치, 용량 대비 가격이 가장 저렴  .. 2024. 9. 19.