Thumbnail
BEST 개발 · 프로그래밍 교양 · 기타
코딩으로 학습하는 리팩토링
(5.0)
43개의 수강평 ∙ 1265명의 수강생
77,000원

월 15,400원

5개월 할부 시
지식공유자: 백기선
총 78개 수업 (9시간 39분)
수강기한: 무제한
수료증: 발급
난이도:  입문-초급-중급이상
지식공유자 답변이 제공되는 강의입니다
폴더에 추가 공유
초급자를 위해 준비한
[프로그래밍 언어, 개발 · 프로그래밍] 강의입니다.

리팩토링은 소프트웨어 엔지니어가 갖춰야 할 기본적인 소양 중 하나입니다. 이 강의는 인텔리J와 자바를 사용하여 보다 실용적인 방법으로 다양한 코드의 냄새와 리팩토링 기술을 설명하고 직접 실습할 수 있도록 준비했습니다.

✍️
이런 걸
배워요!
총 24개의 코드 냄새와 7개의 리팩토링 카탈로그
자바 예제 코드로 보여주고 직접 실습할 수 있는 43개의 리팩토링
인텔리J가 제공하는 리팩토링 관련 기능

단순 구현을 넘어서
더 좋은 코드를 만들고 싶은 모든 개발자에게 💌

리팩토링

코드의 기능은 유지하면서 클래스, 함수, 필드처럼 여러 프로그래밍 요소를 변경하여 더 나은
코드로 개선하는 과정 또는 그러한 기술을 말합니다. 리팩토링을 학습하고 적용한다면
똑같이 동작하는 코드도 보다 더 이해하기 쉽고 유연하게 만들 수 있습니다.

이랬던 코드를

이렇게 만들면 조금 더 읽기 쉬운 코드를 만들 수 있습니다.

우리가 리팩토링을
배워야 하는 이유

처음에는 변하지 않을 것 같았던 가정과 최선이라고 생각했던 코드도 시간이 지나고, 환경이 바뀌고, 기술이 발전하다 보면 "코드를 도대체 왜 이렇게 짠거지?"라는 이야기를 하기 십상입니다. 
리팩토링에서 다루는 총 24개의 코드 냄새를 통해 그러한 코드를 찾는 방법과 43개가 넘는 리팩토링 기술을 통해 코드를 개선하는 방법을 학습할 수 있습니다.
장담하건데, 이 수업 이후 여러분의 코드를 다시 보신다면 분명 더 나은 코드로 고칠 수 있을 겁니다.


코드 생산성
늘리고 싶다면

IntelliJ
인텔리제이와 같은 통합 개발 환경 (IDE)은 단순한 편집기와 달리 고도의 연산과 분석 기능으로
코드 리팩토링에 도움이 되는 여러 기능을 제공하고 있습니다.
이 강의에서 소개하는 기능들을 활용한다면 여러분의 코드 생산성도 향상시킬 수 있습니다.

 

리팩토링
필요한 사람은?

기초 문법은 배웠는데
이제 뭘 해야 하지?

지금보다
더 나은 개발자로
성장하고 싶다면?

더 좋은 코드로
개선하고 싶은데

냄새나는 코드를
어떻게 개선하는지
알고 싶다면?

인텔리제이를
더 잘 쓰고 싶은데

리팩토링 기능을 100%
활용하고 싶다면?

리팩토링?
실제로 보고 싶은데

글로 읽는 리팩토링
말고 보면서
배우고 싶다면?

📢 알려드립니다

  • 원활한 강의 수강을 위해서는 자바 프로그래밍 언어에 대한 이해가 필요합니다.
  • 자바와 인텔리제이를 사용해서 리팩토링을 소개하고 있지만 특정 언어나 IDE에 종속되는 내용은 아닙니다. 어떤 프로그래밍 언어를 사용하더라도 비슷한 문제를 겪을 수 있으며, 통합 개발 환경 (IDE)이라고 부르는 개발 도구라면 마땅히 이 수업에서 소개하는 기능을 갖추고 있습니다. 따라서, 여러분이 사용하는 프로그래밍 언어와 IDE를 사용하며 이 수업을 수강할 수 있습니다.

