재구성은 무섭지 않아요.
무엇이 재구성입니까?
이 문제의 답안은 네가 전체 과정을 이해하는 데 매우 중요하다.재구성은 코드를 바꾸는 것이지 기능을 바꾸는 것이 아니다.
겸사겸사 여쭙겠습니다. 제가 말한 것은 과정입니까?네, 해냈습니다. 이것은 지속적인 과정이기 때문에 우리는 이 점을 자주 잊어버립니다.최근에 나는 우리 회사의 한 프로그래머 동료에게 물었다. "그럼 어떻게 개발 과정과 재구성을 통합합니까?"그는 "매번 돌진한 후에 우리는 재구성할 시간이 있다"고 말했다.그렇다면, 왜 이것은 나쁜 방법입니까?완전한 sprint 이후에, 너는 모든 기능을 작성할 때처럼 그렇게 많은 상하문이 없기 때문이다.너는 반드시: 코드를 읽고, 코드를 이해하고, 다른 기능으로 전환하고, 중복해야 한다.이 새로운 것들을 작성할 때 얼마나 효율적일지 생각해 봐라.
그래서 다시 한 번 강조하지만 재구성은 코드를 작성하는 것과 병행하는 과정이다!
우리는 왜 재구성해야 합니까?
답은 간단하다. 재구성은 미래의 원가를 절약할 수 있다.
점점 커지는 모든 항목도 갈수록 복잡해진다.만약 코드의 질이 복잡성에 부합되지 않는다면, 모든 사람들이 그것을 읽는 데 더 많은 시간을 들일 것이다.새로운 녹지 프로젝트라도 코드를 쓰거나 읽는 비율은 30%/70%일 수 있다(더 큰 프로젝트에서는 5%/95% 정도로 상승할 수 있다).70% 를 최적화하고 팀원 수를 곱하면 엄청난 절약을 가져올 수 있다.지금, 당신의 코드를 더욱 읽을 수 있게 하는 것이 미래에 큰 도움이 될 것이라고 생각하지 않습니까?
어떻게 재구성합니까?
새로운 기능을 실현하고 있으며, 새로운 클래스를 만들어서 작업을 처리하고 있다고 가정하십시오.학급 규모가 확대됨에 따라 너는 더욱 많은 결점을 보게 될 것이다.너는 어떻게 그것들을 발견할 수 있니?결백한 코드로 구출!
public void doSomething() {
while(conditionIsMet()) {
if (anotherConditionIsMet()) {
doSomeLogic();
}
}
}
이 점을 뛰어넘지 마라, 너는 갈 수 있다.더 깊이 들어가려면 - 함수를 추출해! product.grossValue = product.price * 1.23;
다음:product.grossValue = calculateGrossValue(product.price);
public double calculateGrossValue(int productPrice) {
return productPrice * PRODUCT_FEE;
}
추출 조건을 통해 조건을 간소화하다.이전과 유사하지만, 현재 우리는if,while,for문장 등의 조건을 겨냥하고 있다
if (!inventory.cars.isEmpty()) {
doSomething();
}
그런데 얘가 더 읽기 쉬워지지 않아요?if (carsInInventoryNotEmpty()) {
doSomething();
}
private boolean carsInInventoryNotEmpty() {
return !inventory.cars.isEmpty();
}
read more도 볼 수 있고, 코드를 개선하기 위해 더 많은 도구를 볼 수 있다.가장 기본적인 재구성도 IDE에서 제공해야 한다.가능한 한 그것을 사용하라. 왜냐하면 당신의 IDE는 지능적이기 때문이다. 만약 그것이 어떤 것도 파괴한다면, 그것은 당신을 재구성하지 못하게 할 것이다.
catalog of refactorings
요약
재구성된 이념은 매사를 동시에 완벽하게 만드는 것이 아니다.반대로 코드에 긍정적인 영향을 미치는 작은 변화를 많이 하고 싶어요.매번 당신이 변화를 할 때마다 나 자신에게 물어봐라. 나와 다른 이런 상황을 만날 수 있는 사람들이 더 쉽게 이해할 수 있을까?만약 답이 긍정적이라면, 너는 그것을 보류해야 한다.
기억해라, 너는 기계가 아닌 인간을 위해 코드를 생성한 것이다.네, 할 수 있어요.
당신은 이 화제에 대해 어떤 견해를 가지고 있습니까?댓글로 최고의 실천 공유!
Reference
이 문제에 관하여(재구성은 무섭지 않아요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/spalonytoster/refactoring-not-so-scary텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)