さまざまな状況で使用されている、少し複雑なforループがあるとします。そのforループを抽出し、コードを読みやすくする方法はありますか?
例えば:
private function bar(){
for(i=0;i<arrayA.length;i++){
if(arrayA[i].someVar == foobar){
doSomethingA();
}
}
}
private function foo(){
for(i=0;i<arrayA.length;i++){
if(arrayA[i].someVar == foobar){
doSomethingB();
}
}
}
私がこれを行う/質問に答える方法は、次のようなものを書くことです:
private function loopFunction(callback:Function){
for(i=0;i<arrayA.length;i++){
if(arrayA[i].someVar == foobar){
callback();
}
}
}
private function bar(){
loopFunction(doSomethingA);
}
private function foo(){
loopFunction(doSomethingB);
}
ただし、このアプローチでは、誰がいつ何をしているのかよくわからないため、コードが読みにくくなることがあります。特に、渡された関数が別のクラスからのものである場合。これを行うためのより良い方法はありますか?
このソリューションが機能しない可能性があるもう1つの理由は、コールバック関数にさまざまなパラメーターを渡す必要がある場合です。例えば。
private function bar(){
for(i=0;i<arrayA.length;i++){
if(arrayA[i].someVar == foobar){
doSomethingA(arrayA);
}
}
}
private function foo(){
for(i=0;i<arrayA.length;i++){
if(arrayA[i].someVar == foobar){
doSomethingB(i);
}
}
}