代码之家  ›  专栏  ›  技术社区  ›  Wael Awada

关于Android和Java开发中良好实践的问题

  •  1
  • Wael Awada  · 技术社区  · 14 年前

    早上好(下午,晚上,我不知道你什么时候读这个。。哈哈,但现在是早上8:30:))

    昨天我在一个关于android编程的会议上,演示者有一个关于如何在android中创建数据库访问应用程序的示例代码。。

    我们讨论了各种类、方法等。

    假设我们在数据库中有一个名为MyItem的表。。我们创建了一个名为MyItem.java的类,该类具有相同的字段(类似于对象关系映射概念)。

    现在演示者创建了一个名为MyItemList.java的类

    package androidenthusiasts.androiddbproject;
    
    import java.util.ArrayList;
    
    // The MyList class is used to store MyItem objects in an ArrayList
    public class MyList {
    
     public ArrayList<MyItem> mylist;
    
     // NonParameterized Constructor - Called when class is created
     public MyList()
     {
      mylist = new ArrayList<MyItem>();
     }
    
     // AddItem method
     public boolean AddItem(MyItem item)
     {
      mylist.add(item);
      return true;
     }
    
     // GetCount method
     public int GetCount()
     {
      return mylist.size();
     }
    
     // getItem method
     public MyItem getItem(int index)
     {
      MyItem item = null;
      if (index < GetCount())
      {
       item = mylist.get(index);
      }
      return item;
     }
    
    }
    

    这是一个只有列表的对象。。所有实现的方法都在ArrayList中。。为这个列表创建一个新对象是一个好的实践吗?在您想将ArrayList用作ArrayList的地方定义它更好吗?或者更重要的是,我们应该为MyItem创建一个扩展ArrayList的类吗?

    StackOVerFlow的大众是怎么想的?

    谢谢

    2 回复  |  直到 14 年前
        1
  •  1
  •   kgiannakakis    14 年前

    我建议不要扩展ArrayList来创建MyList。与其继承,不如组合。尤其是内置类不应该被扩展。

    定义单独的类而不是使用ArrayList有一些优点:

    • 您可以轻松地向类中添加新方法
    • 你可以让你的类实现一个接口

    一般来说,添加新功能和维护代码会更容易。此外,MyList类不抛出indexoutboundsexception异常,而是静默返回null。

        2
  •  1
  •   Mike Baranczak    14 年前

    不,这不是个好做法。如果您想要MyItems的列表,只需创建 ArrayList ,或者更好, ArrayList<MyItem> .

    如果要向ArrayList添加一些功能,可以对其进行扩展(例如,在添加MyItem之前验证它中的字段,如果它包含错误数据,则抛出异常)。但是大多数时候,您可以使用java.util中已经提供的类来做您想要的事情。

    另一件事-在Java命名约定中,您以小写字母开始方法名。