코딩으로 학습하는
리팩토링

이 강의에서는 총 24개의 코드 냄새와 각 냄새를 해결할 수 있는 여러 리팩토링 기술을 다루고 있습니다.
각 리팩토링 기술은 IntelliJ가 제공하는 기능을 적극적으로 활용하며, 여러분이 직접 실습할 수 있도록 예제 코드를 제공하고 있습니다.

  1. 이상한 이름 (Mysterious Name)
  2. 중복 코드 (Duplicated Code)
  3. 긴 함수 (Long Function)
  4. 긴 매개변수 목록 (Long Parameer List)
  5. 전역 데이터 (Global Data)
  6. 가변 데이터 (Mutable Data)
  7. 뒤엉킨 변경 (Divergent Change)
  8. 산탄총 수술 (Shotgun Surgery)
  9. 기능 편애 (Feature Envy)
  10. 데이터 뭉치 (Data Clumps)
  11. 기본형 집착 (Primitive Obsession)
  12. 반복되는 swtich 문 (Repleated Swtiches)
  13. 반복문 (Loops)
  14. 성의 없는 요소 (Lazy Element)
  15. 추측성 일반화 (Speculative Generality)
  16. 임시 필드 (Temporary Field)
  17. 메시지 체인 (Message Chains)
  18. 중재자 (Middle Man)
  19. 내부자 거래 (Insider Trading)
  20. 거대한 클래스 (Large Class)
  21. 서로 다른 인터페이스의 대안 클래스들 (Alternative Classes with Different Interfaces)
  22. 데이터 클래스 (Data Class)
  23. 상속 포기 (Refused Beques)
  24. 주석 (Comments)

 

모든 개발자의 필독서
리팩토링

리팩토링 1999년에 1판을 출판하고 2018년에 2판이 나왔으며 GoF의 저서《디자인 패턴》과 더불어
모든 개발자에게 추천하는 필독서 중 하나입니다.
과거와 지금, 그리고 앞으로도 업무에서 언제든 유용하게 쓰일 기술이니 꼭 학습하시기 바랍니다.

Refactoring (리팩터링 2판)
아마존 기준 평점 4.7/5
객체 지향 소프트웨어 디자인 분야 8위 (2022.02 기준)
모든 개발자에게 권장하는 추천 도서 중 하나

Martin Folwer
객체 지향 분석 설계, UML, 엔터프라이즈 패턴 그리고
익스트림 프로그래밍에 관한 여러 저술과 발표로
유명한 소프트웨어 엔지니어

 

📢 참고해주세요

    • 해당 강의는 마틴 파울러의 의 저서《리팩토링》을 참고해 만들었습니다. 개발자로서의 성장을 위해 이 책을 읽는 것을 권장하고 있으나, 강의 수강을 위해 책을 구매하실 필요는 없습니다.


이 강의가 리팩토링 책과 다른 점

  • 리팩토링 책은 각 코드 냄새를 간략히 다룬 뒤 카탈로그별로 리팩토링 기술을 자세히 다룹니다.
    하지만 이 강의는 문제 인식과 해결 방법이 이어지도록 코드 냄새와 각 냄새를 해결하는데 도움이 되는 리팩토링 기술을 자세히 다룬 이후, 리팩토링 카탈로그를 살펴보며 복습하는 방법을 사용하고 있습니다.
  • 또한 리팩토링 2판은 예제 코드가 자바스크립트로 작성되어 있으며 완벽한 예제 코드를 제공하진 않지만, 이 강의는 자바로 작성된 예제 코드를 제공해 여러분이 직접 실습할 수 있도록 준비했습니다.

  • 마지막으로 책에서는 IDE를 사용하지 않는다는 가정 하에 리팩토링 방법을 설명하지만, 현실적으로 자바 개발자 중 90%에 가까운 개발자가 IDE를 사용하고 있기 때문에 이 강의는 인텔리J의 기능을 적극적으로 활용하며 보다 실용적인 리팩토링을 소개하고 있습니다.

예상 질문 Q&A

