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

问题描述:

我在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

性能方面,我相信'implements'是最好的方法,但让我们看看答案。 –

其实它完全取决于你的实现。

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

2)情况2允许您创建多个功能。

View.OnClickListener为例,如果您要实现此功能,您只能在课程中使用onClick方法一次。所以,这个类里面的所有视图都会使用这个相同的方法onClick

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

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

其实,选择其中之一是你的个人品味,MainActivity的责任和可能的表演的组合。

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

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

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