- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
深入浅出Adroid-11-初级-重构程序
深入浅出Android-11-初级-重构程序
2009-07-31 13:21? BmiRefactor 重构程序伟大的创意少之又少,多数时候只是一些小改进。小的改进也是好的。什么是重构可以运作的程序跟可以维护的程序之间,还有一道难以言说的鸿沟。一个程序设计之初,是用来解决特定问题。就像在前面章节的学习中,我们也已经写好了一个可以运作的 BMI 程序。但是对程序设计来说,当我们写越多程序,我们会希望可以从这些程序之中,找到一个更广泛适用的法则,让每个程序都清晰易读,从而变得更好修改与维护。让程序清晰易读有什么好处呢?当一段程序被写出来,之后我们所要做的事,就是修改它与维护它。一旦程序越长越复杂,溷乱到无法维护的境界时,就只好砍掉重练。 所以若我们能透过某些方式,例如重新组织或部分改写程序码,好让程序容易维护,那麽我们就可以为自己省下许多时间,以从容迎接新的挑战。我们回过头来看看前面所写的 Android 程序。Android 平台的开发者已经先依照 MVC 模式,为我们将显示介面所用的 XML 描述档、显示资源所用的 XML 描述档从程序码中区隔开来。将与程序流程无关的部份分开来组织,让程序流程更清楚,相对易于维护。而在主要程序码(Bmi.java)方面,虽然程序码量很少,还算好读,但整体上并不那麽令人满意。例如,假使我们要在这段程序码中再多加上按键、适用于多种萤幕显示模式、或是再加入选单等等内容,很快地程序码就开始变得复杂,变得不容易阅读,也开始越来越不容易维护。因此,在继续新的主题之前,我们先来重构这个 BMI 应用程序。在重构的过程中,也许我们能学到的东西,比学任何新主题还重要呢。MVC我们打算重构 BMI 程序的部份 java 程序码。既然我们已经照着 Android 平台的作法,套用 MVC 模式在我们的程序组织上,那麽,我们不妨也试着套用同样的 MVC 模式在 Bmi.java 程序码上。如何套用 MVC 模式到Bmi.java 程序码上呢?原来的程序片段是这样的
代码:
1? @Override2? public void onCreate(Bundle icicle) {3? ? ? super.onCreate(icicle);4? ? ? setContentView(R.layout.main);5? ? ? ? ? ?6? ? ? //Listen for button clicks7? ? ? Button button = (Button) findViewById(R.id.submit);8? ? ? button.setOnClickListener(calcBMI);9? }
上面的程序片段中,包含了所有 Android 程序共用的标准内容, 整个程序的大致架构在前面章节中已经讲解过,现在我们从中取出我们感兴趣的部分来讨论:
代码:
Button button = (Button) findViewById(R.id.submit);button.setOnClickListener(calcBMI);
在第7行我们看到一段程序码来宣告按钮物件,与针对该按钮物件作动作的程序码。 button.setOnClickListener 程序码的意义是指定一个函式,来负责处理按下这个按钮后的动作。我们可以想像,在同一个画面中,多加入一些按钮与栏位后,onCreate 这段程序将变得臃肿,我们来试着先对此稍作修改:首先,我们可以套用 MVC 模式,将宣告介面元件(按钮、数字栏位)、指定负责函式等动作抽取出来,将 onCreate 函式改写如下
代码:
@Overridepublic void onCreate(Bundle icicle) {? ? super.onCreate(icicle);? ? setContentView(R.layout.main);? ? findViews();? ? setListensers(); }接着我们将宣告介面元件的部份写成一个独立的findViews函式:private Button calcbutton;private EditText fieldheight;private EditText fieldweight;private void findViews(){? ? calcbutton = (Button) findViewById(R.id.submit);? ? fieldheight = (EditText) findViewById(R.id.height);? ? fieldweight = (EditText) f
文档评论(0)