独学のコーダーとして、コーディングのベスト プラクティスについて質問があります。私は同じプログラムを 2 つの異なる方法で作成しましたが、どちらの方法が望ましいかについて誰かに教えてもらいたいですか? これは、CPU のオーバーヘッドや RAM の使用量、または単にコーディングのベスト プラクティスの観点からのものである可能性があります。この質問には多くの答えや理論があるかもしれませんが、それがスタック オーバーフローの目的ではないことはわかっていますが、私のコーディング スタイルが問題を引き起こしているため、これはスタック オーバーフローの質問です。私も固執するか、採用する必要がある方法を知っています。
どちらの例にも、2 つのボタンと 2 つの更新可能なテキストビュー (ここには含まれていません) を持つ単純な XML レイアウト ファイルがあります。
例 1. (私が現在コーディングしている方法)
public class MainActivity extends Activity {
Button button1Add, button2Add;
TextView text1Display, text2Display;
int count1, count2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initilizeButtons();
setupListeners();
}
public void initilizeButtons() {
button1Add = (Button) findViewById(R.id.button1);
button2Add = (Button) findViewById(R.id.button2);
text1Display = (TextView) findViewById(R.id.textView1);
text2Display = (TextView) findViewById(R.id.textView2);
count1 = Integer.parseInt(text1Display.getText().toString());
count2 = Integer.parseInt(text2Display.getText().toString());
}
public void setupListeners() {
button1Add.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
count1++;
text1Display.setText(String.valueOf(count1));
}
});
button2Add.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
count2++;
text2Display.setText(String.valueOf(count2));
}
});
}
}
例 2. (私がコーディングすべきだと思う方法は?)
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initilizeButtons();
}
public void initilizeButtons() {
Button button1Add = (Button) findViewById(R.id.button1);
Button button2Add = (Button) findViewById(R.id.button2);
button1Add.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
TextView text1Display = (TextView) findViewById(R.id.textView1);
int headCount = Integer.parseInt(text1Display.getText().toString());
headCount++;
text1Display.setText(String.valueOf(headCount));
}
});
button2Add.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
TextView text2Display = (TextView) findViewById(R.id.textView2);
int bodyCount = Integer.parseInt(text2Display.getText().toString());
bodyCount++;
text2Display.setText(String.valueOf(bodyCount));
}
});
}
}
例 1 では、変数を宣言し、プログラム全体でそれらに追加するだけなので、これはより高速になる (つまり、CPU が少なくなる) と想定しています。ここでRAMの使用量が心配です。
例 2 では、変数を使用するたびにすべての変数を再宣言する必要があるため、CPU 使用率が高くなると思いますが、使用する RAM が少ないのでしょうか?
これらは単なる例であり、それら自体が CPU や RAM のオーバーヘッドに大きな影響を与えることはないと確信しています。あなたが提供する回答からの情報を、私の一般的なコーディングの実践に適用します。