SlideShare a Scribd company logo
1 of 8
Download to read offline
레거시 코드 활용 전략
레거시 코드 활용 전략
저자 서문이 모든 것을 말해준다:
레거시 코드라는 말을 들으면 여러분은 어떤 생각이 드는가? 나와 비슷한 생각이 든다면,
여기저기 얽힌 난해한 구조 때문에 제대로 이해하지 못하면서도 수정해야만 하는 코드가
떠오를 것이다. 겉보기에는 쉬워 보였던 기능을 추가하느라 며칠 밤을 지샌 추억이 떠오를
수도 있고, 더 이상 어떻게 할 수 없는 코드에 질려서 무력감에 빠진 모습이 떠오를 수도
있다. 이런 상황에서 당신의 노력은 무가치한 일처럼 느껴진다. 레거시 코드의 정의는 사
실 누가 그 코드를 작성했는가와 무관하다. 코드는 다양한 방법으로 부패하며, 대부분의
경우 다른 팀으로부터 가져온 코드인지 여부와는 무관하다.
소프트웨어 업계에서 레거시 코드란 이해할 수 없고 수정하기도 힘든 코드를 지칭하는 속
어처럼 사용될 때가 많다. 하지만 지난 수년간 고객들과 심각한 코드 문제들을 해결하는
공동 작업을 통해 나는 레거시 코드를 다르게 정의하게 됐다.
내게 레거시 코드란, 단순히 테스트 루틴이 없는 코드다. 다만 이 정의는 다소 불완전하다.
코드의 좋고 나쁨이 테스트와 어떤 관계가 있을까? 이 질문에 대한 답은 간단하다. 이것이
바로 이 책 전반에 걸쳐 자세히 설명할 핵심이다.
2004년도에 처음 출간된 이 책을 굳이 2021년에 소개하는 이유
레거시 코드 활용 전략
이 책의 목차
오늘도 현장에서 레거시 코드와 전투를 벌이고 있는 모든 개발자들을 위한 종합 선물 세트
• 1장 코드 변경의 메커니즘
• 2장 소프트웨어 변경
• 3장 피드백 활용
• 4장 감지와 분리
• 5장 도구
• 6장 고칠 것은 많고 시간은 없고
• 7장 코드 하나 바꾸는 데 왜 이리 오래 걸리지
• 8장 어떻게 기능을 추가할까?
• 9장 뚝딱! 테스트 하네스에 클래스 제대로 넣기
• 10장 테스트 하네스에서 이 메소드를 실행할 수 없다
• 11장 코드를 변경해야 한다
• 12장 클래스 의존 관계, 반드시 없애야 할까?
• 13장 변경해야 하는데, 어떤 테스트를 작성해야 할지 모르겠다
• 14장 나를 미치게 하는 라이브러리 의존 관계
• 15장 애플리케이션에 API 호출이 너무 많다
• 16장 변경이 가능할 만큼 코드를 이해하지 못하는 경우
• 17장 내 애플리케이션은 뼈대가 약하다
• 18장 테스트 코드가 방해를 한다
• 19장 내 프로젝트는 객체 지향이 아니다
• 20장 이 클래스는 너무 비대해서 더 이상 확장하고 싶지 않다
• 21장 반복되는 동일한 수정, 그만할 수는 없을까?
• 22장 ‘괴물 메소드’를 변경해야 하는데 테스트 코드를 작성하지
못하겠다
• 23장 기존 동작을 건드리지 않았음을 어떻게 확인할 수 있을까?
• 24장 어찌해야 할지 모르겠다. 나아질 것 같지 않아
레거시 코드 활용 전략
무엇이 이 책을 흥미롭게 만드는가?(1)
우리가 항상 고민해야 하는 사항
1. 코드 변경을 최소화하면서 테스트 루틴을 넣을 장소는 어디인가?
✓ 코드를 직접 편집하지 않고도 프로그램의 동작을 변경할 수 있는 위치인 봉합 지점 확보(전처리 봉합,
링크 봉합, 객체 봉합)
2. 어디서나 테스트가 가능한 단독 환경을 구축하기 위한 방법은 무엇인가?
✓ 데이터베이스, 네트워크, 각종 입출력 시스템 등 외부 의존성 줄이기
3. 테스트끼리 상호 작용을 최소로 만드는 방법은 무엇인가?
✓ 모듈 사이에서 강결합을 제거하는 방법으로 내부 의존성 줄이기
4. 최대한 빨리 빌드하고 최대한 빨리 테스트하기 위한 방법은 무엇인가?
✓ 인터페이스나 플러그인 아키텍처를 도입해 개방-확장 원칙을 추구하는 방법으로 빌드 의존성 줄이기
5. 단위 테스트가 없는 상황에서 리팩터링을 위한 부트스트래핑을 하는 방법은 무엇인가?
✓ 적절한 IDE의 리팩터링 기능 활용
✓ 꼼꼼한 작업
레거시 코드 활용 전략
무엇이 이 책을 흥미롭게 만드는가?(2)
레거시 코드를 이렇게 뜯고 저렇게 뜯고 아무튼 수정이 가능하게 만드는 해법을 제공한다
• 코드를 수정하려니까 테스트가 필요하고, 테스트를 넣으려니까 코드를 수정해야 하는 절대절명의 위기에서 우리는 무엇을 어떻게 해야
하나?
• 기존 코드와 정확하게 동일한 동작을 보증하기 위해 개발과 QA 담당자들은 무엇에 신경을 써야 하나?
• 의존성을 어떻게 격리하고 핵심 비즈니스 논리를 어떻게 정 중앙에 격리(클린 아키텍처)할지에 대한 실질적인 방안은 무엇인가?
• 마이크로서비스 아키텍처로 가기 위해 모놀리스를 분해할 때 업무의 경계면을 어떻게 따라가는지 머리가 아팠다면, 실제 코드에서 낮
은 결합도와 높은 응집력을 유지한채로 기능을 분리하는 묘수는 무엇인가?
• 콘웨이의 법칙에 따라 조직의 형태를 그대로 닮아가는(으악!) 코드 기반을 어떻게 정상화를 시킬 것인가?
• 여러 가지 다양한 패턴으로 실제 어떻게 코드를 수정해서 (볼츠만) 엔트로피를 줄이는지에 대한 실무적인 팁과 힌트가 가득 들어 있다!
레거시 코드 활용 전략
대상 독자
레거시 코드라면 질린 개발자
• 레거시와 함께 평화롭게 살고 싶은 개발자
• 리팩토링과 테스트의 중요성을 머리로는 이해하지만 아직 가슴까지 내려오지 않은 개발자
• 야근에 특근에 철야를 하지 않고서 유지보수를 어떻게 할 수 있는지 궁금한 개발자
• 기존 코드를 기반으로 마이크로서비스 아키텍처를 도입하는 과정에서 멘붕이 온 개발자
• 개발자들에게 마음의 평화를 주는 멋진 책
레거시 코드 활용 전략
결론
레거시는 함께 살아가야 하는 집이고 터전이다.
• 지속적으로 레거시 코드가 펌웨어화되어 하드웨어 발전에 따라 낡아 가는 상황에서 방어해야 한다.
• 리팩터링과 기능 추가 과정에서 테스트가 가능하게 개선해야 한다.
• 이 과정에서 클린 코드 기법을 도입해 가독성을 높여 유지보수가 가능하게 해야 한다.
• 마이클 페더스의 힌트: Michael Feathers: I think the main one(의존성을 깨기 위한 가장 중요한 기법) really is parameterized
constructor. – InfoQ 2021년 Podcast에서
• 여기서 잠깐 자체 광고: 클린코드/리팩터링과 레거시 코드의 개선을 위한 (초/중급 개발자 대상) 강의와 세미나가 필요하시면 언제든지
저에게 문의 주세요(다음 페이지 참고).
발표자 소개
기술 배경
전문 검색 엔진, 임베디드 시스템(리눅스 커널 디바이스 드라이버), 빅데이터/인공지능 연구 개발,
고성능 고가용성 데이터베이스
주요활동
IT 전문서 번역 (클린 코드, 피플웨어, 해커: 광기의 랩소디, 게임 엔진 블랙 북 등)
개발강의 (삼성전자, SK C&C, 삼성SDC, 현대자동차 기술 세미나와 교육)
활동채널
블로그: https://jhrogue.blogspot.com
슬라이드 셰어: https://www.slideshare.net/jrogue/presentations
유튜브: https://www.youtube.com/c/박재호dev
문의 jrogue@gmail.com
박재호

