«refactoring» 태그된 질문

리팩토링은 기존 코드를 재구성하여 외부 동작을 변경하지 않고 내부 구조를 변경하는 훈련 된 기술입니다.

11
주요 리팩토링을 수행 할 때 TDD를 수행하는 사람들이 작업 손실을 처리하는 방법
잠시 동안 나는 코드에 대한 단위 테스트 작성을 배우려고 노력했다. 처음에는 실패한 테스트를 먼저 작성할 때까지 코드를 작성하지 않는 진정한 TDD를 시작했습니다. 그러나 최근에 많은 코드와 관련된 해결하기 어려운 문제가있었습니다. 테스트를 작성하고 코드를 작성하는 데 몇 주를 소비 한 후, 전체 접근 방식이 작동하지 않는다는 불행한 결론에 이르렀고 2 주 …
37 tdd  refactoring 

10
매직 넘버 제거 : 언제 "아니오"라고 말할 때입니까?
우리는 마술 숫자 (하드 코딩 된 값)가 프로그램에서 혼란을 겪을 수 있다는 것을 알고 있습니다. 특히 주석이없는 코드 섹션을 수정할 때가 있지만 선을 어디에서 그리는가? 예를 들어, 이틀 사이의 시간 (초)을 계산하는 함수가 있다면 seconds = num_days * 24 * 60 * 60 와 seconds = num_days * HOURS_PER_DAY * …

12
코드 작성 방법의 점진적인 변화가 시스템 성능에 영향을 미쳤습니까? 내가 신경 써야 할까?
TD; DR : 내가 묻는 것에 대해 약간의 혼란이 있었으므로 여기에 질문의 원동력이 있습니다. 나는 항상 그 질문이 무엇인지 생각했습니다. 원래 잘 표현하지 않았을 수도 있습니다. 그러나 의도는 항상 " 모 놀리 식 단일 단위, 한 곳에서 모든 것을 수행하는 것, 하나의 파일, 단단히 결합 된 "코드 보다 본질적으로 느리게 …

