코드 예제는 C#이지만 일반적인 OO 질문입니다.프로그램 전체에 사용되는 공용 정적 데이터
당신은 어떤이있는 비의 프로그램을 작성 : 나는 OO 규칙에 따라 알
는, 클래스 커플 링 등
이 예제를 고려, 최소화해야하며, 회원은 가능한 비밀로 유지되어야한다 데이터 집합의 종류 (나는 System.Data.DataSet에 대해 말하지 않고있다.)는 말 그대로 프로그램의 모든 측면에서 사용된다. 사실, 프로그램은 기본적으로 데이터 세트를로드, 표시, 조작 및 저장하기 위해 존재합니다. 또한 언제든지 하나의 데이터 세트 만로드 될 수 있으며 프로그램이 열릴 때로드됩니다.
우리는 우리가
public void ShowSomeGraphs(IData data)
{
// do stuff with data which implements IData
}
그러나 우리는 잠재적으로 예를 들어,
Program
에
public static Data
멤버를 저장할 수있는 것, 엄격 OO 규칙을 따라야합니다.
public void ShowSomeGraphs()
{
// do stuff with Program.Data
}
반면에 우리는 클래스 결합을 크게 증가시키기 위해 약간 더 짧은 기능 서명을 교환했습니다. 반면에, 우리는 더 이상 실질적으로 의 함수마다 데이터 매개 변수를 전달하지 않습니다. 모든 곳.
오른쪽 대답은 아마도 가능합니다. 가능하면 클래스 연결을 피하십시오. 로컬 데이터 변수는 포인터 일 뿐이므로 메모리 오버 헤드는 무시할 수 있으며 클래스가 분리되어 있으므로 나중에 다른 곳에서 사용할 수 있습니다.
현실적으로 말하자면 Data 클래스의 구조는 다른 응용 프로그램에서 달라지기 때문에이 프로그램에서 수업을 끌어 와서 다른 곳으로 옮길 수는 없습니다. 과 같은 방식으로 클래스를 작성하는 데 필요한 추가 시간과 노력은 이해 관계자에게 정당화하기 어려울 수 있습니다.
나는 지금 이런 종류의 프로그램을 만들고있다. 그리고 나는 OO-canon 접근법을 사용했다. 데이터 매개 변수는 필요한 곳에 전달된다. IData 인터페이스와의 클래스 결합을 최소화하여 향후 코드 재구성을 위해 데이터 세트를 일반화한다. -용도. 응용 프로그램이 주어지면이 코드를 다시 사용하지 않을 것이라고 확신합니다. 이러한 여분의 인터페이스와 추상화가 없으면 프로그램은 최종 사용자와 관련하여 정확히 동일하게 작동했지만 두통과 개발 시간이 크게 줄어 들었습니다.
이 점에 대해 어떻게 생각하십니까? 가능하면 클래스가 분리되어 있는지 확인하기 위해 인터페이스와 일반화를 작성하는 데 여분의 시간을 소비하는 것이 합당하다고 생각하십니까? 특히 나중에 다른 클래스를 사용할 수없는 경우가 있습니다.
정말 의견의 문제입니다. 그것은 코드 스타일과 시간의 문제입니다. 프로그램은 가능한 한 최소한의 버그로 작동하도록되어 있습니다. 코드 스타일은 복잡성을 줄이고 코드를 이해하기 쉬우 며 변경 사항에 더 적합하고 프로젝트간에 재사용하기위한 것입니다. 실제로 무엇을하기로 결정 했습니까? – galchen
@Ozzah : 클라이언트 코드에서 데이터 인터페이스에 쉽게 액세스 할 수 있도록 느슨한 결합을 허용하는 단일 솔루션을 얼마나 쉽고 빠르게 구현할 수 있는지 보여주기 위해 코드 샘플을 추가했습니다. –