More Related Content

What's hot

非エンジニアのSQL活用が加速させる事業成長
非エンジニアのSQL活用が加速させる事業成長非エンジニアのSQL活用が加速させる事業成長
非エンジニアのSQL活用が加速させる事業成長Keiko Inagaki
 
クラウドネイティブトランスフォーメーションのススメ
クラウドネイティブトランスフォーメーションのススメクラウドネイティブトランスフォーメーションのススメ
クラウドネイティブトランスフォーメーションのススメHiromasa Oka
 
잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다
잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다
잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다Arawn Park
 
情報共有は、なぜGoogle Docsじゃなく、 Confluenceなのか。
情報共有は、なぜGoogle Docsじゃなく、 Confluenceなのか。情報共有は、なぜGoogle Docsじゃなく、 Confluenceなのか。
情報共有は、なぜGoogle Docsじゃなく、 Confluenceなのか。Narichika Kajihara
 
우아한 모노리스
우아한 모노리스우아한 모노리스
우아한 모노리스Arawn Park
 
[Cloud OnAir] BigQuery ML と AutoML Tables で はじめるマーケティング分析入門 2019年5月23日 放送
[Cloud OnAir] BigQuery ML と AutoML Tables で はじめるマーケティング分析入門 2019年5月23日 放送[Cloud OnAir] BigQuery ML と AutoML Tables で はじめるマーケティング分析入門 2019年5月23日 放送
[Cloud OnAir] BigQuery ML と AutoML Tables で はじめるマーケティング分析入門 2019年5月23日 放送Google Cloud Platform - Japan
 
Oracle Cloud Infrastructure:2021年9月度サービス・アップデート
Oracle Cloud Infrastructure:2021年9月度サービス・アップデートOracle Cloud Infrastructure:2021年9月度サービス・アップデート
Oracle Cloud Infrastructure:2021年9月度サービス・アップデートオラクルエンジニア通信
 
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해Terry Cho
 
Fault Tolerance 패턴
Fault Tolerance 패턴 Fault Tolerance 패턴
Fault Tolerance 패턴 YoungSu Son
 
Oracle Cloud Infrastructure セキュリティの取り組み [2021年8月版]
Oracle Cloud Infrastructure セキュリティの取り組み [2021年8月版]Oracle Cloud Infrastructure セキュリティの取り組み [2021年8月版]
Oracle Cloud Infrastructure セキュリティの取り組み [2021年8月版]オラクルエンジニア通信
 
【de:code 2020】 アマダの Azure への取り組みと DevOPS・MLOPS 環境の構築と運用
【de:code 2020】 アマダの Azure への取り組みと DevOPS・MLOPS 環境の構築と運用【de:code 2020】 アマダの Azure への取り組みと DevOPS・MLOPS 環境の構築と運用
【de:code 2020】 アマダの Azure への取り組みと DevOPS・MLOPS 環境の構築と運用日本マイクロソフト株式会社
 
카오스 엔지니어링을 활용한 마이크로서비스 안정성 개선하기 - 정준우, AWS 솔루션즈 아키텍트:: AWS Summit Online Kor...
카오스 엔지니어링을 활용한 마이크로서비스 안정성 개선하기 - 정준우, AWS 솔루션즈 아키텍트::  AWS Summit Online Kor...카오스 엔지니어링을 활용한 마이크로서비스 안정성 개선하기 - 정준우, AWS 솔루션즈 아키텍트::  AWS Summit Online Kor...
카오스 엔지니어링을 활용한 마이크로서비스 안정성 개선하기 - 정준우, AWS 솔루션즈 아키텍트:: AWS Summit Online Kor...Amazon Web Services Korea
 
「ITアーキテクトの役割と責任」デブサミ2015 20-C-1
「ITアーキテクトの役割と責任」デブサミ2015 20-C-1「ITアーキテクトの役割と責任」デブサミ2015 20-C-1
「ITアーキテクトの役割と責任」デブサミ2015 20-C-1Yusuke Suzuki
 
