代码重构和优化一

来源:互联网 发布:手机视频格式转换软件 编辑:程序博客网 时间:2024/04/19 20:30

代码重构

不同的程序员有不同的编写代码的习惯,如果代码繁琐又杂乱,自己开发的话还好,影响自己一个人,如果是团队开发, 提交的代码质量的好坏,关系着整个团队的进度,这时候影响就被放大了。所以在不影响性能的情况下,最好该如何重构下自己的项目的代码呢?

比较出名的31天学习重构资料。参透和理解好就是一个重大进步了。

一、java代码上


现在有这种情况:

Intent intent = new Intent();intent.setClass(PersonalDetails.this, PersonalINFO.class);startActivity(intent);

这是跳转activity的代码,如果界面少的话,看起来不太繁杂。但是如果有成百上千的activity的话,那么每次跳转都写这么几句话的话,必然会显得繁琐。

不如提取一个公共的类,没当跳转界面时候,都从中获取和调用:

public class ACCOMM{
public static void gotoUserCode(Activity context) {    startActivity(context, MyCodeActivity.class);}

public static void gotoChatActivity(Activity context) {    Intent intent = new Intent();    intent.setClass(context, ChatActivity.class);    context.startActivity(intent);    context.overridePendingTransition(R.anim.push_left_in,            R.anim.push_left_out);}

public static void gotoCommentActivity(Activity context) {
    ...}public static void gotoCommon(Activity context, String title) {    ...}public static void startActivity(Activity context, Class<?> cls) {    ...}
}
在你需要跳转页面的时候,只需要每次传给公共类里边一个要跳转到的context即可,
//设置按钮点击事件@OnClick(R.id.txt_setting)public void setting_Click() {    ACCOM.gotoSettingActivity(getActivity());}
如此一来,每个点击事件处,就再也不用每次都写Intent了。
---沿着这个思路,可以看到上边代码有  @OnClick  这个字样,熟悉点的人都知道,这是用到了JakeWharton 
的butterknife的第三方注解库,这个库可以为我们省下很多的无脑代码输入的时间,跟能简化代码,提高我们思考其他核心代码的时间。
此库可以简化诸如findviewbyId和setonclicklienster的代码,再也不必每次都一行一行的写了,使用@bind注解取代获取Id等不少功能,
所以说重构代码此库必不可少,至于一些人担心的使用此库会不会造成很大的性能隐患的问题,根据我的查阅,对于个人应用来讲几乎是无影响的。
butterknife简单入门:
@Bind(R.id.txt_title)TextView txt_title;如上代码取代了 txt_title=(TextView)findviewById(R.id.txt_title);
绑定资源到类成员上可以使用@BindBool@BindColor@BindDimen@BindDrawable@BindInt@BindString
对应注解传入对应的r.string.id
  @BindString(R.string.title) String title;  @BindDrawable(R.drawable.graphic) Drawable graphic;  @BindColor(R.color.red) int red; // int or ColorStateList field  @BindDimen(R.dimen.spacer) Float spacer; // int (for pixel size) or float (for exact value) field  
除了在activity上使用绑定外,还可以用于fragment,
public class FancyFragment extends Fragment {  @Bind(R.id.button1) Button button1;  @Bind(R.id.button2) Button button2;  @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {    View view = inflater.inflate(R.layout.fancy_fragment, container, false);    ButterKnife.bind(this, view);    // TODO Use fields...    return view;  }}
关于如何使用安装可以去到:
https://github.com/JakeWharton/butterknife观看开发文档
具体的使用参考官方使用链接:
http://jakewharton.github.io/butterknife/

二、xml上
开始学习安卓的人,一定是这么布局的

<TextView
android:layout_width="wrap_content"     
android:layout_height="wrap_content"      
android:text="Hello World!"     
android:textAlignment="center"    
android:textColor="#e0e0e0e"    
android:textSize="12sp"     
android:textStyle="bold"      />
一个控件有什么属性也都直接用上了,如果一个界面里边有很多控件,那草草一篇这样的带参数的属性,
看起来也是不好看,更何况影响了。再看改成如下:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!" 
style="@style/my_textview_style" />   
<style name="my_textview_style"> 
<item name="android:textAlignment">center</item>  
<item name="android:textColor">#f00ff0</item>  
<item name="android:textSize">18sp</item>  
<item name="android:textStyle">bold</item>  
</style>     
这样写入一个style,就不用再布局界面显示那么多的内容了。这里在as中有个很快捷的方法,可以直接在之前写好的
代码里右键选择style,然后就可以选择需要吧那些属性放入@style中。很简便。
具体的androidstudio重构代码的方法,可以参考网上总结。
更多关于重构的网络详尽参考资料:
http://blog.sina.com.cn/s/blog_414e587f0102v7b1.html
http://blog.csdn.net/guijiaoba/article/details/50608606

关于如何使用安装可以去到:
https://github.com/JakeWharton/butterknife观看开发文档
具体的使用参考官方使用链接:
http://jakewharton.github.io/butterknife/
1 0
原创粉丝点击