Q. 개발자라면 리팩토링을 꼭 학습해야 하나요?

A. "어떻게든 동작하기만 하면 된다."가 아니라 "어떻게 하면 더 좋은 코드로 동작하게 만들 수 있을까?"를 고민하는 개발자라면 리팩토링을 반드시 학습해야 합니다. 이 강의에서 다루는 기술은 여러분이 작성하는 코드 품질을 향상시키는데 많은 도움을 줄 것입니다.

Q. 리팩토링은 언제 해야 하나요? 실무에서 리팩토링을 할 시간이 없어요.

A. 리팩토링은 시간을 정해놓고 해도 좋고, 새로운 코드를 작성할 때 또는 기존 코드를 수정하여 기능을 개선하거나 변경할 때 같이 진행할 수도 있습니다. 예를 들어, 제 업무 중에 자주 사용하는 클래스가 있는데  5년간 이것저것 쌓이다 보니 너무 커졌다는 생각이 들 정도로 코드 냄새가 나기 시작했습니다. 해당 업무를 마치고 시간을 조금 내서 "메소드 추출하기"와 "메소드 매개변수화하기"를 통해 상당수의 중복 코드를 제거하고 조금 더 읽기 좋은 코드를 만들어 보내고 코드 리뷰를 기다리고 있습니다. 한번에 크게 변경하기보다는 조금씩 자주 하다보면 시간을 오래 들이지 않아도 조금씩 개선할 수 있습니다.

Q. 자바 기초만 공부한 상태인데 이 강의를 수강해도 될까요?

A. 네, 자바 기초를 학습했다면 본 강의를 수강할 수 있습니다. 특히, 인텔리J 사용에 익숙하지 않은 분들이라면 이 강의에서 소개하는 인텔리J의 리팩토링 기능을 꼭 익히고 업무에서 활용하시기 바랍니다. 여러분의 생산성을 향상시켜줄 수 있는 많은 팁들이 기다리고 있습니다.

Q. 강의의 난이도나 방식이 저에게 맞을지 궁금합니다.

A. 이 강의에서 미리보기로 "이해하기 힘든 이름", "함수 선언 변경하기", 그리고 "변수 이름 변경하기" 수업을 공개해 두었습니다. 수강 전 강의를 미리 들어보신 후 이런 방식의 강의 진행이 본인에게 도움이 될지 판단해주시기 바랍니다.

마이크로소프트 시니어 개발자에게 배우는 리팩토링!

"개발자로 일을 하다 보면 한 번쯤은 코드를 '똥'에 비유하는 말을 들어보셨을 겁니다. 이런 코드들은 업무처리를 더디게 만들고 요구사항의 변경에 대처하기 어렵게 만듭니다.
이러한 코드를 깨끗하고도 안전하게 정리하는 방법이 리팩토링이며, 이를 통해 더욱 가독성 좋고 변화에 유연하게 대처 가능한 구조로 코드 변경이 가능합니다. 리팩토링으로 여러분 프로젝트의 코드를 아름답게 가꿔보시길 바랍니다."

지식공유자가 알려주는
강의 수강 꿀팁!
🎓
이런 분들께
추천드려요!
리팩토링을 처음 접하는 개발자 또는 학생
더 나은 코드로 개선하는 방법을 학습하고 싶은 개발자 또는 학생
인텔리J를 더 잘 활용하여 생산성을 높이고 싶은 개발자 또는 학생
📚
선수 지식,
필요한가요?
자바 기초

안녕하세요
백기선 입니다.
백기선의 썸네일

네이버와 아마존을 거쳐 현재 Microsoft에서 시니어 소프트웨어 엔지니어로 일하고 있습니다.

아인슈타인은 "교육이란 사실을 가르치는 것이 아니라, 생각할 수 있는 힘을 기르는 것이다."라고 말했습니다. 그리고 저도 그 말에 깊이 공감하며 강의를 만들고 있습니다.

유튜브:
'백기선' 채널에서 개발자 고민 상담 및 개발자에게 유용한 지식 공유
번역: 스프링 및 하이버네이트 관련 서적 다수 번역
저술: 쉽게 따라하는 자바 웹 개발

