Table of Contents
이 문서는 귀하가 자신의 웹 사이트를 탐색하는 데 도움이되는 것입니다. 이 문서는 귀하가 웹 사이트를 탐색하는 데 도움이되는 것입니다. 이 문서는 귀하가 웹 사이트를 탐색하는 데 도움이되는 웹 사이트를 탐색하는 데 도움이되는 웹 사이트입니다. 이 문서는 귀하가 웹 사이트를 탐색하는 데 도움이되는 웹 사이트입니다. 이 문서는 귀하의 웹 사이트 탐색을 개선하기 위해 웹 사이트를 탐색하는 데 도움이되는 웹 사이트입니다.
Refactoring 이해
이 시스템은 시스템의 동작을 보존하면서 코드 품질, 읽기성 및 유지성을 향상시키기 위한 목적으로 기존 시스템의 핵심 기능을 변경하지 않고도 증가하는 기능을 포함합니다. 이 접근 방식은 기술 부채를 줄이고 향후 개발을 위한 시스템을 준비하는 데 사용됩니다. Refactoring은 기능 추가에 대해 아닙니다. 향후 변경이 더 쉽고 안전하며 더 빠른 코드의 내부 구조를 개선하는 것에 대해 있습니다.
증가 개선 및 코드 Smells
일반적으로 "코드 냄새"-표면 표시기 시스템은 일반적으로 시스템에 더 깊은 문제와 대응합니다. 예는 중복 코드, 긴 방법, 큰 클래스 및 과도한 커플 링이 포함되어 있습니다. 체계적으로 이러한 냄새 제거함으로써 팀은 더 많은 모듈 및 테스트 가능한 코드를 만들 수 있습니다. 정적 분석기 및 IDE 재구성 기능 (예 : Rename, Extract Method, Pull Up)과 같은 도구는 이러한 변화의 많은 자동화를 돕습니다.
재공장
이 웹 사이트는 귀하가 웹 사이트를 탐색하는 동안 귀하의 경험을 향상시키기 위해 쿠키를 사용합니다. 이 쿠키들 중에서 필요에 따라 분류 된 쿠키는 웹 사이트의 기본적인 기능을 수행하는 데 필수적이므로 브라우저에 저장됩니다. 또한이 웹 사이트의 사용 방식을 분석하고 이해하는 데 도움이되는 제 3 자 쿠키를 사용합니다. 이 쿠키는 귀하의 동의하에 만 브라우저에 저장됩니다. 이러한 쿠키를 거부 할 수도 있습니다. 이러한 쿠키 중 일부를 선택 해제하면 검색 환경에 영향을 미칠 수 있습니다.
Rewriting 이해
이 웹 사이트는 귀하가 웹 사이트를 탐색하는 동안 귀하의 경험을 향상시키기 위해 쿠키를 사용합니다. 이 쿠키들 중에서 필요에 따라 분류 된 쿠키는 웹 사이트의 기본적인 기능을 수행하는 데 필수적이므로 브라우저에 저장됩니다. 또한이 웹 사이트의 사용 방식을 분석하고 이해하는 데 도움이되는 제 3 자 쿠키를 사용합니다. 이 쿠키는 귀하의 동의하에 만 브라우저에 저장됩니다. 이러한 쿠키를 거부 할 수도 있습니다. 이러한 쿠키 중 일부를 선택 해제하면 검색 환경에 영향을 미칠 수 있습니다.
Greenfield 대 Brownfield 의문
이 하이브리드 접근법은 스크랩을 사용하여 스크랩을 제거하고, 스크랩을 제거하고, 스크랩을 제거하고, 스크랩을 제거하고, 스크랩을 제거하고, 스크랩을 제거하고, 스크랩을 제거하고, 스크랩을 제거하고, 스크랩을 제거하고, 스크랩을 제거하고, 스크랩을 제거하고, 스크랩을 제거하고, 스크랩을 제거하고, 스크랩을 제거하고, 스크랩을 제거하고, 스크랩을 제거하고, 스크랩을 제거하고, 스크랩을 제거하고, 스크랩을 제거하고, 스크랩을 제거하고, 스크랩을 제거하고, 스크랩을 제거하고, 스크랩을 제거하고, 스크랩을 제거하고, 스크랩을 제거하고, 스크랩을 제거하고, 스크랩을 제거하고, 스크랩을 제거하고, 스크랩을 제거하고, 스크랩을 제거하고, 스크랩을 제거하고, 스크랩을 제거하고, 스크랩을 제거하고, 스크랩을 제거하고, 스크랩을 제거하고,
을 읽을 때
Rewriting은 현재 시스템가 재건축보다 더 많은 비용을 절감 할 수있는 지점을 도달했을 때만 승인됩니다. 지표는 다음과 같습니다. codebase는 테스트되지 않습니다. 아키텍처는 필요한 변경을 방지합니다 (예를 들어, 수평으로 스케일을 갖지 못합니다), 또는 기술 스택은 더 이상 지원되지 않습니다. 또 다른 시나리오는 비즈니스 모델이 완전히 재건하지 않고도 기존 시스템이 적응할 수 없다는 것을 전적으로 변화했습니다. Rewriting은 또한 새로운 경쟁을 위해 경쟁적 인 이동이 될 수 있습니다.
위험 및 비용 비교
두 가지 접근법은 특정 위험 프로파일과 비용 구조를 수행한다. 이러한 이해를 통해 팀은 조직 위험 허용 오차 및 예산주기와 그들의 선택을 정렬합니다.
위험 요인
재정 위험:] 가장 큰 위험은 결코 끝나지 않는 것이고, 시스템의 부정적 문제의 지속성 동안 작은 개선의 끝없는 사이클이 됩니다. 또 다른 위험은 "감사 피로를 감수하고,"팀이 지연되고 이해 관계자에 보이지 않는 경우 동기를 잃는 것이 "입니다. 그러나, 각 수정이 작기 때문에 전형적으로 변화 위험이 낮아집니다.
재해 위험:] 가장 유명한 경고는 Joel Spolsky의 기사에서 온다 "당신은 결코 할 필요가 없습니다, 파트 I"], 그가 argues는 종종 버그를 발송하는, 기능-포터 교체 년 늦게. Rewriting는 일정 위험을 소개 (새로운 시스템은 더 이상 걸릴 수 있습니다 (위험) 다른 위험 (위험), 상호 작용 위험 (위험), 기타 위험 (위험).
비용 분석
소프트웨어 엔지니어링 연구소의 연구는 릴리스 비용 10-100x보다 더 많은 결함을 해결하는 것을 발견했다. 그러나 코드를 명확성을 개선하여 초기에 많은 결함을 끌어 당기는 것은 재설계, 재코드 및 모든 것을 재검사해야합니다. Rewriting은 큰 업 프론트 투자가 필요합니다. 재해석, 재설계, 재해석 및 모든 것을 재발견해야합니다. 재해석 비용 (TCO)은 종종 재발견을 초과하는 것을 초과합니다. 3 년 동안, 진정한 클라우드 운영 체제를 감소시킬 수 없습니다. 그러나, 진정한 클라우드 운영 체제를 유지하지 않는 한, 진정한 클라우드를 구축 할 수 없습니다.
엔지니어링 리더를위한 Decision Framework
재발견과 재발견 사이에 선택은 시스템 복잡성, 비즈니스 우선, 사용 가능한 자원 및 장기 목표와 같은 다양한 요인에 따라 달라집니다. 다음의 결정 프레임 워크는 특정 상황을 평가할 수 있습니다.
시스템의 건강 평가
이 웹 사이트는 귀하가 웹 사이트를 탐색하는 동안 귀하의 경험을 향상시키기 위해 쿠키를 사용합니다. 이 쿠키들 중에서 필요에 따라 분류 된 쿠키는 웹 사이트의 기본적인 기능을 수행하는 데 필수적이므로 브라우저에 저장됩니다. 또한이 웹 사이트의 사용 방식을 분석하고 이해하는 데 도움이되는 제 3 자 쿠키를 사용합니다. 이 쿠키는 귀하의 동의하에 만 브라우저에 저장됩니다. 이러한 쿠키를 거부 할 수도 있습니다. 이러한 쿠키 중 일부를 선택 해제하면 검색 환경에 영향을 미칠 수 있습니다.
사업 목표 정렬
이 웹 사이트는 귀하가 웹 사이트를 탐색하는 동안 귀하의 경험을 향상시키기 위해 쿠키를 사용합니다. 이 쿠키들 중에서 필요에 따라 분류 된 쿠키는 웹 사이트의 기본적인 기능을 수행하는 데 필수적이므로 브라우저에 저장됩니다. 또한이 웹 사이트의 사용 방식을 분석하고 이해하는 데 도움이되는 제 3 자 쿠키를 사용합니다. 이 쿠키는 귀하의 동의하에 만 브라우저에 저장됩니다. 이러한 쿠키 중 일부를 선택 해제하면 검색 환경에 영향을 미칠 수 있습니다. 이러한 쿠키 중 일부를 선택 해제하면 검색 환경에 영향을 미칠 수 있습니다.
팀 능력 및 기관 지식
이 웹 사이트는 귀하가 웹 사이트를 탐색하는 동안 귀하의 경험을 향상시키기 위해 쿠키를 사용합니다. 이 쿠키들 중에서 필요에 따라 분류 된 쿠키는 웹 사이트의 기본적인 기능을 수행하는 데 필수적이므로 브라우저에 저장됩니다. 또한이 웹 사이트의 사용 방식을 분석하고 이해하는 데 도움이되는 제 3 자 쿠키를 사용합니다. 이 쿠키는 귀하의 동의하에 만 브라우저에 저장됩니다. 이러한 쿠키를 거부 할 수도 있습니다. 이러한 쿠키 중 일부를 선택 해제하면 검색 환경에 영향을 미칠 수 있습니다.
Real-World 예제
다른 조직이이 선택이 실제 통찰력을 제공 할 수있는 방법을 시험.
예: Basecamp의 HEY의 재발견
Basecamp의 팀은 스크래치에서 스크래치로 덮어쓰기보다 기존의 Rails codebase를 재발견하기로 결정했습니다. 그들은 서비스 객체로 도메인 논리를 체계적으로 추출하고, 테스트 적용을 개선하고, 죽은 코드를 제거했습니다. 이 코드베이스 유지를 유지하면서 일정에 제품을 배송할 수 있었습니다. ]팀은 접근을 문서화했습니다, 증가하는 증가는 그들의 깊은 처리에 대한 깊은 이해를 보존하기 위해 중요한 열쇠였습니다.
예: FreshBooks의 재 작성
FreshBooks는 모노리딕 PHP 애플리케이션에서 현대적이고 확장 가능한 시스템까지 전체 플랫폼을 재개하고 있는 유명한 소프트웨어 회사입니다. 이 결정은 성능과 건축 제약으로 인해 수호하지 못했습니다. 리쓰드는 2년 이상 걸렸고, 10억 달러를 돌파했지만, 더 큰 고객을 봉사하고 지원 비용을 절감할 수 있었습니다. 리쓰가 "더 열심히 노력한 것은 우리가 가장 어려운 일입니다."라고 말했습니다. 기술적인 게시물은 다음과 같습니다. [Fir] 사업의 중요성과 사업의 중요성을 강조하는 것이 중요합니다. [Fir] 사업의 중요성은 다음과 같습니다. [Fir]
예: Martin Fowler의 Refactoring 커뮤니티
Martin Fowler, Seminal book Refactoring의 저자: Existing Code]의 디자인을 개량하고, rewriting에 refactoring를 위해 긴 옹호가 있습니다. 그는 대부분의 시스템은 자동화된 테스트 및 지속적인 통합에 투자하는 경우에 증가적으로 개량될 수 있다는 것을 주장합니다. 그의 refactoring 카탈로그는 어떤 팀에 있는 마지막 관점을 적용할 수 있는 입증된 본을 제공합니다.
결론: 올바른 선택을 만들기
이 웹 사이트는 귀하가 웹 사이트를 탐색하는 동안 귀하의 경험을 향상시키기 위해 쿠키를 사용합니다. 이 쿠키들 중에서 필요에 따라 분류 된 쿠키는 웹 사이트의 기본적인 기능을 수행하는 데 필수적이므로 브라우저에 저장됩니다. 또한이 웹 사이트의 사용 방식을 분석하고 이해하는 데 도움이되는 제 3 자 쿠키를 사용합니다. 이 쿠키는 귀하의 동의하에 만 브라우저에 저장됩니다. 이러한 쿠키를 거부 할 수도 있습니다. 이러한 쿠키 중 일부를 선택 해제하면 검색 환경에 영향을 미칠 수 있습니다. 이러한 쿠키 중 일부를 선택 해제하면 검색 환경에 영향을 미칠 수 있습니다.