मेरे पास ध्वज तर्क के साथ एक विधि है। मुझे लगता है कि एक विधि के लिए एक बूलियन गुजरना एक बुरा अभ्यास है (हस्ताक्षर जटिल करता है, "प्रत्येक विधि एक चीज करता है" सिद्धांत का उल्लंघन करता है)। मुझे लगता है कि विधि को दो अलग-अलग तरीकों से विभाजित करना बेहतर है। लेकिन अगर मैं ऐसा करता हूं, तो दो विधियां बहुत समान होंगी (कोड डुप्लिकेशन)।क्या ध्वज तर्क के साथ एक विधि को विभाजित करने के लिए कोई तकनीक है?
मुझे आश्चर्य है कि फ्लैग तर्क के साथ दो अलग-अलग तरीकों से विभाजित विधियों के लिए कुछ सामान्य तकनीकें हैं या नहीं।
यहाँ मेरी विधि (जावा) का कोड है:
int calculateNumOfLiveOrDeadNeighbors(Cell c, int gen, boolean countLiveOnes) {
int x = c.getX();
int y = c.getY();
CellState state;
int aliveCounter = 0;
int deadCounter = 0;
for (int i = x - 1; i <= x + 1; i++) {
for (int j = y - 1; j <= y + 1; j++) {
if (i == x && j == y)
continue;
state = getCell(i, j).getCellState(gen);
if (state == CellState.LIVE || state == CellState.SICK){
aliveCounter++;
}
if(state == CellState.DEAD || state == CellState.DEAD4GOOD){
deadCounter++;
}
}
}
if(countLiveOnes){
return aliveCounter;
}
return deadCounter;
}
अच्छा विचार है, लेकिन फ़िल्टर को लागू करने के लिए स्थिर आंतरिक कक्षाओं का उपयोग करें। – Ralph