프로그래머 동료와 토론하여 작업 코드를 수정하여 테스트 할 수 있도록 (예 : 단위 테스트를 통해) 좋은지 나쁜지에 대한 토론이 있습니다.
제 생각에는 좋은 객체 지향 및 소프트웨어 엔지니어링 관행 ( "모든 것을 공개하는 것"등)을 유지하는 한도 내에서 괜찮다는 것입니다.
내 동료의 의견은 테스트 목적으로 만 코드를 수정하는 것이 잘못되었다는 것입니다.
간단한 예를 들면, C #으로 작성된 일부 구성 요소에서 사용하는이 코드 조각을 생각해보십시오.
public void DoSomethingOnAllTypes()
{
var types = Assembly.GetExecutingAssembly().GetTypes();
foreach (var currentType in types)
{
// do something with this type (e.g: read it's attributes, process, etc).
}
}
이 코드는 실제 작업을 수행하는 다른 메소드를 호출하도록 수정할 수 있다고 제안했습니다.
public void DoSomething(Assembly asm)
{
// not relying on Assembly.GetExecutingAssembly() anymore...
}
이 방법은 Assembly 객체를 처리하여 자체 어셈블리를 전달하여 테스트를 수행 할 수 있도록합니다. 제 동료는 이것이 좋은 습관이라고 생각하지 않았습니다.
좋은 관행은 무엇입니까?
Type
아닌 매개 변수로 사용해야 합니다Assembly
.