Я думал об этой проблеме в течение некоторого времени, но я просто не могу придумать решение без необходимости писать дубликат кода. Проблема в части С# и части псевдокода:
bool test = true;
if (test == true)
{
if(first condition) {code}
}
else
{
if(different condition) {same code as above)
}
Я должен использовать эту часть в интенсивной части моей программы, и мне придется перенести 3 больших параметра, поэтому я бы предпочел не использовать метод.
Есть ли другой способ решить эту проблему?
if ((test && first_condition) || (!test && different_condition)) {
callSomeFunction();
}
if((test && firstCondition) || (!test && differentCondition)) {
//code
}
В зависимости от сложности условий этот подход иногда может помочь:
bool doBigCall = false;
if (test1)
{
if (test2)
{
doBigCall = true;
}
else
{
// ...
}
}
else
{
// ...
}
if (doBigCall)
{
// write the big bit of code just once
}
Я бы сделал это так:
// create an inline function to capture the
Action workAction = () => { //work; }
bool test = true;
if (test == true)
{
if(first condition) {workAction(); }
}
else
{
if(different condition) {workAction(); )
}
different_condition
- это!test
Так что это не имеет смысла. Это оставило бы именно то, что есть у OP. Если я не понимаю вас.)
.