如何优化android代码

时间:2012-06-16 10:32:54

标签: java android coding-style standards

public String getBrotherHood() throws Exception{        
    client = new DefaultHttpClient();
    get = new HttpGet(uri);
    res = client.execute(get);
    sl = res.getStatusLine();
    sCode = sl.getStatusCode();
    if(sCode==200)
    {
        try{
            reader = new BufferedReader(new InputStreamReader(res.getEntity().getContent()));
            readBuffer = new StringBuffer();
            while((nl = reader.readLine())!=null){
                readBuffer.append(nl);
            }
            reader.close();
        }finally{
            if(reader !=null)
            {
                try{
                    reader.close();
                }catch (Exception e) {
                    // TODO: handle exception
                    e.printStackTrace();
                }
            }
        }
    }
    return readBuffer.toString();       
  }
}

我有这个代码,这是写它的正确方法,还是我需要遵循任何编码模式或标准?

请给我一些建议,因为我不知道Android编码。

更新

public class JSONData {

public ArrayList<String> getBrotherHoodJSON() throws JSONException,IOException,Exception{
    ArrayList<String> item = new ArrayList<String>();
    JSONArray jA = new JSONArray(getBrotherHood());

    for(int i=0; i<jA.length(); i++)
    {
        JSONObject jO = jA.getJSONObject(i);
        String n = jO.getString("name");
        item.add(n);
        Log.i("JsonData:",jO.getString("name"));
    }

    return item;
}   

public String getBrotherHood() throws Exception{    
    BufferedReader in = null;
    String data= null;
    HttpClient client = new DefaultHttpClient();
    URI uri = new URI("http://fahidmohammad.in/demo/Android/api.php?user=fah");
    HttpGet get = new HttpGet();
    get.setURI(uri);
    HttpResponse res = client.execute(get);
    StatusLine sl = res.getStatusLine();
    int sCode = sl.getStatusCode();
    if(sCode==200)
    {
        try{
            in = new BufferedReader(new InputStreamReader(res.getEntity().getContent()));
            StringBuffer sb = new StringBuffer();
            String nl;
            while((nl = in.readLine())!=null){
                sb.append(nl);
            }
            in.close();
            data = sb.toString();
            Log.i("Raw Data:",data);
            return data;
        }finally{
            if(in !=null)
            {
                try{
                    in.close();
                    return data;
                }catch (Exception e) {
                    // TODO: handle exception
                    e.printStackTrace();
                }
            }
        }
    }
    return data;        
}

这是更新版本相同的代码。 照顾所有提到的问题。

它的工作就像一个魅力,但不知道它的稳定性。

3 个答案:

答案 0 :(得分:1)

你显然已经声明了方法之外的所有变量,即使它们似乎只在这个方法中使用。这是没有意义的。它可以防止多个对象被垃圾收集。您最好将声明移到方法中。

声明throws Exception也没有多大意义。如果您声明可能发生的特定异常,或者将所有不可能的异常转换为RuntimeException,那么您最好不要声明它们。

答案 1 :(得分:0)

有一个默认的代码格式化程序可用eclipse。编写代码后,只需输入“Control + Shift + F”。您的Android代码将自动格式化。

答案 2 :(得分:0)

重新调整readBuffer varible

的一个重点

在函数的最后一个函数中,你返回readBuffer.toString()并且只有当状态为200时才初始化它。但是如果状态不是200那么它将为null(假设声明不可见)所以null.toString ()会想到例外。