コードの繰り返しを避けるという長年の疑問に対して、私は少し異なる見方をしていると思います。セットアップは非常に標準的です。同様のアクションを実行する一連の if ステートメントです。以下に簡単な例を示します。
コードの効率、コンパクトさ、およびプログラマーの容易さの観点から、このような状況に対処するための最良の方法を見つけようとしています。1 つのソリューションが 3 つすべてに当てはまるとは思えないため、これらの各ポイントに対処する個別のソリューションは問題なく、実際に好ましいことに注意してください。
たとえば、思いついた解決策の 1 つは、特に Android のようなモバイル デバイスでは、見苦しく遅いように思えます。また、変数がインスタンス変数である場合にのみ機能し、単なるローカル (場合)。このアイデアには、初期化式が二重ブレース初期化を使用して、関係する変数に対応する文字列でハッシュマップを埋める for ステートメントが含まれていました (たとえば、「installText」は「installPermission」にマップされます)。以下の -else-if--else-if 句。リフレクションを使用して、ハッシュマップに格納されている名前で変数にアクセスします。
どうすればこれを改善できますか?あなたの時間とアドバイスを前もってありがとう!
if (installText.equals("Default")) {
installPermission = DEFAULT;
} else if (installText.equals("Allow")) {
installPermission = ENABLED;
} else if (installText.equals("Disallow")) {
installPermission = DISABLED;
}
if (uninstallText.equals("Default")) {
uninstallPermission = DEFAULT;
} else if (uninstallText.equals("Allow")) {
uninstallPermission = ENABLED;
} else if (uninstallText.equals("Disallow")) {
uninstallPermission = DISABLED;
}
if (runText.equals("Default")) {
runPermission = DEFAULT;
} else if (runText.equals("Allow")) {
runPermission = ENABLED;
} else if (runText.equals("Disallow")) {
runPermission = DISABLED;
}