什么是更好的编码习惯,使用工具或方法
问题描述:
我在android中使用导航抽屉,并且我已经构建了两种方式的侦听器。 但在所有编程代码中,代码如何更好?什么是更好的编码习惯,使用工具或方法
1)I实施在第二方式,我只使用一个实例的类
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
}
}
);
你认为哪种更好,为什么? 谢谢=)
答
其实它完全取决于你的实现。
1)对于案例1,假设您正在为视图实现一个类。然后,您将能够在该课程中仅使用已实施的方法一次。
2)情况2允许您创建多个功能。
以View.OnClickListener
为例,如果您要实现此功能,您只能在课程中使用onClick
方法一次。所以,这个类里面的所有视图都会使用这个相同的方法onClick
。
public class MainActivity implements View.OnClickListener {
public void onClick(View v) {
....
}
}
但是,如果您将使用setOnClickListener(),则可以每次都实现不同(或相同)的方法。
答
其实,选择其中之一是你的个人品味,MainActivity的责任和可能的表演的组合。
我通常赞成写作,并尽量避免在同一个班级混合很多责任。您正在实施的监听器可能隐藏在工厂或其他东西后面,使MainActivity的代码更简单,更易于维护。
关于表演,你应该选择你的第一选择,但事实上,实例化一个班级不应该有任何重大影响。
答
在这种情况下,我总是使用第一种方法,因为在方法onAttach中的片段中,我可以检查活动以实现与此片段交互所需的接口,例如,抛出异常作为必须实现接口的信号。除此之外,在这种情况下,您不需要编写像setListener这样的方法。当然,这是我的这个具体案例。
性能方面,我相信'implements'是最好的方法,但让我们看看答案。 –