Management3.0のワークを受けてから会社の偉い人へ M3.0のワークショップをするまでにやったこと
Management3.0のワークを受けてから会社の偉い人へM3.0のワークショップをするまでにやったことManagement3.0のワークを受けてから会社の偉い人へM3.0のワークショップをするまでにやったこと
Management3.0のワークを受けてから会社の偉い人へ M3.0のワークショップをするまでにやったことterahide
 
Oracle Cloud Infrastructure:2022年9月度サービス・アップデート
Oracle Cloud Infrastructure:2022年9月度サービス・アップデートOracle Cloud Infrastructure:2022年9月度サービス・アップデート
Oracle Cloud Infrastructure:2022年9月度サービス・アップデートオラクルエンジニア通信
 
事例から見る規模別クラウド・データベースの選び方 (Oracle Database) (Oracle Cloudウェビナーシリーズ: 2021年6月30日)
事例から見る規模別クラウド・データベースの選び方 (Oracle Database) (Oracle Cloudウェビナーシリーズ: 2021年6月30日)事例から見る規模別クラウド・データベースの選び方 (Oracle Database) (Oracle Cloudウェビナーシリーズ: 2021年6月30日)
事例から見る規模別クラウド・データベースの選び方 (Oracle Database) (Oracle Cloudウェビナーシリーズ: 2021年6月30日)オラクルエンジニア通信
 
JWTを使った簡易SSOで徐々にシステムをリニューアルしている話
JWTを使った簡易SSOで徐々にシステムをリニューアルしている話JWTを使った簡易SSOで徐々にシステムをリニューアルしている話
JWTを使った簡易SSOで徐々にシステムをリニューアルしている話Kazuyoshi Tsuchiya
 
初めてのデータ分析基盤構築をまかされた、その時何を考えておくと良いのか
初めてのデータ分析基盤構築をまかされた、その時何を考えておくと良いのか初めてのデータ分析基盤構築をまかされた、その時何を考えておくと良いのか
初めてのデータ分析基盤構築をまかされた、その時何を考えておくと良いのかTechon Organization
 

What's hot (20)

非エンジニアのSQL活用が加速させる事業成長
非エンジニアのSQL活用が加速させる事業成長非エンジニアのSQL活用が加速させる事業成長
非エンジニアのSQL活用が加速させる事業成長
 
クラウドネイティブトランスフォーメーションのススメ
クラウドネイティブトランスフォーメーションのススメクラウドネイティブトランスフォーメーションのススメ
クラウドネイティブトランスフォーメーションのススメ
 
잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다
잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다
잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다
 
情報共有は、なぜGoogle Docsじゃなく、 Confluenceなのか。
情報共有は、なぜGoogle Docsじゃなく、 Confluenceなのか。情報共有は、なぜGoogle Docsじゃなく、 Confluenceなのか。
情報共有は、なぜGoogle Docsじゃなく、 Confluenceなのか。
 
우아한 모노리스
우아한 모노리스우아한 모노리스
우아한 모노리스
 
OCI Data Catalog Overview 2021年5月版
OCI Data Catalog Overview 2021年5月版OCI Data Catalog Overview 2021年5月版
OCI Data Catalog Overview 2021年5月版
 
[Cloud OnAir] BigQuery ML と AutoML Tables で はじめるマーケティング分析入門 2019年5月23日 放送
[Cloud OnAir] BigQuery ML と AutoML Tables で はじめるマーケティング分析入門 2019年5月23日 放送[Cloud OnAir] BigQuery ML と AutoML Tables で はじめるマーケティング分析入門 2019年5月23日 放送
[Cloud OnAir] BigQuery ML と AutoML Tables で はじめるマーケティング分析入門 2019年5月23日 放送
 
Bonfire API #1 APIのリトライ処理
Bonfire API #1 APIのリトライ処理Bonfire API #1 APIのリトライ処理
Bonfire API #1 APIのリトライ処理
 
Oracle Cloud Infrastructure:2021年9月度サービス・アップデート
Oracle Cloud Infrastructure:2021年9月度サービス・アップデートOracle Cloud Infrastructure:2021年9月度サービス・アップデート
Oracle Cloud Infrastructure:2021年9月度サービス・アップデート
 
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
 
Fault Tolerance 패턴
Fault Tolerance 패턴 Fault Tolerance 패턴
Fault Tolerance 패턴
 
Oracle Cloud Infrastructure セキュリティの取り組み [2021年8月版]
Oracle Cloud Infrastructure セキュリティの取り組み [2021年8月版]Oracle Cloud Infrastructure セキュリティの取り組み [2021年8月版]
Oracle Cloud Infrastructure セキュリティの取り組み [2021年8月版]
 
【de:code 2020】 アマダの Azure への取り組みと DevOPS・MLOPS 環境の構築と運用
【de:code 2020】 アマダの Azure への取り組みと DevOPS・MLOPS 環境の構築と運用【de:code 2020】 アマダの Azure への取り組みと DevOPS・MLOPS 環境の構築と運用
【de:code 2020】 アマダの Azure への取り組みと DevOPS・MLOPS 環境の構築と運用
 
카오스 엔지니어링을 활용한 마이크로서비스 안정성 개선하기 - 정준우, AWS 솔루션즈 아키텍트:: AWS Summit Online Kor...
카오스 엔지니어링을 활용한 마이크로서비스 안정성 개선하기 - 정준우, AWS 솔루션즈 아키텍트::  AWS Summit Online Kor...카오스 엔지니어링을 활용한 마이크로서비스 안정성 개선하기 - 정준우, AWS 솔루션즈 아키텍트::  AWS Summit Online Kor...
카오스 엔지니어링을 활용한 마이크로서비스 안정성 개선하기 - 정준우, AWS 솔루션즈 아키텍트:: AWS Summit Online Kor...
 
「ITアーキテクトの役割と責任」デブサミ2015 20-C-1
「ITアーキテクトの役割と責任」デブサミ2015 20-C-1「ITアーキテクトの役割と責任」デブサミ2015 20-C-1
「ITアーキテクトの役割と責任」デブサミ2015 20-C-1
 
