, 그것은 그룹 관련 진술에 좋습니다, 다음과 같은 예는 주어진다 :관련 변수 및 작업을 그룹화 하시겠습니까? 전체 코드, 10 장에서
void SummarizeData(...) {
...
GetOldData(oldData, &numOldData);
GetNewData(newData, &numNewData);
totalOldData = Sum(oldData, numOldData);
totalNewData = Sum(newData, numNewData);
PrintOldDataSummary(oldData, totalOldData, numOldData);
PrintNewDataSummary(newData, totalNewData, numNewData);
SaveOldDataSummary(totalOldData, numOldData);
SaveNewDataSummary(totalNewData, numNewData);
...
}
같은 그룹화 및 동시 처리가 나쁜 디자인이라고 언급하고 대신 더 분리 무언가를 제공합니다 :
void SummarizeData(...) {
GetOldData(oldData, &numOldData);
totalOldData = Sum(oldData, numOldData);
PrintOldDataSummary(oldData, totalOldData, numOldData);
SaveOldDataSummary(totalOldData, numOldData);
...
GetNewData(newData, &numNewData);
totalNewData = Sum(newData, numNewData);
PrintNewDataSummary(newData, totalNewData, numNewData);
SaveNewDataSummary(totalNewData, numNewData);
...
}
나는 두 번째 접근 방식은 읽기와 이해하기 쉽게, 적어도 내 자신의 관점에서, 청소기 보이는 코드를 제공하는 것을 동의한다. 그래서, 제 질문은 두 번째 접근법에 어떤 단점이 있습니까? 예를 들어, 내가 생각할 수있는 하나의 가능한 문제는 데이터베이스와 같은 임시 연결을 수 있습니다 :
void SummarizeData(...) {
...
externalDataStore.open();
externalDataStore.save(oldData, numOldData);
externalDataStore.save(newData, numNewData);
externalDataStore.close();
...
}
이 첫 번째 방법은 모두 하나의 열기/닫기주기 작업을 저장을 완료 할 것입니다. 그러나 두 번째 방법을 사용하면 ...
void SummarizeData(...) {
...
externalDataStore.open();
externalDataStore.save(oldData, numOldData);
externalDataStore.close();
...
externalDataStore.open();
externalDataStore.save(newData, numNewData);
externalDataStore.close();
...
}
각 작업마다 연결을 열고 닫아야합니다. 이것은 낭비되는 것처럼 보이지만 실제 성능에서 성능에 어떤 영향을 미치는지 전혀 알지 못합니다. 불필요하게 긴 질문에 대한 죄송합니다
...
포인터를 제공해 주셔서 감사합니다. 코드 컴플리트 (Code Complete)는 많은 정보를 가지고 있지만, 무엇보다도 여전히 액면 그대로 받아 들일 수는 없습니다. – voithos