zoukankan      html  css  js  c++  java
  • My Code review

    以下是原代码:

      1 import android.app.ProgressDialog;
      2 import android.graphics.Bitmap;
      3 import android.graphics.BitmapFactory;
      4 import android.os.AsyncTask;
      5 import android.support.v7.app.AppCompatActivity;
      6 import android.os.Bundle;
      7 import android.view.View;
      8 import android.widget.Button;
      9 import android.widget.ImageView;
     10 
     11 import java.io.ByteArrayInputStream;
     12 import java.io.ByteArrayOutputStream;
     13 import java.io.IOException;
     14 import java.io.InputStream;
     15 import java.net.HttpURLConnection;
     16 import java.net.MalformedURLException;
     17 import java.net.URL;
     18 
     19 public class MainActivity extends AppCompatActivity {
     20     private Button btn;
     21     private ImageView imageView;
     22     private ProgressDialog progressDialog;
     23     private final String IMAGE_PATH = "http://www.baidu.com/img/bd_logo1.png";
     24 
     25     @Override
     26     protected void onCreate(Bundle savedInstanceState) {
     27         super.onCreate(savedInstanceState);
     28         setContentView(R.layout.activity_main);
     29         btn = (Button) findViewById(R.id.btn);
     30         imageView = (ImageView) findViewById(R.id.imageView);
     31         progressDialog = new ProgressDialog(MainActivity.this);
     32         progressDialog.setTitle("提示信息");
     33         progressDialog.setCancelable(false);
     34         progressDialog.setMessage("正在下载,请稍候。。。");
     35 //        progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
     36         progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
     37 
     38         btn.setOnClickListener(new View.OnClickListener() {
     39             @Override
     40             public void onClick(View v) {
     41                 new MyAsyncTask().execute(IMAGE_PATH);
     42             }
     43         });
     44 
     45     }
     46 
     47     public class MyAsyncTask extends AsyncTask<String, Integer, byte[]> {
     48         @Override
     49         protected void onPreExecute() {
     50             super.onPreExecute();
     51             progressDialog.show();
     52         }
     53 
     54         @Override
     55         protected byte[] doInBackground(String... strings) {
     56             byte[] image = new byte[] {};
     57             HttpURLConnection conn = null;
     58             InputStream inputStream = null;
     59             ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
     60 
     61             try {
     62                 URL url = new URL(strings[0]);
     63                 conn = (HttpURLConnection)url.openConnection();
     64                 if (conn.getResponseCode() == 200) {
     65                     long file_length = conn.getContentLength();
     66                     long total_length = 0;
     67                     int length = 0;
     68                     byte[] data = new byte[1024];
     69                     inputStream = conn.getInputStream();
     70                     while (-1 != (length = inputStream.read(data))) {
     71                         total_length += length;
     72                         byteArrayOutputStream.write(data, 0, length);
     73                         int progress = ((int) (total_length*100/(float)file_length));
     74                         publishProgress(progress);
     75 
     76                         try {
     77                             Thread.sleep(1000);
     78                         } catch (InterruptedException e) {
     79                             e.printStackTrace();
     80                         }
     81                     }
     82                     image = byteArrayOutputStream.toByteArray();
     83                     inputStream.close();
     84                     byteArrayOutputStream.close();
     85                 }
     86             } catch (MalformedURLException e) {
     87                 e.printStackTrace();
     88             } catch (IOException e) {
     89                 e.printStackTrace();
     90             }finally {
     91                 conn.disconnect();
     92             }
     93             return image;
     94         }
     95 
     96         @Override
     97         protected void onProgressUpdate(Integer... values) {
     98             super.onProgressUpdate(values);
     99             progressDialog.setProgress(values[0]);
    100         }
    101 
    102         @Override
    103         protected void onPostExecute(byte[] bytes) {
    104             super.onPostExecute(bytes);
    105             Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
    106             imageView.setImageBitmap(bitmap);
    107             progressDialog.dismiss();
    108         }
    109     }
    110 }

    代码审查结果:

      1、缺少注释

      2、对非常规行为和边界值情况处理没有描述

      3、存在部分重复的代码

  • 相关阅读:
    给自己新申请的阿里云服务器ECS免费搭建WDCP环境
    maven run 配置jre VM arguments配置 (转)
    JSON.stringify 语法实例讲解(转)
    Vue-cli proxyTable 解决开发环境的跨域问题(转)
    JS几种数组遍历方式以及性能分析对比(转 未经测试,先mark)
    调用web接口跨域问题
    Jquery获取浏览器窗口和Body长宽
    idea tab页签颜色不明显,自定义颜色解决。
    疯狂Java学习笔记(009)
    疯狂Java学习笔记(001)
  • 原文地址:https://www.cnblogs.com/ChinaJun/p/6599042.html
Copyright © 2011-2022 走看看