作为一名自学的编码员,我有一个关于编码最佳实践的问题。我已经用两种不同的方式编写了相同的程序,我希望有人给我哪个方向更好的指导?这可能来自CPU开销或RAM使用,或者仅仅是编码最佳实践观点。我很感谢这个问题可能有很多答案或理论,我知道这不是堆栈溢出在这里,但对我来说这是一个堆栈溢出的问题,因为我的编码风格导致我一些问题,我不知道我应该坚持或采用哪种方法。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(I倾向于在时刻进行编码的方式)假设这会更快(即更少的CPU),因为我声明了我的变量,并在整个程序中添加它们。我在这里担心RAM的使用。
在示例2中,我认为这会导致更多的CPU使用率,因为每次使用时都必须重新声明所有变量,但是可能使用的RAM更少?
这些只是简单的例子,我相信他们自己不会在CPU或RAM开销方面造成太大影响。我会将您提供的答案中的信息应用于我的一般编码练习。
您是否有性能/内存问题?如果不是,那么请记住:过早优化是所有邪恶的根源......顺便说一下,现在参考文献并不被视为记忆成本。有太多的引用(而不是正确维护它们)可能会导致内存泄漏... – ppeterka 2013-03-13 13:08:53
您可能想要重新发布到codereview.stackexchange.com。这些是他们关注的问题。 – Perception 2013-03-13 13:11:10
你想知道你的问题。请先清楚你的问题,以便其他人可以最好地回答你。 – 2013-03-13 13:11:46