BackEnd263 [Refactoring] 중복 코드 (Duplicated Code) 백기선 님의 리팩터링 강의를 들으며 요약한 내용입니다. 2. 중복코드 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 중복되는 코드는 제거하여 코드의 가독성을 높혀야 한다. 동일한 코드를 여러곳에서 사용하는 경우 => 함수로 추출하기 (Extract Function) 코드가 어느정도는 비슷하게 생겼지만, 완전하게 같지는 않은경우 => 코드 정리하기 (Slide Statements) Slide Statements는 말 그대로 문단의 위치를 조종하는 것 이다. 여러 하위클래스에 동일한 코드가 있다면 => 메서드 올리기 (Pull Up Method) 위와 같은 방식으로 중복 코드를 제거 할때는 동일한 코드 부분 모두를 변경해주어야 한다. 일부분 만 변경해주면 나중에 버그가 발생.. BackEnd/Refactoring 2022. 2. 20. [Refactoring] 이해하기 힘든 이름 (Mysterius Name) 백기선 님의 리팩터링 강의를 들으며 요약한 내용입니다. 1. 이해하기 힘든 이름 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 깔끔한 코드에서 가장 중요한 것 중 하나가 바로 “좋은 이름”이다. 함수, 변수, 클래스, 모듈의 이름 등 모두 어떤 역할을 하는지 어떻게 쓰이는지 직관적으로 이해할 수 있어야 한다. 다음과 같은 방식으로 이름을 리팩터링 할 수 있다. 함수 선언 변경하기 (Change Function Declaration) 변수 이름 바꾸기 (Rename Variable) 필드 이름 바꾸기 (Rename Field) 1. 함수 선언 변경하기 함수의 선언 변경에는 함수 이름 변경하기, 메서드 이름 변경하기, 매개변수 추가하기, 매개변수 제거하기, 시그니처 변경하기.. BackEnd/Refactoring 2022. 2. 19. [Spring] MVC 프레임워크 만들기 - 1 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 프론트 컨트롤러 패턴에서 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 된다! 1. 프론트 컨트롤러 도입 - v1 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 이번시간의 목표는 기존 코드를 최대한 유지하면서, 프론트 컨트롤러를 도입하는것 이다. 먼저 구조를 설계하고, 이후 점진적으로 리펙터링 해나갈 것 이다. 우선 모든 컨트롤러들이 공통적으로 구현해야하는 ControllerV1 이라는 interface를 구현해 보자. 코드는 다음과 같다. public interface ControllerV1 { void process(HttpSer.. BackEnd/Spring MVC 2022. 2. 19. [Refactoring] 객체지향 생활 체조 원칙 The ThoughtWorks Anthology을 일부 읽고 정리한 내용 입니다. 객체지향 생활 체조 원칙 9가지 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 1. 한 메서드에 오직 한 단계의 들여 쓰기만 한다. 2. else 예약어를 쓰지 않는다. 3. 모든 원시 값과 문자열을 포장한다. 4. 한 줄에 점을 하나만 찍는다. 5. 줄여 쓰지 않는다(축약 금지). 6. 모든 엔티티를 작게 유지한다. 7. 3개 이상의 인스턴스 변수를 가진 클래스를 쓰지 않는다. 8. 일급 컬렉션을 쓴다. 9. getter/setter/프로퍼티를 쓰지 않는다. 1. 한 메서드에 오직 한 단계의 들여 쓰기만 한다. 코드에 너무 많은 들여쓰기가 있다면, 가독성과 유지 관리성에 좋지 않은 경우가.. BackEnd/Refactoring 2022. 2. 18. [Spring] 서블릿, JSP, MVC 패턴 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 회원 관리 웹 애플리케이션 요구사항 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 간단하게 회원의 정보를 저장하고, 목록으로 조회하는 로직을 구현해볼 것 이다. ● 회원 정보 - 이름 : name - 나이 : age ● 기능 요구사항 - 회원 저장 - 회원 목록 조회 우선 회원의 도메인 모델부터 만들어 보자. package hello.servlet.domain.member; import lombok.Getter; import lombok.Setter; @Getter @Setter public class Member { private Long id; .. BackEnd/Spring MVC 2022. 2. 17. [Java] StringBuilder와 StringBuffer의 차이 1. 글을 작성한 목표 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 Java에서 String 클래스는 불변성을 갖습니다. 따라서 변하지 않는 문자열을 자주 사용하는 경우엔 좋은 성능을 기대할 수 있습니다. 하지만 문자열에 대한 변경이 자주 일어나는 프로그램에서 String만 사용하게 된다면 효율적인 성능을 기대하기 어렵습니다. 이를 해결하기 위해 StringBuilder , StringBuffer을 사용하면 효율적인 성능을 보일 수 있습니다. 언제 StringBuilder를 사용하는지?, 또 언제 StringBuffer을 사용하는지? 에 대하여 살펴봅시다. 우선 String 부터 살펴봅시다. 2. String " data-ke-type="html"> HTML 삽입 미리.. BackEnd/Java 2022. 2. 14. [Spring] 서블릿 - 2 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 5. HTTP 요청 데이터 - POST HTML Form " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 이번 시간에는 HTML의 Form을 이용해서 클라이언트에서 서버로 데이터를 전달하는 방법을 공부하였다. ● 특징 - content-type: application/x-www-form-urlencoded - 메시지 바디에 쿼리 파리미터 형식으로 데이터를 전달한다. username=hello&age=20 우선 간단한 HTML 하나를 src/main/webapp/basic/hello-form.html 에 생성해보자. username: age: 전송 스프링 부.. BackEnd/Spring MVC 2022. 2. 14. [Spring] 서블릿 - 1 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. Hello 서블릿 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 톰켓을 직접 설치하는 대신에 SpringBoot를 이용하여 내장 톰켓을 사용할 것 이다. ● 스프링 부트 서블릿 환경 구성하기 @ServletComponentScan 를 추가하면 스프링 부트가 서블릿을 직접 등록해서 사용할수 있도록 도와준다. @ServletComponentScan //서블릿 자동 등록 @SpringBootApplication public class ServletApplication { public static void main(String[] args) { Spring.. BackEnd/Spring MVC 2022. 2. 13. [Spring] 웹 애플리케이션 이해 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 웹 서버, 웹 애플리케이션 서버 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 웹은 모든 것이 HTTP 기반으로 작동한다. - HTML, TEXT - IMAGE, 음성, 영상, 파일 - JSON, XML (API) - 거의 모든 형태의 데이터 전송 가능 - 서버 간에 데이터를 주고받을 때도 대부분 HTTP 사용 ● Web Server Web Server의 기능 HTTP 프로토콜을 기반으로 하여 클라이언트(웹 브라우저 또는 웹 크롤러)의 요청을 서비스하는 기능을 담당한다. 요청에 따라 아래의 두 가지 기능 중 적절하게 선택하여 수행한다. 1) 정적인 .. BackEnd/Spring MVC 2022. 2. 12. [오브젝트] 책임 할당하기 (5장) 조영호님의 오브젝트 라는 책을 읽으며, 공부 내용을 정리하는 용도로 간략하게 정리해 봅니다. 오브젝트: 코드로 이해하는 객체지향 설계 역할, 책임, 협력을 향해 객체지향적으로 프로그래밍하라! 객체지향으로 향하는 첫걸음은 클래스가 아니라 객체를 바라보는 것에서부터 시작한다. 객체지향으로 향하는 두 번째 걸음은 객체를 wikibook.co.kr 책임에 초점을 맞춰 설계할때 직면하는 가장 큰 문제는 어떤 객체에게 어떤 책임을 할당할지를 결정하기 어렵다는 점 이다. 책임 할당 과정은 일종의 트레이드오프 활동이다. 동일한 문제를 해결할수 있는 다양한 책임 할당 방법이 존재하며, 어떤 방법이 최선인지는 상황과 문맥에 따라 달라진다. 이번장에서는 GRASP 패턴을 통해 책임 할당의 어려움을 해결할 답을 제시해줄 것 .. BackEnd/OOP 2022. 2. 9. [Spring] 빈 스코프 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 빈 스코프란? " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 빈 스코프란 말 그대로 빈이 생존할 수 있는 범위(기간)을 의미한다. 지금까지 공부했던, 스프링 컨테이너가 생성될때 같이 생성되서 ~ 스프링 컨테이너가 종료될때 까지 유지되는 범위는 싱글톤 범위이다. 스프링은 다음과 같은 다양한 스코프를 지원하고 있다. 싱글톤: 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프이다. 프로토타입: 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프이다. 웹 관련 스.. BackEnd/Spring 2022. 2. 8. [Spring] 빈 생명주기 콜백 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 빈 생명주기 콜백 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 개발자는 의존관계 주입이 모두 완료된 시점을 어떻게 알고 사용할까? 스프링은 의존관계 주입이 완료되면 스프링빈에게 콜백 메서드를 통해 초기화 시점을 알려주는 다양한 기능을 제공한다! 또한 스프링은 스프링 컨테이너가 종료되기 직전에 소멸 콜백을 통하여 clean up 과정을 갖도록 해준다. 싱글톤 스프링 빈의 라이프 사이클은 다음과 같다. 스프링컨테이너생성 => 스프링빈생성 => 의존관계주입 => 초기화콜백 => 사용 => 소멸전 콜백 => 스프링 종료 다만 위의 라이프 사이클은 sett.. BackEnd/Spring 2022. 2. 7. 이전 1 ··· 13 14 15 16 17 18 19 ··· 22 다음