BEST
개발 · 프로그래밍

/

개발 · 프로그래밍 기타

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

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

(5.0) 수강평 101개

수강생 2,799명

Thumbnail

초급자를 위해 준비한
[프로그래밍 언어, 개발 · 프로그래밍] 강의입니다.

이런 걸
배워요!

  • 총 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분)

수업 자료

가 제공되는 강의입니다.

강의 게시일: 
마지막 업데이트일: 

수강평

아직 충분한 평가를 받지 못한 강의입니다.
모두에게 도움이 되는 수강평의 주인공이 되어주세요!