본문 바로가기

java

[Refactoring] 20. 거대한 클래스 코딩으로 학습하는 리팩토링 - 인프런 | 강의 리팩토링은 소프트웨어 엔지니어가 갖춰야 할 기본적인 소양 중 하나입니다. 이 강의는 인텔리J와 자바를 사용하여 보다 실용적인 방법으로 다양한 코드의 냄새와 리팩토링 기술을 설명하고 직 www.inflearn.com | 인프런 - 백기선님의 코딩으로 학습하는 리팩토링 강의를 수강하며 정리한 글입니다. 거대한 클래스 어떤 클래스가 너무 많은 일을 하다 보면 필드도 많아지고 중복 코드도 생기기 시작한다. 클래스에서 제공하는 기능 중 일부만 사용한다면 각각의 세부 기능을 별도의 클래스로 분리할 수 있다. 관련 리팩토링 클래스 추출하기 -> 관련 있는 필드를 한곳으로 모을 수 있다. 슈퍼 클래스 추출하기, 타입 코드를 서브클래스로 교체하기 -> 상속 구조로 변경한다... 더보기
[Refactoring] 19. 내부자 거래 코딩으로 학습하는 리팩토링 - 인프런 | 강의 리팩토링은 소프트웨어 엔지니어가 갖춰야 할 기본적인 소양 중 하나입니다. 이 강의는 인텔리J와 자바를 사용하여 보다 실용적인 방법으로 다양한 코드의 냄새와 리팩토링 기술을 설명하고 직 www.inflearn.com | 인프런 - 백기선님의 코딩으로 학습하는 리팩토링 강의를 수강하며 정리한 글입니다. 내부자 거래 어떤 모듈이 다른 모듈의 내부 정보를 지나치게 많이 알고 있는 코드 냄새로 지나치게 강한 결합도가 생길 수 있다. 관련 리팩토링 함수 옮기기, 필드 옮기기 -> 함수, 필드를 옮겨 결합도를 낮출 수 있다. 위임 숨기기 -> 특정 모듈의 중재자처럼 사용 슈퍼 클래스, 서브 클래스를 위임으로 교체하기 -> 상속으로 인한 결합도 줄이기 Before publ.. 더보기
[Refactoring] 18. 중재자 코딩으로 학습하는 리팩토링 - 인프런 | 강의 리팩토링은 소프트웨어 엔지니어가 갖춰야 할 기본적인 소양 중 하나입니다. 이 강의는 인텔리J와 자바를 사용하여 보다 실용적인 방법으로 다양한 코드의 냄새와 리팩토링 기술을 설명하고 직 www.inflearn.com | 인프런 - 백기선님의 코딩으로 학습하는 리팩토링 강의를 수강하며 정리한 글입니다. 중재자 캡슐화를 통해 내부의 구체적인 정보를 최대한 감출 수 있으나, 어떤 클래스의 메서드가 다른 클래스의 메소드 호출을 대부분 위임하고 있다면 중재자를 제거하거나 클라이언트가 해당 클래스를 직접 사용하도록 코드를 개선할 수 있다. 캡슐화는 항상 정도가 있다. 과도한 캡슐화는 독이 된다. 관련 리팩토링 중재자 제거하기 -> 리팩토링을 사용해 클라이언트가 필요한 클.. 더보기
[Reactive Streams] Schedulers Schedulers Reactive Stream에서 Scheduler는 Operator를 사용하여 별도의 스레드에서 작업을 처리하게 하는 기능을 의미한다. 즉, Scheduler 방식을 사용해서 작업 스레드와 메인 스레드를 분리한다. | 종류 SubscribeOn 데이터를 주는 쪽(Publisher)을 별도의 쓰레드에서 실행 Publisher가 느리게 동작할 때 사용 -> Blocking I/O... flux.subscribeOn(Schedulers.single()).subscribe() Executors.newSingleThreadExecutor().execute(() -> pub.subscribe(s)); PublishOn 받아서 처리하는 쪽(Subscriber)을 별도의 쓰레드에서 실행 Subscr.. 더보기
[Refactoring] 16. 임시 필드 코딩으로 학습하는 리팩토링 - 인프런 | 강의 리팩토링은 소프트웨어 엔지니어가 갖춰야 할 기본적인 소양 중 하나입니다. 이 강의는 인텔리J와 자바를 사용하여 보다 실용적인 방법으로 다양한 코드의 냄새와 리팩토링 기술을 설명하고 직 www.inflearn.com | 인프런 - 백기선님의 코딩으로 학습하는 리팩토링 강의를 수강하며 정리한 글입니다. 임시 필드 클래스에 있는 어떤 필드가 특정한 경우에만 값을 가지는 경우 관련 리팩토링 클래스 추출하기 -> 변수 이동 함수 옮기기 -> 변수를 사용하는 함수를 특정 클래스로 옮기기 특이 케이스 추가하기 -> 특정한 경우에 해당하는 클래스를 만들어서 해당 조건을 제거 Refactoring 1. 특이 케이스 추가하기 어떤 필드의 특정한 값에 따라 동작하는 코드가 반복.. 더보기
[Refactoring] 14. 성의없는 요소 코딩으로 학습하는 리팩토링 - 인프런 | 강의 리팩토링은 소프트웨어 엔지니어가 갖춰야 할 기본적인 소양 중 하나입니다. 이 강의는 인텔리J와 자바를 사용하여 보다 실용적인 방법으로 다양한 코드의 냄새와 리팩토링 기술을 설명하고 직 www.inflearn.com | 인프런 - 백기선님의 코딩으로 학습하는 리팩토링 강의를 수강하며 정리한 글입니다. 성의없는 요소 변수, 메서드, 클래스 등을 만드는 이유 추후 발생할 변화를 대비 재사용을 위해서 의미있는 이름을 위해서 예상하고 만들어 놓은 요소들이 기대에 부응하지 못하는 경우가 있는데 그런 경우에는 해당 요소를 제거해야 한다. 관련 리팩토링 함수 인라인 클래스 인라인 계층 합치기 Refactoring 1. 계층 합치기 상속 구조를 리팩토링하는 중에 기능을 올리.. 더보기
[Refactoring] 13. 반복문 코딩으로 학습하는 리팩토링 - 인프런 | 강의 리팩토링은 소프트웨어 엔지니어가 갖춰야 할 기본적인 소양 중 하나입니다. 이 강의는 인텔리J와 자바를 사용하여 보다 실용적인 방법으로 다양한 코드의 냄새와 리팩토링 기술을 설명하고 직 www.inflearn.com | 인프런 - 백기선님의 코딩으로 학습하는 리팩토링 강의를 수강하며 정리한 글입니다. 반복문 반복문에 비해 함수형 프로그래밍이라는 더 나은 대안이 생겼다. 반복문을 파이프라인으로 바꾸는 리팩토링을 거치면 필터나 맵핑과 같은 파이프라인 기능을 사용해 보다 빠르게 어떤 작업을 하는지 파악할 수 있다. Refactoring 33. 반복문을 파이프라인으로 바꾸기 고전적인 반복문을 파이프라인 오퍼레이션을 사용해 표현하면 코드를 더 명확하게 만들 수 있다. .. 더보기
[Refactoring] 12. 반복되는 switch 문 코딩으로 학습하는 리팩토링 - 인프런 | 강의 리팩토링은 소프트웨어 엔지니어가 갖춰야 할 기본적인 소양 중 하나입니다. 이 강의는 인텔리J와 자바를 사용하여 보다 실용적인 방법으로 다양한 코드의 냄새와 리팩토링 기술을 설명하고 직 www.inflearn.com | 인프런 - 백기선님의 코딩으로 학습하는 리팩토링 강의를 수강하며 정리한 글입니다. 반복되는 switch 문 예전에는 switch 문이 한 번 등장만 해도 냄새로 취급되었는데 여러 프로그래밍 언어에서 보다 세련된 형태의 switch 문을 지원해 줌으로써 반복해서 등장하는 동일한 switch 문을 냄새로 취급한다. 반복해서 동일한 switch 문이 존재할 경우, 새로운 조건을 추가하거나 기존의 조건을 변경할 때 모든 switch 문을 찾아서 변경해.. 더보기