次のコードを検討してください。
if (matcher1.find()) {
String str = line.substring(matcher1.start()+7,matcher1.end()-1);
/*+7 and -1 indicate the prefix and suffix of the matcher... */
method1(str);
}
if (matcher2.find()) {
String str = line.substring(matcher2.start()+8,matcher2.end()-1);
method2(str);
}
...
私にはn個のマッチャーがあり、すべてのマッチャーは独立しています(1つが真の場合、他のマッチャーについては何も言いません...)、真のマッチャーごとに、一致したコンテンツに対して異なるメソッドを呼び出しています。
質問:ここにあるコードの重複や「魔法数」は好きではありませんが、それを行うためのより良い方法があるかどうか疑問に思っています...?(多分ビジターパターン?)何か提案はありますか?