Android开发:使用对象不好的做法?

时间:2014-04-02 03:09:03

标签: java android

我目前正在为一个项目开发我的第一个应用程序,并且想知道我是应该使用对象还是使用更少的代码或拥有更多代码但没有对象。 以下是代码,这些代码将分别用于4个单独的方法(每个活动)或每个活动中要引用的一个类。

        TextView text1 = (TextView)this.cal.findViewById(R.id.txt1);
        TextView text2 = (TextView)this.cal.findViewById(R.id.txt2);
        TextView text3 = (TextView)this.cal.findViewById(R.id.txt3);
        TextView text4 = (TextView)this.cal.findViewById(R.id.txt4);
        TextView text5 = (TextView)this.cal.findViewById(R.id.txt5);
        TextView text6 = (TextView)this.cal.findViewById(R.id.txt6);
        TextView text7 = (TextView)this.cal.findViewById(R.id.txt7);
        TextView text8 = (TextView)this.cal.findViewById(R.id.txt8);
        TextView text9 = (TextView)this.cal.findViewById(R.id.txt9);
        TextView text10 = (TextView)this.cal.findViewById(R.id.txt10);
        TextView text11 = (TextView)this.cal.findViewById(R.id.txt11);
        if(x == 0)
        {
            text1.setText (text1.getText() + "sciemce and enginnering");
            text2.setText (text2.getText() + "add a bit");
            text3.setText (text3.getText() + "add a bit");
            text4.setText (text4.getText() + "add a bit");
            text5.setText (text5.getText() + "add a bit");
            text6.setText (text6.getText() + "add a bit");
            text7.setText (text7.getText() + "add a bit");
            text8.setText (text8.getText() + "add a bit");
            text9.setText (text9.getText() + "add a bit");
            text10.setText (text10.getText() + "add a bit");
            text11.setText(text11.getText() + "add a bit");

        }
        else if(x ==1)
        {
            text1.setText (text1.getText() + "arts");
            text2.setText (text2.getText() + "add a bit");
            text3.setText (text3.getText() + "add a bit");
            text4.setText (text4.getText() + "add a bit");
            text5.setText (text5.getText() + "add a bit");
            text6.setText (text6.getText() + "add a bit");
            text7.setText (text7.getText() + "add a bit");
            text8.setText (text8.getText() + "add a bit");
            text9.setText (text9.getText() + "add a bit");
            text10.setText (text10.getText() + "add a bit");
            text11.setText(text11.getText() + "add a bit");
        }

        else if(x == 2)
        {
            text1.setText (text1.getText() + "1");
            text2.setText (text2.getText() + "add a bit");
            text3.setText (text3.getText() + "add a bit");
            text4.setText (text4.getText() + "add a bit");
            text5.setText (text5.getText() + "add a bit");
            text6.setText (text6.getText() + "add a bit");
            text7.setText (text7.getText() + "add a bit");
            text8.setText (text8.getText() + "add a bit");
            text9.setText (text9.getText() + "add a bit");
            text10.setText (text10.getText() + "add a bit");
            text11.setText(text11.getText() + "add a bit");

        }

        else if(x ==3)
        {
            text1.setText (text1.getText() + "1");
            text2.setText (text2.getText() + "add a bit");
            text3.setText (text3.getText() + "add a bit");
            text4.setText (text4.getText() + "add a bit");
            text5.setText (text5.getText() + "add a bit");
            text6.setText (text6.getText() + "add a bit");
            text7.setText (text7.getText() + "add a bit");
            text8.setText (text8.getText() + "add a bit");
            text9.setText (text9.getText() + "add a bit");
            text10.setText (text10.getText() + "add a bit");
            text11.setText(text11.getText() + "add a bit");
        }





}

上面的代码很长(继续4个if语句),它将出现在4个不同的活动中,因为我正在加载根据教师而改变的评分方案。 我现在把它放在一个单独的类中,我正在创建一个类的对象来调用方法来加载上面代码的表,或者我应该将这些代码分别放在我的活动中,因为我听说使用了ojects很糟糕实践。 非常感谢并且抱歉,如果这是非常暧昧的,但它的代码太多,无法发布=)。

3 个答案:

答案 0 :(得分:3)

您可以使用循环简化它,例如:

else if(x ==1)
    {
        text1.setText (text1.getText() + "arts");
        text2.setText (text2.getText() + "add a bit");
        text3.setText (text3.getText() + "add a bit");
        text4.setText (text4.getText() + "add a bit");
        text5.setText (text5.getText() + "add a bit");
        text6.setText (text6.getText() + "add a bit");
        text7.setText (text7.getText() + "add a bit");
        text8.setText (text8.getText() + "add a bit");
        text9.setText (text9.getText() + "add a bit");
        text10.setText (text10.getText() + "add a bit");
        text11.setText(text11.getText() + "add a bit");
    }

for (int i = 1; i < 12; i++){
    text[i].setText(....)
}

答案 1 :(得分:0)

你可以在这里做很多事情。跳出来的第一件事是:x的值是什么意思?当您检查x == 0时,该条件代表什么?我重命名&#34; x&#34;更具描述性的东西,也许你可以使用硬编码整数制作命名常量。所以,你的代码就像是

if (selectedDegree == SCIENCE_AND_ENGINEERING)

而不是

if (x == 0)

任何阅读代码的人都会理解它。我还创建了一个辅助方法,每次都附加文本。

text1.setText (text1.getText() + "sciemce and enginnering");
text2.setText (text2.getText() + "add a bit");
text3.setText (text3.getText() + "add a bit");
text4.setText (text4.getText() + "add a bit");

会变成

appendText(text1, "science and engineering");
appendText(text2, "and a bit");
appendText(text3, "and a bit");
appendText(text4, "and a bit");

private void appendText(TextView textView, String addedText) {
    if (textView != null) {
        textView.setText(textView.getText() + addedText);
    }
}

答案 2 :(得分:0)

  1. 一张桌子?如果没有太多基于id的工作,请尝试使用List而不是很多对象,如下所示。

    list.add(this.cal.findViewById(...))
    
  2. 并更改if ... else ..切换;

  3. 使用循环完全没问题。

    for(item in list){
       if(x==1 && index==0) {item.setText("...");}
       else{item.setText("another...");}
    }