Как самообучающийся кодер У меня есть вопрос о лучшей практике кодирования. Я написал одну и ту же программу двумя разными способами, и я хотел бы, чтобы кто-то дал мне руководство, каким образом это предпочтение? Это может быть связано с нагрузкой на ЦП или использованием ОЗУ или просто с точки зрения наилучшей практики кодирования. Я понимаю, что на этот вопрос может быть много ответов или теорий, и я знаю, что это не то, что для Stack Overflow здесь, но для меня это вопрос переполнения стека, поскольку мой стиль кодирования вызывает у меня некоторые проблемы, и я не знаете, какой метод я должен придерживаться или придерживаться.Java/Android, какой метод кодирования является предпочтительным?
Оба примера имеют простой файл макета 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 I предположим, что это будет быстрее (т. е. меньше CPU), поскольку я объявил свои переменные и просто добавляю к ним всю программу. Я беспокоюсь об использовании ОЗУ.
В примере 2 Я думаю, что это приведет к большему количеству использования ЦП, поскольку оно должно обновлять все переменные каждый раз, когда они используются, но, возможно, он использует меньше ОЗУ?
Это просто примеры, и я уверен, что они сами не будут сильно зависеть от накладных расходов CPU или RAM. Я буду применять информацию из ответа, который вы предоставляете моей общей практике кодирования.
У вас проблема с производительностью/памятью? Если нет, то помните: «преждевременная оптимизация - это корень всего зла ...» Кстати, в наши дни ссылка не считается стоимостью памяти. Слишком много ссылок (и не поддерживающих их должным образом), с другой стороны, может привести к утечке памяти ... – ppeterka
Возможно, вы захотите переписать на codereview.stackexchange.com. Это те вопросы, на которые они сосредоточены. – Perception
Что вы хотите знать с вашим вопросом. сначала уточните свой вопрос, чтобы другие могли ответить вам лучше всего. –