2010-06-24 6 views
0

일부 데이터에서 작동하는 일련의 기능이있는 경우 각 기능이 데이터를 사용하기 전에 유효한지 확인하거나 체인의 시작 부분에서 확인을 수행하는 것이 좋으며 체인의 모든 기능을 " 그것이 "유효하다는 것을"신뢰 하는가?데이터를 사용하는 모든 단계에서 데이터 검증을하는 것이 더 좋습니까?

+0

** 전달 된 데이터는 유효하지 않아야합니다. 특히 사람이 입력 한 데이터는 신뢰할 수 없습니다. –

답변

0

체인의 하위 기능이 자체적으로 호출되는지 여부에 따라 크게 결정에 영향을 미칩니다. 특정 클래스가 프로그램의 다른 클래스에 의해서만 호출되는 엄격하게 계층화 된 시스템을 사용하는 경우 이러한 내부 클래스는 훨씬 더 가벼운 데이터 검사를 수행하고 데이터를 "신뢰"할 수 있습니다.

에서

"코드 전체 2"스티브 맥코넬에 의해 :. 방어 프로그램을 위해 바리케이드하는

"한 가지 방법은 '안전'영역에 대한 경계와 같은 특정 인터페이스를 지정하는 데이터가 안전 영역의 경계를 교차 확인 유효성을 검사하고 데이터가 유효하지 않은 경우 현명하게 응답하십시오.

클래스 수준에서 동일한 접근 방식을 사용할 수 있습니다. 클래스의 공용 메서드는 데이터가 안전하지 않다고 가정합니다. 클래스의 public 메서드에 의해 데이터가 허용되면 클래스의 개인 메서드는 데이터가 안전하다고 가정 할 수 있습니다. "

1

방어 프로그래밍을 적용하는 것은 항상 좋은 습관입니다. 가능한 모든 시나리오를 고려해야합니다.

입력이 사용자에게서 오는 경우 유효성 검사가 매우 중요하므로이 경우 유효하지 않은 각 데이터 시나리오에서 코드가 수행해야 할 작업을 알고 있어야합니다. 예측할 수있는 상황에 대한 단언을 시도하고 예기치 않은 상황에 대한 예외를 시도하십시오. 세부 사항은 사용하는 언어에 따라 다릅니다. 이것은 방탄 프로그램의 기초입니다.

관련 문제