4
이 유형의 리팩토링에 대한 용어는 무엇입니까
다음과 같은 리팩토링에 대한 용어가 있다고 확신하지만 기억할 수 없으며 Google-fu가 실패합니다! 리 팩터는 if 문을 가장 영향을 줄 수있는 곳으로 옮깁니다 (예 : $test = someFunctionThatReturnsABool(); for($x = 0; $x < 10000; $x++) { if ($test) { echo $x; } } 이에 $test = someFunctionThatReturnsABool(); if ($test) { for($x …

7
실수로 중복되는 코드를 방지하려면 어떻게해야합니까?
나는 다소 큰 코드 기반으로 작업합니다. 수백 개의 클래스, 수많은 다른 파일, 많은 기능, 새로운 사본을 풀다운하는 데 15 분 이상이 소요됩니다. 이러한 큰 코드 기반의 큰 문제는 상당히 많은 유틸리티 메소드가 있고 동일한 기능을 수행하거나 가능한 경우 이러한 유틸리티 메소드를 사용하지 않는 코드가 있다는 것입니다. 또한 유틸리티 메소드는 모두 …

8
“가변은 가능한 한 가장 작은 범위 내에 있어야한다”는“가능한 경우 변수가 존재하지 않아야한다”는 사례를 포함합니까?
" 인스턴스 변수보다 로컬 변수를 선호하는 이유는 무엇입니까? " 에 대한 대답에 따르면 변수는 가능한 가장 작은 범위 내에 있어야합니다. 내 해석으로 문제를 단순화하면 다음과 같은 종류의 코드를 리팩터링해야합니다. public class Main { private A a; private B b; public ABResult getResult() { getA(); getB(); return ABFactory.mix(a, b); } private …

10
“Child x = new Child ();”대신“Parent x = new Child ();”가 후자를 사용할 수 있다면 나쁜 습관입니까?
예를 들어, 다음과 같은 조각을 만드는 코드를 보았습니다. Fragment myFragment=new MyFragment(); MyFragment 대신 변수를 Fragment로 선언합니다. MyFragment는 Fragment의 자식 클래스입니다. 이 코드는 다음과 같아야한다고 생각하기 때문에이 코드 줄을 만족시키지 못했습니다. MyFragment myFragment=new MyFragment(); 어느 것이 더 구체적입니까? 또는 질문의 일반화에서 사용하는 것이 나쁜 습관입니까? Parent x=new Child(); 대신에 Child x=new …

9
리팩토링시기
나는 Fowler 's Refactoring 책의 대부분을 읽었으며 과거의 크고 작은 많은 응용 프로그램을 리팩토링했습니다. 내가 가르치기 어려운 것들 중 하나는 "언제나"리팩토링하는 것입니다. 나는 과거에 놀랍게도 잘 맞는 직감에 근거하여 이것을하는 경향이있다. 그러나 코드 조각을 단독으로 남겨 두어야하는지 아니면 리팩터링해야하는지에 대해 사람들과 토론 할 때 "장 점검"을 지키기가 어렵습니다. 나는 이것에 …

4
매직 문자열 / 숫자 사용법 [닫힘]
이것은 다소 논란의 여지가있는 주제이며 프로그래머가있는만큼 많은 의견이 있다고 생각합니다. 그러나 그것을 위해, 나는 사업 (또는 직장)에서 일반적인 관행이 무엇인지 알고 싶습니다. 우리 직장에는 엄격한 코딩 지침이 있습니다. 그 중 한 섹션은 마법의 문자열 / 숫자 전용입니다. (C #의 경우) 기호 상수를 정의하기 위해 코드에 리터럴 값 (숫자 또는 문자열)을 …

11
친구와 작은 프로젝트를 포기할시기를 결정하는 데 어떤 요소가 영향을 미칩니 까? [닫은]
나는 늦게 힘든 곳에서 자신을 발견했다. 거의 8 개월 동안 프로그래밍 친구와 게임을하고 있습니다. 우리는 작년 8 월경에 프로그래밍을 시작한 신입생으로 시작했습니다. 그는 2 학년 CS 학생이며, 저는 무역 분야의 IT 지원 기술이며, 수많은 서적과 온라인 구독을 갖춘 독학 프로그래머입니다. 내가 끊임없이보고있는 문제는 우리가 코드 덩어리를 작성할 때 종종 약간의 …

6
기술 부채를 돌 보면서 어떤 상환을 보았습니까?
기술 부채에 관한 이 기사 에는 다음을 포함하여 몇 가지 좋은 점이 있습니다. "기술적 인 문제"에 대한 작업은 이야기에 의해 주도 될 때 가장 효과적입니다. 코드베이스는 어느 곳에서나 작업이 필요할 수 있지만 사용자가 직면 한 이유로 코드를 처리 할 경우에만 지불해야합니다. 어떤 멍청한 부분을 지나치려는 이야기가 없다면, 그 작업은 크게 …

8
리팩토링 할 때 단위 테스트가 어떻게 작동합니까?
또 다른 질문에서, TDD의 어려움 중 하나는 리팩토링 중 및 리팩토링 후 테스트 스위트를 코드베이스와 동기화하는 것으로 밝혀졌습니다. 저는 리팩토링의 열렬한 팬입니다. 나는 TDD를 포기하지 않을 것입니다. 그러나 사소한 리팩토링으로 인해 많은 테스트 실패가 발생하는 방식으로 작성된 테스트 문제도 경험했습니다. 리팩토링시 테스트 중단을 어떻게 피합니까? 더 나은 테스트를 작성합니까? 그렇다면 …

6
플래그를 확인할 필요가없는 디자인 패턴이 있습니까?
데이터베이스에 문자열 페이로드를 저장하겠습니다. 두 가지 전역 구성이 있습니다. 암호화 압축 이들 중 하나만 활성화되거나 둘 다 활성화되거나 비활성화되는 방식으로 구성을 사용하여 활성화 또는 비활성화 할 수 있습니다. 내 현재 구현은 다음과 같습니다. if (encryptionEnable && !compressEnable) { encrypt(data); } else if (!encryptionEnable && compressEnable) { compress(data); } else if …

6
스위치 문 리팩토링 그리고 스위치 문을 실제로 사용합니까?
이 기사를 읽고 궁금해했습니다. 모든 스위치 문을 Dictionary 또는 Factory로 교체하여 프로젝트에 스위치 문이 전혀 없도록 모든 스위치 문을 제거합니까? 무언가가 더해지지 않았습니다. 문제는 switch 문이 실제로 사용되거나 사전 또는 팩토리 메소드로 대체하고 있습니까? 공장 사용 ...하지만 그게 전부입니다).

13
외부 동작을 변경하지 않고 리팩토링을 얼마나 멀리 푸시 할 수 있습니까?
Martin Fowler에 따르면 코드 리팩토링은 (강조 광산)입니다. 리팩토링은 기존 코드를 재구성하여 외부 동작을 변경하지 않고 내부 구조 를 변경 하는 훈련 된 기술입니다 . 그 핵심은 변화를 보존하는 일련의 작은 행동입니다. 각 변환 ( '리팩토링'이라고 함)은 거의 수행하지 않지만 일련의 변환은 상당한 구조 조정을 생성 할 수 있습니다. 각 리팩토링은 …

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.