什么是更好的编码实践,使用工具或方法

时间:2015-09-05 19:08:39

标签: java android performance oop implements

我在android中使用导航抽屉,我已经构建了两种方式的监听器。 但在所有编程代码中,如何更好的代码?

1)我实现了一个类

的第一个方法
public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener{  

 NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);

@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
//CODE
}
}

2)在第二种方式中我只使用一个实例。

NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(
            new NavigationView.OnNavigationItemSelectedListener() {
                @Override
                public boolean onNavigationItemSelected(MenuItem menuItem) {
                    //CODE
                }
            }
    );

您认为哪个更好,为什么? 谢谢=)

3 个答案:

答案 0 :(得分:1)

实际上它完全取决于你的实施。

1)对于案例1,假设您正在为视图实现一个类。然后,您将只能在此类中使用已实现的方法一次。

2)案例2允许您创建多个功能。

View.OnClickListener获取示例,如果您要实现此功能,您将只能在课程中使用onClick方法一次。因此,此类中的所有视图都将使用相同的onClick方法。

public class MainActivity implements View.OnClickListener {
    public void onClick(View v) {
        .... 
    } 
 }

但是如果你将使用setOnClickListener(),你可以每次都实现不同的(或相同的)方法。

答案 1 :(得分:0)

实际上,选择其中一个是您的个人品味,MainActivity的责任以及表演的组合。

我通常赞成合成,并尽量避免在同一个班级中混合很多责任。您正在实施的监听器可能隐藏在工厂或其他东西后面,使MainActivity的代码更简单,更易于维护。

关于表演,你应该选择你的第一选择,但事实上,实例化一个课程不应该有任何重大影响。

答案 2 :(得分:0)

在这种情况下,我总是使用第一种方法,因为onAttach方法中的内部片段我可以检查活动以实现与此片段交互所需的接口,例如,抛出异常作为必须实现接口的信号。除此之外,在这种情况下,您不需要编写类似setListener的方法。当然,这是我对这个具体案例的看法。