커리큘럼 총 78 개 ˙ 9시간 39분의 수업
이 강의는 영상, 첨부 파일이 제공됩니다. 미리보기를 통해 콘텐츠를 확인해보세요.
섹션 0. 소개
강의 소개 미리보기 07:10
강의 자료
소스 코드 06:45
섹션 2. 중복 코드
냄새 2. 중복 코드 04:44
리팩토링 4. 함수 추출하기 10:44
리팩토링 5. 코드 정리하기 05:33
리팩토링 6. 메소드 올리기 07:00
섹션 3. 긴 함수
냄새 3. 긴 함수 06:51
리팩토링 7. 임시 변수를 질의 함수로 바꾸기 06:47
리팩토링 8. 매개변수 객체 만들기 08:09
리팩토링 9. 객체 통째로 넘기기 07:54
리팩토링 10. 함수를 명령으로 바꾸기 08:09
리팩토링 11. 조건문 분해하기 05:28
리팩토링 12. 반복문 쪼개기 13:02
리팩토링 13. 조건문을 다형성으로 바꾸기 12:20
섹션 4. 긴 매개변수 목록
냄새 4. 긴 매개변수 목록 02:40
리팩토링 14. 매개변수를 질의 함수로 바꾸기 06:16
리팩토링 15. 플래그 인수 제거하기 08:19
리팩토링 16. 여러 함수를 클래스로 묶기 08:46
섹션 5. 전역 데이터
냄새 5. 전역 데이터 02:51
리팩토링 17. 변수 캡슐화하기 11:52
섹션 6. 가변 데이터
냄새 6. 가변 데이터 06:34
리팩토링 18. 변수 쪼개기 15:22
리팩토링 19. 질의 함수와 변경 함수 분리하기 10:51
리팩토링 20. 세터 제거하기 03:00
리팩토링 21. 파생 변수를 질의 함수로 바꾸기 09:56
리팩토링 22. 여러 함수를 변환 함수로 묶기 10:43
리팩토링 23. 참조를 값으로 바꾸기 09:35
섹션 7. 뒤엉킨 변경
냄새 7. 뒤엉킨 변경 03:45
리팩토링 24. 단계 쪼개기 11:59
리팩토링 25. 함수 옮기기 11:26
리팩토링 26. 클래스 추출하기 12:05
섹션 8. 산탄총 수술
냄새 8. 산탄총 수술 03:22
리팩토링 27. 필드 옮기기 10:20
리팩토링 28. 함수 인라인 07:37
리팩토링 29. 클래스 인라인 07:56
섹션 9. 기능 편애
냄새 9. 기능 편애 07:55
섹션 10. 데이터 뭉치
냄새 10. 데이터 뭉치 08:24
섹션 11. 기본형 집착
냄새 11. 기본형 집착 03:10
리팩토링 30. 기본형을 객체로 바꾸기 12:04
리팩토링 31. 타입 코드를 서브클래스로 바꾸기 17:35
리팩토링 32. 조건부 로직을 다형성으로 바꾸기 20:45
섹션 12. 반복되는 switch 문
냄새 12. 반복되는 switch 문 07:50
섹션 13. 반복문
냄새 13. 반복문 01:57
리팩토링 33. 반복문을 파이프라인으로 바꾸기 08:53
섹션 14. 성의없는 요소
냄새 14. 성의없는 요소 03:07
리팩토링 34. 계층 합치기 03:14
섹션 15. 추측성 일반화
냄새 15. 추측성 일반화 04:25
리팩토링 35. 죽은 코드 제거하기 03:26
섹션 16. 임시 필드
냄새 16. 임시 필드 02:24
리팩토링 36. 특이 케이스 추가하기 11:13
섹션 17. 메시지 체인
냄새 17. 메시지 체인 02:59
리팩토링 37. 위임 숨기기 05:03
섹션 18. 중재자
냄새 18. 중재자 03:07
리팩토링 38. 중재자 제거하기 05:56
리팩토링 39. 슈퍼클래스를 위임으로 바꾸기 08:55
리팩토링 40. 서브클래스를 위임으로 바꾸기 23:06
섹션 19. 내부자 거래
냄새 19. 내부자 거래 05:27
섹션 20. 거대한 클래스
냄새 20. 거대한 클래스 03:41
리팩토링 41. 슈퍼클래스 추출하기 06:07
섹션 21. 서로 다른 인터페이스의 대안 클래스들
냄새 21. 서로 다른 인터페이스의 대안 클래스들 11:31
섹션 22. 데이터 클래스
냄새 22. 데이터 클래스 02:35
리팩토링 42. 레코드 캡슐화하기 06:19
섹션 23. 상속 포기
냄새 23. 상속 포기 06:05
섹션 24. 주석
냄새 24. 주석 02:18
리팩토링 43. 어서션 추가하기 07:50
섹션 25. 리팩토링 카탈로그
카탈로그 1. 기본 기술 04:10
카탈로그 2. 캡슐화 05:35
카탈로그 3. 기능 옮기기 04:18
카탈로그 4. 데이터 조직화 04:09
카탈로그 5. 조건부 로직 간소화 05:18
카탈로그 6. API 리팩토링 08:14
카탈로그 7. 상속 다루기 04:31
섹션 26. 마무리
리팩토링 참고 자료 05:53
강의 게시일 : 2022년 02월 08일 (마지막 업데이트일 : 2022년 01월 27일)
수강평 총 43개
수강생분들이 직접 작성하신 수강평입니다. 수강평을 작성 시 300잎이 적립됩니다.
5.0
43개의 수강평
5점
4점
3점
2점
1점
VIEW 좋아요 순 최신 순 높은 평점 순 낮은 평점 순 평점 순 높은 평점 순 낮은 평점 순
Ju-Ho Yoon thumbnail
그동안 답답한 레거시 코드만 보다가 기선님의 강의를 들으니 정화되는 느낌이네요. 앞으로도 계속 좋은 강의 부탁드립니다 :)
2022-04-27
Truestar thumbnail
리팩터링 책에 없는, 실무적 관점의 강사님의 여러 의견들을 들을 수 있어서 좋았습니다. 솔직히 책 만으로는 부족하다 생각합니다. 리팩터링 할 실무적 상황이 필요하기 때문이죠. 강의를 듣는 와중에도, 여러 설명을 통해 상황을 시뮬레이션 할 수 있어서 실무적 관점의 궁금증이 어느정도 해소가 되기 때문에 좋았습니다. 그리고 마지막 추천하신 책이 난이도가 높아 과거에 사두고서 책장 박아놨던 책인데, 강의에서 언급해주셔서 책을 처분 안하길 잘했다고 안도를 하게 된 해프닝이 있었습니다 ㅎ 좋은 강의 감사드립니다.
2022-02-24
better36524@gmail.com thumbnail
막연하게 이렇게 작성하는 것이 좋다는 느낌으로 익히고 있던 것을 정리해볼 수 있던 강의였습니다.
2022-04-20
디미터 thumbnail
차분하게 말씀하셔서 더 귀에 잘 들어오는 것 같아요
2022-07-05
Eil thumbnail
디자인 패턴에 이어 두 번째 강의입니다. 내용이 정말 좋아요... 특히 쉽게 알려주세요. 먼저 타겟에 대한 인사이트를 알려주고 스스로 공부해야 한다는 특징이 있어요. 1부터 10까지 모든 것을 알려주는 강의를 원한다면 추천하지 않습니다. 다만, 독학으로 전혀 감이 오지 않는 생소함을 제거하고 흥미가 생기고 싶으신 분이라면 추천드려요. + 가끔씩 나오는 잡기술(?)이나 노하우가 어디서도 듣기 힘든 좋은 꿀팁입니다.
2022-03-07
지식공유자 되기
많은 사람들에게 배움의 기회를 주고,
경제적 보상을 받아보세요.
지식공유참여
기업 교육을 위한 인프런
“인프런 비즈니스” 를 통해 모든 팀원이 인프런의 강의를
자유롭게 학습하는 환경을 제공하세요.
인프런 비즈니스