如何写出高效可读的代码
2018-02-28 23:00
417 查看
一.引子
-为什么想要优化代码1.在学习选择排序时,发现下面代码写的很抽象思考一个问题:为什么用到 pivot 和 pos 两个变量public class ChooseSort implements Sorter { public void sort(int[] arr) { int pivot, pos = -1; for (int i = 0; i < arr.length; i++) { pivot = Integer.MAX_VALUE; for (int j = i; j < arr.length; j++) { if (pivot > arr[j]) { pivot = arr[j]; pos = j; } } arr[pos] = arr[i]; arr[i] = pivot; } } }带着这样的问题对于选择排序进行了拆解:
从最简单的开始分析,我们要在一个数组中找到一个最小值怎么写public class MinValue {
public static void main(String[] args) {
// TODO Auto-generated method stub
int a[] = {5,8,2,10};
PrintMinValue(a);
}
public static void PrintMinValue(int[] arr) {
int min = Integer.MAX_VALUE;
for (int i = 0; i < arr.length; i++) {
if (arr[i] < min) {//如果arr[i]如果数组中的值比最大值小,就把小的放到min变量中
min = arr[i];
}
}
System.out.println("最小值为:"+min);
}
}选择排序也只不过是把取最小值的方法进行了n次,并且每次取完最小值就把最小的值剔除数组。
通过pivot变量保存每个循环得到的最小值,并通过pos来保存最小值的下标,在一次排序后使用交换的方式把最小的放到排序数组第一位
这边就不得不感叹上面那段代码的精妙之处,空间上面应该使用的很小了= =
二.正文
分析下文的代码大佬链接:https://droidyue.com/blog/2014/07/27/think-twice-when-coding/
public Bitmap getFavicon(final WebView webview) { if (null != webview && null != webview.getFavicon()) { return webview.getFavicon();//此处会在null != webview && null != webview.getFavicon()都成立时,再次调用一边循环不是很好。在逻辑判断中调用了一次又返回时又调用了一次 } else { return BitmapFactory.decodeResource(getResources(), R.drawable.default_favicon); } }
public Bitmap getFavicon(final WebView webview) { if (null != webview) { Bitmap favicon = webview.getFavicon();//通过favicon变量保存对象,逻辑判断中就不需要引用了 if (null != favicon) { return favicon; } else { return BitmapFactory.decodeResource(getResources(), R.drawable.default_favicon);//1 } } else { return BitmapFactory.decodeResource(getResources(), R.drawable.default_favicon);//2 } }
返回默认值是存在两处相同的代码,如果需要修改代码时,有可能需要修改两次。还是不够好。
public Bitmap getFavicon(final WebView webview) { Bitmap defaultFavicon = BitmapFactory.decodeResource(getResources(), R.drawable.default_favicon);//通过声明defaultFavicon变量保存返回值 if (null != webview) { Bitmap favicon = webview.getFavicon(); if (nul b6e0 l != favicon) { return favicon; } else { return defaultFavicon; } } else { return defaultFavicon; } }webview不为null,并且webview.getFavicon()也不为null,
那么Bitmap defaultFavicon = BitmapFactory.decodeResource(getResources(), R.drawable.default_favicon);实际上是多余的。public Bitmap getFavicon(final WebView webview) {
Bitmap favicon = null;//申明空的favicon对象
if (null != webview && (favicon = webview.getFavicon()) != null) {//通过(favicon = webview.getFavicon()) != null进行赋值和判断
return favicon;
} else {
return BitmapFactory.decodeResource(getResources(), R.drawable.default_favicon);
}
}
public Bitmap getFavicon(final WebView webview) { Bitmap favicon = null;//申明空的favicon对象 if (null != webview) {//先判断父类是否为空 favicon = webview.getFavicon();//父类不为空就,调用webview.getFavicon()赋值 } return null != favicon ? favicon : BitmapFactory.decodeResource(getResources(), R.drawable.default_icon);//通过三目运算符判断favicon是否不为空,不为返回favicon的值,否则为默认的值 }
相关文章推荐
- 论如何写出高效优美的C语言代码
- 如何写出高效优美的单片机C语言代码
- 如何编写出高效的数据库连接池(附带完整代码C#和Java实现)
- 如何编写出高效的数据库连接池(附带完整代码C#和Java实现)
- 团队合作中如何写出高效整洁规范的CSS代码
- 如何编写出高效的数据库连接池(附带完整代码C#和Java实现)
- 如何编写出高效的数据库连接池(附带完整代码C#和Java实现) .
- 如何写出高效优美的单片机C语言代码?
- 如何编写出高效的数据库连接池(附带完整代码C#和Java实现)
- 如何写出高效优美的C语言代码(转)
- 如何写出高效优美的C语言代码
- 如何写出高效优美的C语言代码
- 【css】教你如何写出高效整洁的 css 代码——css优化
- 如何写出高效的单片机C语言程序代码
- CSS优化,如何写出高效整洁的CSS代码
- 如何实现ListView高效分页代码
- 如何利用工具写出优秀的Ruby代码?
- 如何写出优秀的代码[转载]
- 关于单元测试,如何写出可测试的代码?
- 如何编写高效的Android代码