タイトルの言葉の正確な言い方ではありませんが、一般的な質問はこれらの2つのコードブロックを比較しています。最初のものは元のもので、2番目のものはそれを置き換えるものです。if、else if、else文の機能性と可読性
これは実際にコードを改善しますか、それは効率か、可読性を向上させるだけでしょうか?私は何かが欠けていない限り、彼らは機能的に異なるとは思わない。
1ST:
if(stl1YVal < stl2YVal){
return -1;
}else if(stl1YVal > stl2YVal){
return 1;
}else{
if(stl1XVal < stl2XVal){
return -1;
}else if(stl1XVal > stl2XVal){
return 1;
}else{
return 0;
}
}
2ND:
if(stl1YVal < stl2YVal || stl1XVal < stl2XVal){
return -1;
}else if(stl1YVal > stl2YVal || stl1XVal > stl2XVal){
return 1;
}else {
return 0;
}
編集:私は場合...それは人々に少しより多くの意味を行うことができるように全体の方法を入れています人々はそれをもっと読みやすくて機能的にするための答え/解決策を持っています(2番目のものは同等ではないようです)。
(彼らがあるため、単純なテキスト行のSTL命名されている - 私はそれらに名前を付けていなかった)
public int compare(SimpleTextLine stl1, SimpleTextLine stl2){
//0 -> stl1 and stl2 are equivalent, maintain current order
//-1 -> stl1 comes before stl2
//1 -> stl2 comes before stl1
float stl1XVal = Math.round(stl1.getxLinePos());
float stl1YVal = Math.round(stl1.getyLinePos());
float stl2XVal = Math.round(stl2.getxLinePos());
float stl2YVal = Math.round(stl2.getyLinePos());
if(stl1YVal < stl2YVal){
return -1;
}else if(stl1YVal > stl2YVal){
return 1;
}else{
if(stl1XVal < stl2XVal){
return -1;
}else if(stl1XVal > stl2XVal){
return 1;
}else{
return 0;
}
}
}
は必ず例これらの種類の読みやすさを好みます。実際の効率は、あなたが使っている 'if'ステートメントの種類とは全く異なる場所で決まります。 – Kayaman
2番目のソリューションは機能的には最初のソリューションと同等ではありません。例: 'stl1YVal> stl2YVal'が真で、' stl1XVal
dunni
私は@Kayamanに同意します。私はむしろ2番目のブロックに取り組んでいます。効率/実行時間は、言語と環境に大きく依存するものであり、何回も繰り返し実行されていなければ意味がありません。それでも、直接的な証拠(例えばプロファイリング)なしで「最適化」を開始するのは間違いでしょう。 –