Management3.0のワークを受けてから会社の偉い人へ M3.0のワークショップをするまでにやったこと
Management3.0のワークを受けてから会社の偉い人へM3.0のワークショップをするまでにやったことManagement3.0のワークを受けてから会社の偉い人へM3.0のワークショップをするまでにやったこと
Management3.0のワークを受けてから会社の偉い人へ M3.0のワークショップをするまでにやったこと
 
Oracle Cloud Infrastructure:2022年9月度サービス・アップデート
Oracle Cloud Infrastructure:2022年9月度サービス・アップデートOracle Cloud Infrastructure:2022年9月度サービス・アップデート
Oracle Cloud Infrastructure:2022年9月度サービス・アップデート
 
事例から見る規模別クラウド・データベースの選び方 (Oracle Database) (Oracle Cloudウェビナーシリーズ: 2021年6月30日)
事例から見る規模別クラウド・データベースの選び方 (Oracle Database) (Oracle Cloudウェビナーシリーズ: 2021年6月30日)事例から見る規模別クラウド・データベースの選び方 (Oracle Database) (Oracle Cloudウェビナーシリーズ: 2021年6月30日)
事例から見る規模別クラウド・データベースの選び方 (Oracle Database) (Oracle Cloudウェビナーシリーズ: 2021年6月30日)
 
JWTを使った簡易SSOで徐々にシステムをリニューアルしている話
JWTを使った簡易SSOで徐々にシステムをリニューアルしている話JWTを使った簡易SSOで徐々にシステムをリニューアルしている話
JWTを使った簡易SSOで徐々にシステムをリニューアルしている話
 
初めてのデータ分析基盤構築をまかされた、その時何を考えておくと良いのか
初めてのデータ分析基盤構築をまかされた、その時何を考えておくと良いのか初めてのデータ分析基盤構築をまかされた、その時何を考えておくと良いのか
初めてのデータ分析基盤構築をまかされた、その時何を考えておくと良いのか
 

Similar to (책 소개) 레거시 코드 활용 전략

[2012 03 17]clean_code 14장 점진적개선
[2012 03 17]clean_code 14장 점진적개선[2012 03 17]clean_code 14장 점진적개선
[2012 03 17]clean_code 14장 점진적개선Jong Pil Won
 
