欢迎来到天天文库
浏览记录
ID:20311323
大小:106.66 KB
页数:22页
时间:2018-10-09
《android开发教程之重构程序》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Android开发教程之重构程序什么是重构程序清晰易读好处MVC模式MVC模式套用可以运作的程序跟可以维护的程序之间,还有一道难以言说的鸿沟。一个程序设计之初,是用来解决特定问题。就像在前面章节的学习中,我们也已经写好了一个可以运作的BMI程序。但是对程序设计来说,当我们写越多程序,我们会希望可以从这些程序之中,找到一个更广泛适用的法则,让每个程序都清晰易读,从而变得更好修改与维护。什么是重构让程序清晰易读有什么好处呢?当一段程序被写出来,之后我们所要做的事,就是修改它与维护它。一旦程序越长越复杂,溷乱到无法维护的境界时,就只好砍掉重练。所以若我们能透过某些方式,例如重新组织或
2、部分改写程序码,好让程序容易维护,那麽我们就可以为自己省下许多时间,以从容迎接新的挑战。我们回过头来看看前面所写的Android程序。Android平台的开发者已经先依照MVC模式,为我们将显示界面所用的XML描述档、显示资源所用的XML描述档从程序码中区隔开来。将与程序流程无关的部份分开来组织,让程序流程更清楚,相对易于维护。程序清晰易读好处而在主要程序码(Bmi.java)方面,虽然程序码量很少,还算好读,但整体上并不那麽令人满意。例如,假使我们要在这段程序码中再多加上按键、适用于多种萤幕显示模式、或是再加入选单等等内容,很快地程序码就开始变得复杂,变得不容易阅读,也开始越
3、来越不容易维护。因此,在继续新的主题之前,我们先来重构这个BMI应用程序。在重构的过程中,也许我们能学到的东西,比学任何新主题还重要呢。我们打算重构BMI程序的部份java程序码。既然我们已经照着Android平台的作法,套用MVC模式在我们的程序组织上,那麽,我们不妨也试着套用同样的MVC模式在Bmi.java程序码上。如何套用MVC模式到Bmi.java程序码上呢?原来的程序片段是这样的代码:1@Override2publicvoidonCreate(Bundleicicle){3super.onCreate(icicle);MVC模式4setContentView(R.l
4、ayout.main);56//Listenforbuttonclicks7Buttonbutton=(Button)findViewById(R.id.submit);8button.setOnClickListener(calcBMI);9}上面的程序片段中,包含了所有Android程序共用的标准内容,整个程序的大致架构在前面章节中已经讲解过,现在我们从中取出我们感兴趣的部分来讨论:代码:Buttonbutton=(Button)findViewById(R.id.submit);button.setOnClickListener(calcBMI);在第7行我们看到一段程序
5、码来宣告按钮物件,与针对该按钮物件作动作的程序码。button.setOnClickListener程序码的意义是指定一个函式,来负责处理"按下"这个"按钮"后的动作。我们可以想像,在同一个画面中,多加入一些按钮与栏位后,"onCreate"这段程序将变得臃肿,我们来试着先对此稍作修改:首先,我们可以套用MVC模式,将宣告界面元件(按钮、数字栏位)、指定负责函式等动作抽取出来,将onCreate函式改写如下代码:@OverridepublicvoidonCreate(Bundleicicle){super.onCreate(icicle);setContentView(R.la
6、yout.main);findViews();MVC模式套用setListensers();}接着我们将宣告界面元件的部份写成一个独立的"findViews"函式:privateButtoncalcbutton;privateEditTextfieldheight;privateEditTextfieldweight;privatevoidfindViews(){calcbutton=(Button)findViewById(R.id.submit);fieldheight=(EditText)findViewById(R.id.height);fieldweight=(Edi
7、tText)findViewById(R.id.weight);}顺便将原本很没个性的按钮识别参数"button"改名成"calcbutton",以后在程序中一看到"calcbutton",就知道是一个按下后将开始处理计算工作的按钮。同样地,我们也将指定特定动作(按按钮)的负责函式独立出来:代码://ListenforbuttonclicksprivatevoidsetListensers(){calcbutton.setOnClickListener(calcBMI);}如此一来,我们就将
此文档下载收益归作者所有