alt
Home
hungryjayy
Cancel

리팩터링 2장. 리팩터링 원칙

리팩터링이란 작업 전과 후가 같은 동작을 수행하도록하는 Restructuring의 특수한 하나의 형태이다. 리팩터링을 하는 이유 (소프트웨어 설계) 규칙적인 리팩터링은 코드 구조를 지탱해준다. 중복 코드가 제거되고, 코드는 항상 고유한 일을 수행함을 보장할 수 있다. (가독성) 소프트웨어를 이해하기 쉬워진다. 내 코드의 의도...

리팩터링 1장. 리팩터링 첫번째 예시

리팩터링이란? : 겉으로 드러나는 기능은 그대로 두고, 내부 구조를 개선하는 것. 공학 설계의 관점에서 설계를 한 후 기능을 만드는 것이 일반적이지만, 리팩터링의 관점에서는 기능을 만든 후, 설계를 좋은 구조로 정리해 이해하기 쉽고 변화에 유연한 좋은 코드를 만드는 작업이다. 코드 리팩터링을 위한 작업 테스트 작성: 신뢰...

환경별로 Spring 설정 구성하기 (on-profile)

개발을 진행하다가 배포 때가 되면 아래와같이 dev, prod, local 등 다양한 환경을 구성하는 배포전략이 필요할 때가 온다. 일단 환경설정 구성을 위와같이 나누려면 (application.properties에서는) #--- 를 통해 구분해주고, on-profile 로 각각 네이밍을 해줘야한다. 주의할 점은 #--- ...

자바의정석 - 14장 스트림

: 데이터 소스를 추상화하고 자주 사용되는 메서드들을 정의해 놓은 것 특징 Side effect: 기존 데이터 소스를 변경하지 않는다. 따라서 stream을 사용하면 여러 스레드가 동시접근해도 임계영역 문제를 줄일 수 있다. 일회용: 한번 사용하면 스트림이 닫혀서 재사용 불가능하다. 필요하면 스트림을 다시 생성해...

자바의정석 - 14장 람다식

: 메서드를 하나의 식(expression)으로 표현한 것. 그래서 변수처럼 사용이 가능해진다. JEDK1.8에 추가된 문법. 자바에 함수형 패러다임을 갖도록 한 문법. 자바에서는 기본적으로 메서드를 만들려면 클래스를 만들고, 객체도 생성해야하는데, 이 모든 과정을 생략 가능하게 해준다. 함수형 인터페이스 : 람다식을 변수로 받...

커밋의 상태와 .git

Commit : 커밋을 하는 것 == 파일 전체에 대한 것(스냅샷)을 저장한 것 .git/objects 에 저장된 모습을 보면 커밋들은 00, 01 .. hash값의 dir + 파일로 이루어져있다. 결국 파일 전체 하나(스냅샷)를 가리키는 것. 추후 gc로부터 하나의 델타로 변경된다. ...

자바의정석 - 12장 Generics

객체의 타입을 컴파일 시에 체크해 같은 타입이라는 것만 보장하고, 타입 안정성을 높인다. 타입 체크와 형변환을 생략가능하게 한다. e.g) List에 타입을 명시하지 않으면 다양한 타입의 객체를 한 리스트에 담을 수 있는데, 이걸 하나로 제한한다. class Box { Object item; ...

절차지향과 객체지향

: 비즈니스 로직을 처리하는 두가지 패턴 비교 (스프링 관점) view나 persistence layer를 이야기하는 것이 아니고, Domain layer를 구성하는 여러가지 방법론 중 절차지향과 객체지향에 관한 것 정답이 정해져있는 것이 아니라 상황에 맞게 트레이드 오프를 따져야 하고, 변화에 더욱 초점을 두려면 객체지향적으로 리팩...

자바의정석 - 09장 java.lang 패키지와 유용한 클래스

: 자바 프로그래밍에 가장 기본이 되는 클래스들이 모여있는 패키지. 별도로 import하지 않아도 사용 가능하다. (e.g. String, System, ..) Object : 모든 클래스의 최고 조상 클래스 equals: 주소값으로 객체 비교. Object는 최고 조상 클래스이기 때문에 다른 class를 정의할 때 equa...

객체지향 개론 2. 설계

: 객체지향적 설계란 응집도, 결합도, 캡슐화의 측면에서 변경이 쉽도록 짜는 것이다. 설계는 항상 두가지 사용자를 다 염두해야 한다. 기능을 사용하는 사람, 코드를 건드는 사람 설계의 트레이드오프 (절차지향) 심플하게 만들 것인가? (객체지향) 복잡하더라도 변경에 유연하게 만들 것인가? 객체지...