2009-11-13 6 views
1

코드를 작성하고 간단한 코드 재사용 기회 (예 : 공용 클래스 또는 기본 클래스와 같이 접근하기 쉬운 곳으로 일반적인 코드를 가져 오는 경우)를 가정 해 보겠습니다. "이 작업을 수행하는 것이 좋다는 것을 알고 있지만이 작업을 지금 완료해야하며, 코드 코드로 변경해야하고 다른 곳에서 변경하는 것을 잊어 버린 경우, 내 테스트 프레임 워크가 나에게 알려줄 것이다. "좋은 테스트가 실수 코딩을 가능하게합니까?

즉, 당신이나 다른 개발자가 작성한 멋진 테스트를 통해 다른 곳의 코드도 변경하도록 알려줍니다.

이것은 우리 자신이나 다른 개발자에게서 볼 수있는 합법적 인 문제입니까?

+0

나는 당신이 문제가 무엇인지 이해한다고 말할 수 없다. 당신이 묘사 한 것이 모두 주위에 플러스 인 것처럼 들립니다. 당신은 당신의 진절머리 난 코드를 바꿀 수있는 힘을 느낍니다. 테스트는 너무 심하게 망가 뜨리면 당신에게 상기시켜줍니다. – mquander

답변

4

단위 테스트가 TODO 목록의 방법으로 귀하에게 의존하도록 권유하고 있습니까? 네,하지만 그 코딩은 엉성한 코딩이라고 생각하지 않습니다. 당신은, 어쨌든, 단위 테스트가 실패하고 테스트를 시작하는 것으로 시작해야합니다. 코드를 리팩토링하고 다시 테스트 코드를 작성하면 코딩이 엉성한 코딩이 아닙니다.

단위 테스트의 문제는 단순히 단위 테스트에서 모든 구석을 다룰 수 없다는 것이며, 때로는 작동 테스트가 작동하지 않는 앱을 ​​의미한다고 생각하는 경우가 있습니다.

0

변경이 필요한 코드를 찾는 첫 번째 옵션으로 테스트를 사용하지 않습니다. IDE의 검색 (또는 리팩터링) 기능을 사용하여 문제의 메서드를 호출하는 모든 위치를 찾습니다.

실수로 버그가 있거나 실수로 버그가 발생했을 경우를 대비하여 테스트가 추가되었습니다. 시험은 처음부터 나를 조잡하게 만들지 않습니다. 일단 끝났다고 생각하면 그들은 나를 안심시켜줍니다.

+0

글쎄, 충분한 메타 프로그래밍으로 IDE 검색 기능을 덜 유용하게 만드는 이상한 경우가있다. 그럼에도 불구하고 귀하의 소프트웨어가 메타 프로그래밍에 지나치게 의존하고 있다고 주장 할 수는 있습니다. –

+0

매크로 미로를 작성하면 IDE가 메소드의 모든 호출자를 찾지 못할 수도 있습니다. 하지만 평범한 오래된 찾기 모두 : "methodName"은 여전히 ​​그것을 찾아야합니다. –

0

좋은 테스트를 통해 실수 코딩을 수정할 수 있습니다.

0

테스트를하거나하지 않고 믿을 수 없을 정도로 엉성한 코드를 작성할 수 있습니다. 단위 테스트는 약간 빠져 나가기 쉽지만, 단기간에 만 가능합니다.

1

테스트가 좋고 코드가 잘못되었거나 잘못 전달 된 경우 모두 만족합니다. 좋은 코드를 사용하는 것이 좋지만 좋지 않은 코드가 좋은 코드보다 낫습니다.

0

코드에서 두 세트의 논리가 복사 된 경우 (개발자가 수행 할 수있는 최악의 경우 IMO) 일관성이없는 테스트가있을 수 있습니다.

모든 프로그래머가 할 수있는 가장 중요한 일은 무자비하게 코드를 리팩토링하고 모든 복제를 제거하는 것입니다. 이는 거의 항상 단일 반복에도 이점을 보여줍니다.

2 개 장소에서 복사 된 코드에 오류가 있으면 테스트가 더 좋을 것이라고 생각하십니까?

3

예제에서 제공하는 예제에서 실제 테스트를 통해 실수 한 디자인을 구현할 수 있지만 실제로는 나쁜 테스트를해도 동일한 결과를 얻지 못할 수 있습니다.

"이 작업을 지금 완료하고 있습니다."라는 전제는 잘못된 디자인을 구현하여 시간을 절약한다는 것을 의미합니다. 문제의 진실은 당신의 테스트가 좋은지 아닌지 당신이 기술적 인 빚을지고 있다는 것입니다. 그 코드를 변경하기 위해서는 테스트 프레임 워크가 있는지 여부에 상관없이 훨씬 복잡한 작업이 필요합니다.

미성숙 코드가 잘 작동하고 고객에게 완전히 받아 들일 수 있지만, 초과 수량은 프로그래머 의 극단적 인 전문화와 마지막으로 유연성이 제품에 이르는, 프로그램 unmasterable 할 것입니다. - Ward Cunningham

좋은 테스트 관행의 강도는 안전의 일부 수준의 채무를 부담하게 될 수 있습니다. 선택의 결과로 코드의이 영역이 현재 약하다는 사실을 계속 인식하는 한, 그로 인해 절충 할만한 가치가있을 수 있습니다 - 더 높은 부채를 지니고 더 빨리 결과적으로 단기간에 버그가 발생할 위험이 있습니다.

0

내게는 더러운 소리를내는 개발자처럼 들리며 현혹적인 코딩 관례는 사용자의 예에서 엉성한 코드로 이어지고 있습니다. 당신이 설명한 테스트는 에서 지금까지 멀어지는 코드를 방지합니다.

관련 문제