[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기
[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기
[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기Ahreum Kim
 
훌륭한 프로그래머 되는 법
훌륭한 프로그래머 되는 법훌륭한 프로그래머 되는 법
훌륭한 프로그래머 되는 법Kai [Kyung Seok] Song
 
(독서광) 필독! 개발자 온보딩 가이드
(독서광) 필독! 개발자 온보딩 가이드(독서광) 필독! 개발자 온보딩 가이드
(독서광) 필독! 개발자 온보딩 가이드Jay Park
 
NDC2019 - 게임플레이 프로그래머의 역할
NDC2019 - 게임플레이 프로그래머의 역할NDC2019 - 게임플레이 프로그래머의 역할
NDC2019 - 게임플레이 프로그래머의 역할Hoyoung Choi
 
Clean code chapter1
Clean code chapter1Clean code chapter1
Clean code chapter1ukjinkwoun
 
(독서광) 프로그래머의 뇌
(독서광) 프로그래머의 뇌(독서광) 프로그래머의 뇌
(독서광) 프로그래머의 뇌Jay Park
 
SWDeveloprStory201601
SWDeveloprStory201601SWDeveloprStory201601
SWDeveloprStory201601Suho Kwon
 
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018devCAT Studio, NEXON
 
커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님NAVER D2
 
Better softwareengineer han
Better softwareengineer hanBetter softwareengineer han
Better softwareengineer hanDaeMyung Kang
 
Dev rookie codecomplete-1
Dev rookie codecomplete-1Dev rookie codecomplete-1
Dev rookie codecomplete-1대영 노
 
플랫폼 디자이너 없이 디자인 시스템을 구축하는 프로덕트 디자이너의 우당탕탕 고통 연대기
플랫폼 디자이너 없이 디자인 시스템을 구축하는 프로덕트 디자이너의 우당탕탕 고통 연대기플랫폼 디자이너 없이 디자인 시스템을 구축하는 프로덕트 디자이너의 우당탕탕 고통 연대기
플랫폼 디자이너 없이 디자인 시스템을 구축하는 프로덕트 디자이너의 우당탕탕 고통 연대기NAVER Engineering
 
애자일 프랙티스
애자일 프랙티스애자일 프랙티스
애자일 프랙티스한 경만
 
SAYAHAE - 상품평 분석 및 추천 서비스 (자연어 처리)
SAYAHAE - 상품평 분석 및 추천 서비스 (자연어 처리)SAYAHAE - 상품평 분석 및 추천 서비스 (자연어 처리)
SAYAHAE - 상품평 분석 및 추천 서비스 (자연어 처리)Eunchan Lee
 
Slack과 Rust로 Amazon ECS에서 서비스 배포하기
Slack과 Rust로 Amazon ECS에서 서비스 배포하기Slack과 Rust로 Amazon ECS에서 서비스 배포하기
Slack과 Rust로 Amazon ECS에서 서비스 배포하기Eunchong Yu
 
C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법선협 이
 

Similar to (책 소개) 레거시 코드 활용 전략 (20)

[2012 03 17]clean_code 14장 점진적개선
[2012 03 17]clean_code 14장 점진적개선[2012 03 17]clean_code 14장 점진적개선
[2012 03 17]clean_code 14장 점진적개선
 
ecdevday7
ecdevday7ecdevday7
ecdevday7
 
[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기
[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기
[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기
 
훌륭한 프로그래머 되는 법
훌륭한 프로그래머 되는 법훌륭한 프로그래머 되는 법
훌륭한 프로그래머 되는 법
 
(독서광) 필독! 개발자 온보딩 가이드
(독서광) 필독! 개발자 온보딩 가이드(독서광) 필독! 개발자 온보딩 가이드
(독서광) 필독! 개발자 온보딩 가이드
 
NDC2019 - 게임플레이 프로그래머의 역할
NDC2019 - 게임플레이 프로그래머의 역할NDC2019 - 게임플레이 프로그래머의 역할
NDC2019 - 게임플레이 프로그래머의 역할
 
Clean code chapter1
Clean code chapter1Clean code chapter1
Clean code chapter1
 
(독서광) 프로그래머의 뇌
(독서광) 프로그래머의 뇌(독서광) 프로그래머의 뇌
(독서광) 프로그래머의 뇌
 
SWDeveloprStory201601
SWDeveloprStory201601SWDeveloprStory201601
SWDeveloprStory201601
 
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
 
커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님
 
리팩토링
리팩토링리팩토링
리팩토링
 
Better softwareengineer han
Better softwareengineer hanBetter softwareengineer han
Better softwareengineer han
 
Dev rookie codecomplete-1
Dev rookie codecomplete-1Dev rookie codecomplete-1
Dev rookie codecomplete-1
 
플랫폼 디자이너 없이 디자인 시스템을 구축하는 프로덕트 디자이너의 우당탕탕 고통 연대기
플랫폼 디자이너 없이 디자인 시스템을 구축하는 프로덕트 디자이너의 우당탕탕 고통 연대기플랫폼 디자이너 없이 디자인 시스템을 구축하는 프로덕트 디자이너의 우당탕탕 고통 연대기
플랫폼 디자이너 없이 디자인 시스템을 구축하는 프로덕트 디자이너의 우당탕탕 고통 연대기
 
애자일 프랙티스
애자일 프랙티스애자일 프랙티스
애자일 프랙티스
 
SAYAHAE - 상품평 분석 및 추천 서비스 (자연어 처리)
SAYAHAE - 상품평 분석 및 추천 서비스 (자연어 처리)SAYAHAE - 상품평 분석 및 추천 서비스 (자연어 처리)
SAYAHAE - 상품평 분석 및 추천 서비스 (자연어 처리)
 
Chean code chapter 1
Chean code chapter 1Chean code chapter 1
Chean code chapter 1
 
Slack과 Rust로 Amazon ECS에서 서비스 배포하기
Slack과 Rust로 Amazon ECS에서 서비스 배포하기Slack과 Rust로 Amazon ECS에서 서비스 배포하기
Slack과 Rust로 Amazon ECS에서 서비스 배포하기
 
C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법
 

More from Jay Park

(독서광) 쉽고 빠르게 익히는 실전 LLM - ChatGPT 활용부터 LLM 파인튜닝, 임베딩, 고급 프롬프트 엔지니어링까지
(독서광) 쉽고 빠르게 익히는 실전 LLM - ChatGPT 활용부터 LLM 파인튜닝, 임베딩, 고급 프롬프트 엔지니어링까지(독서광) 쉽고 빠르게 익히는 실전 LLM - ChatGPT 활용부터 LLM 파인튜닝, 임베딩, 고급 프롬프트 엔지니어링까지
(독서광) 쉽고 빠르게 익히는 실전 LLM - ChatGPT 활용부터 LLM 파인튜닝, 임베딩, 고급 프롬프트 엔지니어링까지Jay Park
 
(독서광) LEAN HR - 당신의 스타트업은 안녕하십니까 (한빛미디어 2024)
(독서광) LEAN HR - 당신의 스타트업은 안녕하십니까 (한빛미디어 2024)(독서광) LEAN HR - 당신의 스타트업은 안녕하십니까 (한빛미디어 2024)
(독서광) LEAN HR - 당신의 스타트업은 안녕하십니까 (한빛미디어 2024)Jay Park
 
(독서광) 구술 문화와 문자 문화: 출간 30주년 기념판 (전후 해제 포함)
(독서광) 구술 문화와 문자 문화: 출간 30주년 기념판 (전후 해제 포함)(독서광) 구술 문화와 문자 문화: 출간 30주년 기념판 (전후 해제 포함)
(독서광) 구술 문화와 문자 문화: 출간 30주년 기념판 (전후 해제 포함)Jay Park
 
(독서광) 테드 창의 숨 (아홉 가지 단편/중편 SF 과학 소설 모음집)
(독서광) 테드 창의 숨 (아홉 가지 단편/중편 SF 과학 소설 모음집)(독서광) 테드 창의 숨 (아홉 가지 단편/중편 SF 과학 소설 모음집)
(독서광) 테드 창의 숨 (아홉 가지 단편/중편 SF 과학 소설 모음집)Jay Park
 
(독서광) 이제는 이기는 인생을 살고 싶다 - 적을 만들지 않고 단번에 갈등을 풀어내는 백전백승 변호사의 지혜지략
(독서광) 이제는 이기는 인생을 살고 싶다 - 적을 만들지 않고 단번에 갈등을 풀어내는 백전백승 변호사의 지혜지략(독서광) 이제는 이기는 인생을 살고 싶다 - 적을 만들지 않고 단번에 갈등을 풀어내는 백전백승 변호사의 지혜지략
(독서광) 이제는 이기는 인생을 살고 싶다 - 적을 만들지 않고 단번에 갈등을 풀어내는 백전백승 변호사의 지혜지략Jay Park
 
(독서광) 프로덕트 매니저 원칙: 10년이 가도 변하지 않을 PM/PO로 살아가는 원칙과 철학
(독서광) 프로덕트 매니저 원칙: 10년이 가도 변하지 않을 PM/PO로 살아가는 원칙과 철학(독서광) 프로덕트 매니저 원칙: 10년이 가도 변하지 않을 PM/PO로 살아가는 원칙과 철학
(독서광) 프로덕트 매니저 원칙: 10년이 가도 변하지 않을 PM/PO로 살아가는 원칙과 철학Jay Park
 
(독서광) 개발자로 첫 출근했어요 - 사내 개발 도구, 기술, 문화 적응 가이드
(독서광) 개발자로 첫 출근했어요 - 사내 개발 도구, 기술, 문화 적응 가이드(독서광) 개발자로 첫 출근했어요 - 사내 개발 도구, 기술, 문화 적응 가이드
(독서광) 개발자로 첫 출근했어요 - 사내 개발 도구, 기술, 문화 적응 가이드Jay Park
 
(독서광) 책 vs 책: 코딩 테스트 합격자 되기 vs 파이썬 알고리즘 인터뷰
(독서광) 책 vs 책: 코딩 테스트 합격자 되기 vs 파이썬 알고리즘 인터뷰(독서광) 책 vs 책: 코딩 테스트 합격자 되기 vs 파이썬 알고리즘 인터뷰
(독서광) 책 vs 책: 코딩 테스트 합격자 되기 vs 파이썬 알고리즘 인터뷰Jay Park
 
(독서광) 테니스 이너 게임
(독서광) 테니스 이너 게임(독서광) 테니스 이너 게임
(독서광) 테니스 이너 게임Jay Park
 
(독서광) 인간 vs. AI 정규표현식 문제 풀이 대결
(독서광) 인간 vs. AI 정규표현식 문제 풀이 대결(독서광) 인간 vs. AI 정규표현식 문제 풀이 대결
(독서광) 인간 vs. AI 정규표현식 문제 풀이 대결Jay Park
 
(독서광) 모던 리눅스 교과서
(독서광) 모던 리눅스 교과서(독서광) 모던 리눅스 교과서
(독서광) 모던 리눅스 교과서Jay Park
 
(독서광) 상자 밖에 있는 사람
(독서광) 상자 밖에 있는 사람(독서광) 상자 밖에 있는 사람
(독서광) 상자 밖에 있는 사람Jay Park
 
(독서광) 자바 알고리즘 인터뷰 with 코틀린
(독서광) 자바 알고리즘 인터뷰 with 코틀린(독서광) 자바 알고리즘 인터뷰 with 코틀린
(독서광) 자바 알고리즘 인터뷰 with 코틀린Jay Park
 
(독서광) 리그 오브 레전드 플레이어 중심주의
(독서광) 리그 오브 레전드 플레이어 중심주의(독서광) 리그 오브 레전드 플레이어 중심주의
(독서광) 리그 오브 레전드 플레이어 중심주의Jay Park
 
(일상다반사) 2023년 구독자 3,000명 돌파 이벤트
(일상다반사) 2023년 구독자 3,000명 돌파 이벤트(일상다반사) 2023년 구독자 3,000명 돌파 이벤트
(일상다반사) 2023년 구독자 3,000명 돌파 이벤트Jay Park
 
(독서광) 오늘날 우리는 컴퓨터라 부른다
(독서광) 오늘날 우리는 컴퓨터라 부른다(독서광) 오늘날 우리는 컴퓨터라 부른다
(독서광) 오늘날 우리는 컴퓨터라 부른다Jay Park
 
(독서광) 사실은 이것도 디자인입니다
(독서광) 사실은 이것도 디자인입니다(독서광) 사실은 이것도 디자인입니다
(독서광) 사실은 이것도 디자인입니다Jay Park
 
(독서광) 프로덕트 매니지먼트
(독서광) 프로덕트 매니지먼트(독서광) 프로덕트 매니지먼트
(독서광) 프로덕트 매니지먼트Jay Park
 
(독서광) 슬기로운 파이썬 트릭
(독서광) 슬기로운 파이썬 트릭(독서광) 슬기로운 파이썬 트릭
(독서광) 슬기로운 파이썬 트릭Jay Park
 
(독서광) 유혹하는 글쓰기
(독서광) 유혹하는 글쓰기(독서광) 유혹하는 글쓰기
(독서광) 유혹하는 글쓰기Jay Park
 

More from Jay Park (20)

(독서광) 쉽고 빠르게 익히는 실전 LLM - ChatGPT 활용부터 LLM 파인튜닝, 임베딩, 고급 프롬프트 엔지니어링까지
(독서광) 쉽고 빠르게 익히는 실전 LLM - ChatGPT 활용부터 LLM 파인튜닝, 임베딩, 고급 프롬프트 엔지니어링까지(독서광) 쉽고 빠르게 익히는 실전 LLM - ChatGPT 활용부터 LLM 파인튜닝, 임베딩, 고급 프롬프트 엔지니어링까지
(독서광) 쉽고 빠르게 익히는 실전 LLM - ChatGPT 활용부터 LLM 파인튜닝, 임베딩, 고급 프롬프트 엔지니어링까지
 
(독서광) LEAN HR - 당신의 스타트업은 안녕하십니까 (한빛미디어 2024)
(독서광) LEAN HR - 당신의 스타트업은 안녕하십니까 (한빛미디어 2024)(독서광) LEAN HR - 당신의 스타트업은 안녕하십니까 (한빛미디어 2024)
(독서광) LEAN HR - 당신의 스타트업은 안녕하십니까 (한빛미디어 2024)
 
(독서광) 구술 문화와 문자 문화: 출간 30주년 기념판 (전후 해제 포함)
(독서광) 구술 문화와 문자 문화: 출간 30주년 기념판 (전후 해제 포함)(독서광) 구술 문화와 문자 문화: 출간 30주년 기념판 (전후 해제 포함)
(독서광) 구술 문화와 문자 문화: 출간 30주년 기념판 (전후 해제 포함)
 
(독서광) 테드 창의 숨 (아홉 가지 단편/중편 SF 과학 소설 모음집)
(독서광) 테드 창의 숨 (아홉 가지 단편/중편 SF 과학 소설 모음집)(독서광) 테드 창의 숨 (아홉 가지 단편/중편 SF 과학 소설 모음집)
(독서광) 테드 창의 숨 (아홉 가지 단편/중편 SF 과학 소설 모음집)
 
(독서광) 이제는 이기는 인생을 살고 싶다 - 적을 만들지 않고 단번에 갈등을 풀어내는 백전백승 변호사의 지혜지략
(독서광) 이제는 이기는 인생을 살고 싶다 - 적을 만들지 않고 단번에 갈등을 풀어내는 백전백승 변호사의 지혜지략(독서광) 이제는 이기는 인생을 살고 싶다 - 적을 만들지 않고 단번에 갈등을 풀어내는 백전백승 변호사의 지혜지략
(독서광) 이제는 이기는 인생을 살고 싶다 - 적을 만들지 않고 단번에 갈등을 풀어내는 백전백승 변호사의 지혜지략
 
(독서광) 프로덕트 매니저 원칙: 10년이 가도 변하지 않을 PM/PO로 살아가는 원칙과 철학
(독서광) 프로덕트 매니저 원칙: 10년이 가도 변하지 않을 PM/PO로 살아가는 원칙과 철학(독서광) 프로덕트 매니저 원칙: 10년이 가도 변하지 않을 PM/PO로 살아가는 원칙과 철학
(독서광) 프로덕트 매니저 원칙: 10년이 가도 변하지 않을 PM/PO로 살아가는 원칙과 철학
 
(독서광) 개발자로 첫 출근했어요 - 사내 개발 도구, 기술, 문화 적응 가이드
(독서광) 개발자로 첫 출근했어요 - 사내 개발 도구, 기술, 문화 적응 가이드(독서광) 개발자로 첫 출근했어요 - 사내 개발 도구, 기술, 문화 적응 가이드
(독서광) 개발자로 첫 출근했어요 - 사내 개발 도구, 기술, 문화 적응 가이드
 
(독서광) 책 vs 책: 코딩 테스트 합격자 되기 vs 파이썬 알고리즘 인터뷰
(독서광) 책 vs 책: 코딩 테스트 합격자 되기 vs 파이썬 알고리즘 인터뷰(독서광) 책 vs 책: 코딩 테스트 합격자 되기 vs 파이썬 알고리즘 인터뷰
(독서광) 책 vs 책: 코딩 테스트 합격자 되기 vs 파이썬 알고리즘 인터뷰
 
(독서광) 테니스 이너 게임
(독서광) 테니스 이너 게임(독서광) 테니스 이너 게임
(독서광) 테니스 이너 게임
 
(독서광) 인간 vs. AI 정규표현식 문제 풀이 대결
(독서광) 인간 vs. AI 정규표현식 문제 풀이 대결(독서광) 인간 vs. AI 정규표현식 문제 풀이 대결
(독서광) 인간 vs. AI 정규표현식 문제 풀이 대결
 
(독서광) 모던 리눅스 교과서
(독서광) 모던 리눅스 교과서(독서광) 모던 리눅스 교과서
(독서광) 모던 리눅스 교과서
 
(독서광) 상자 밖에 있는 사람
(독서광) 상자 밖에 있는 사람(독서광) 상자 밖에 있는 사람
(독서광) 상자 밖에 있는 사람
 
(독서광) 자바 알고리즘 인터뷰 with 코틀린
(독서광) 자바 알고리즘 인터뷰 with 코틀린(독서광) 자바 알고리즘 인터뷰 with 코틀린
(독서광) 자바 알고리즘 인터뷰 with 코틀린
 
(독서광) 리그 오브 레전드 플레이어 중심주의
(독서광) 리그 오브 레전드 플레이어 중심주의(독서광) 리그 오브 레전드 플레이어 중심주의
(독서광) 리그 오브 레전드 플레이어 중심주의
 
(일상다반사) 2023년 구독자 3,000명 돌파 이벤트
(일상다반사) 2023년 구독자 3,000명 돌파 이벤트(일상다반사) 2023년 구독자 3,000명 돌파 이벤트
(일상다반사) 2023년 구독자 3,000명 돌파 이벤트
 
(독서광) 오늘날 우리는 컴퓨터라 부른다
(독서광) 오늘날 우리는 컴퓨터라 부른다(독서광) 오늘날 우리는 컴퓨터라 부른다
(독서광) 오늘날 우리는 컴퓨터라 부른다
 
(독서광) 사실은 이것도 디자인입니다
(독서광) 사실은 이것도 디자인입니다(독서광) 사실은 이것도 디자인입니다
(독서광) 사실은 이것도 디자인입니다
 
(독서광) 프로덕트 매니지먼트
(독서광) 프로덕트 매니지먼트(독서광) 프로덕트 매니지먼트
(독서광) 프로덕트 매니지먼트
 
(독서광) 슬기로운 파이썬 트릭
(독서광) 슬기로운 파이썬 트릭(독서광) 슬기로운 파이썬 트릭
(독서광) 슬기로운 파이썬 트릭
 
(독서광) 유혹하는 글쓰기
(독서광) 유혹하는 글쓰기(독서광) 유혹하는 글쓰기
(독서광) 유혹하는 글쓰기
 

(책 소개) 레거시 코드 활용 전략

  • 2. 레거시 코드 활용 전략 저자 서문이 모든 것을 말해준다: 레거시 코드라는 말을 들으면 여러분은 어떤 생각이 드는가? 나와 비슷한 생각이 든다면, 여기저기 얽힌 난해한 구조 때문에 제대로 이해하지 못하면서도 수정해야만 하는 코드가 떠오를 것이다. 겉보기에는 쉬워 보였던 기능을 추가하느라 며칠 밤을 지샌 추억이 떠오를 수도 있고, 더 이상 어떻게 할 수 없는 코드에 질려서 무력감에 빠진 모습이 떠오를 수도 있다. 이런 상황에서 당신의 노력은 무가치한 일처럼 느껴진다. 레거시 코드의 정의는 사 실 누가 그 코드를 작성했는가와 무관하다. 코드는 다양한 방법으로 부패하며, 대부분의 경우 다른 팀으로부터 가져온 코드인지 여부와는 무관하다. 소프트웨어 업계에서 레거시 코드란 이해할 수 없고 수정하기도 힘든 코드를 지칭하는 속 어처럼 사용될 때가 많다. 하지만 지난 수년간 고객들과 심각한 코드 문제들을 해결하는 공동 작업을 통해 나는 레거시 코드를 다르게 정의하게 됐다. 내게 레거시 코드란, 단순히 테스트 루틴이 없는 코드다. 다만 이 정의는 다소 불완전하다. 코드의 좋고 나쁨이 테스트와 어떤 관계가 있을까? 이 질문에 대한 답은 간단하다. 이것이 바로 이 책 전반에 걸쳐 자세히 설명할 핵심이다. 2004년도에 처음 출간된 이 책을 굳이 2021년에 소개하는 이유
  • 3. 레거시 코드 활용 전략 이 책의 목차 오늘도 현장에서 레거시 코드와 전투를 벌이고 있는 모든 개발자들을 위한 종합 선물 세트 • 1장 코드 변경의 메커니즘 • 2장 소프트웨어 변경 • 3장 피드백 활용 • 4장 감지와 분리 • 5장 도구 • 6장 고칠 것은 많고 시간은 없고 • 7장 코드 하나 바꾸는 데 왜 이리 오래 걸리지 • 8장 어떻게 기능을 추가할까? • 9장 뚝딱! 테스트 하네스에 클래스 제대로 넣기 • 10장 테스트 하네스에서 이 메소드를 실행할 수 없다 • 11장 코드를 변경해야 한다 • 12장 클래스 의존 관계, 반드시 없애야 할까? • 13장 변경해야 하는데, 어떤 테스트를 작성해야 할지 모르겠다 • 14장 나를 미치게 하는 라이브러리 의존 관계 • 15장 애플리케이션에 API 호출이 너무 많다 • 16장 변경이 가능할 만큼 코드를 이해하지 못하는 경우 • 17장 내 애플리케이션은 뼈대가 약하다 • 18장 테스트 코드가 방해를 한다 • 19장 내 프로젝트는 객체 지향이 아니다 • 20장 이 클래스는 너무 비대해서 더 이상 확장하고 싶지 않다 • 21장 반복되는 동일한 수정, 그만할 수는 없을까? • 22장 ‘괴물 메소드’를 변경해야 하는데 테스트 코드를 작성하지 못하겠다 • 23장 기존 동작을 건드리지 않았음을 어떻게 확인할 수 있을까? • 24장 어찌해야 할지 모르겠다. 나아질 것 같지 않아
  • 4. 레거시 코드 활용 전략 무엇이 이 책을 흥미롭게 만드는가?(1) 우리가 항상 고민해야 하는 사항 1. 코드 변경을 최소화하면서 테스트 루틴을 넣을 장소는 어디인가? ✓ 코드를 직접 편집하지 않고도 프로그램의 동작을 변경할 수 있는 위치인 봉합 지점 확보(전처리 봉합, 링크 봉합, 객체 봉합) 2. 어디서나 테스트가 가능한 단독 환경을 구축하기 위한 방법은 무엇인가? ✓ 데이터베이스, 네트워크, 각종 입출력 시스템 등 외부 의존성 줄이기 3. 테스트끼리 상호 작용을 최소로 만드는 방법은 무엇인가? ✓ 모듈 사이에서 강결합을 제거하는 방법으로 내부 의존성 줄이기 4. 최대한 빨리 빌드하고 최대한 빨리 테스트하기 위한 방법은 무엇인가? ✓ 인터페이스나 플러그인 아키텍처를 도입해 개방-확장 원칙을 추구하는 방법으로 빌드 의존성 줄이기 5. 단위 테스트가 없는 상황에서 리팩터링을 위한 부트스트래핑을 하는 방법은 무엇인가? ✓ 적절한 IDE의 리팩터링 기능 활용 ✓ 꼼꼼한 작업
  • 5. 레거시 코드 활용 전략 무엇이 이 책을 흥미롭게 만드는가?(2) 레거시 코드를 이렇게 뜯고 저렇게 뜯고 아무튼 수정이 가능하게 만드는 해법을 제공한다 • 코드를 수정하려니까 테스트가 필요하고, 테스트를 넣으려니까 코드를 수정해야 하는 절대절명의 위기에서 우리는 무엇을 어떻게 해야 하나? • 기존 코드와 정확하게 동일한 동작을 보증하기 위해 개발과 QA 담당자들은 무엇에 신경을 써야 하나? • 의존성을 어떻게 격리하고 핵심 비즈니스 논리를 어떻게 정 중앙에 격리(클린 아키텍처)할지에 대한 실질적인 방안은 무엇인가? • 마이크로서비스 아키텍처로 가기 위해 모놀리스를 분해할 때 업무의 경계면을 어떻게 따라가는지 머리가 아팠다면, 실제 코드에서 낮 은 결합도와 높은 응집력을 유지한채로 기능을 분리하는 묘수는 무엇인가? • 콘웨이의 법칙에 따라 조직의 형태를 그대로 닮아가는(으악!) 코드 기반을 어떻게 정상화를 시킬 것인가? • 여러 가지 다양한 패턴으로 실제 어떻게 코드를 수정해서 (볼츠만) 엔트로피를 줄이는지에 대한 실무적인 팁과 힌트가 가득 들어 있다!
  • 6. 레거시 코드 활용 전략 대상 독자 레거시 코드라면 질린 개발자 • 레거시와 함께 평화롭게 살고 싶은 개발자 • 리팩토링과 테스트의 중요성을 머리로는 이해하지만 아직 가슴까지 내려오지 않은 개발자 • 야근에 특근에 철야를 하지 않고서 유지보수를 어떻게 할 수 있는지 궁금한 개발자 • 기존 코드를 기반으로 마이크로서비스 아키텍처를 도입하는 과정에서 멘붕이 온 개발자 • 개발자들에게 마음의 평화를 주는 멋진 책
  • 7. 레거시 코드 활용 전략 결론 레거시는 함께 살아가야 하는 집이고 터전이다. • 지속적으로 레거시 코드가 펌웨어화되어 하드웨어 발전에 따라 낡아 가는 상황에서 방어해야 한다. • 리팩터링과 기능 추가 과정에서 테스트가 가능하게 개선해야 한다. • 이 과정에서 클린 코드 기법을 도입해 가독성을 높여 유지보수가 가능하게 해야 한다. • 마이클 페더스의 힌트: Michael Feathers: I think the main one(의존성을 깨기 위한 가장 중요한 기법) really is parameterized constructor. – InfoQ 2021년 Podcast에서 • 여기서 잠깐 자체 광고: 클린코드/리팩터링과 레거시 코드의 개선을 위한 (초/중급 개발자 대상) 강의와 세미나가 필요하시면 언제든지 저에게 문의 주세요(다음 페이지 참고).
  • 8. 발표자 소개 기술 배경 전문 검색 엔진, 임베디드 시스템(리눅스 커널 디바이스 드라이버), 빅데이터/인공지능 연구 개발, 고성능 고가용성 데이터베이스 주요활동 IT 전문서 번역 (클린 코드, 피플웨어, 해커: 광기의 랩소디, 게임 엔진 블랙 북 등) 개발강의 (삼성전자, SK C&C, 삼성SDC, 현대자동차 기술 세미나와 교육) 활동채널 블로그: https://jhrogue.blogspot.com 슬라이드 셰어: https://www.slideshare.net/jrogue/presentations 유튜브: https://www.youtube.com/c/박재호dev 문의 jrogue@gmail.com 박재호