深入浅出Adroid-11-初级-重构程序.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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? @Override 2? public void onCreate(Bundle icicle) { 3? ? ? super.onCreate(icicle); 4? ? ? setContentView(R.layout.main); 5? ? ? ? ? ? 6? ? ? //Listen for button clicks 7? ? ? 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 函式改写如下 代码: @Override public 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)

xciqshic + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档