当前位置:
开发笔记 >
Android > 正文
Android平台开发中的重构三步走
作者:泛傲海 | 来源:互联网 | 2023-05-17 03:13
我们都知道,技术是优质产品的必要条件,要满足用户不断变化的需求,必须有弹性的技术实现框架;android开发平台正是提供给开发者一个清晰且有弹性的架构,正如我们在eclipse开发环境中心建一个and
我们都知道,技术是优质产品的必要条件,要满足用户不断变化的需求,必须有弹性的技术实现框架;android开发平台正是提供给开发者一个清晰且有弹性的架构,正如我们在eclipse开发环境中心建一个android开发项目时,生成的不同文件夹,如src是存放源代码的目录,res是存放资源的目录,这就是为了单纯化界面修改模式,将界面描述部分的程序代码,抽取到程序外部的xml说明文件中。简而言之,即java+xml结构。
这样做不仅增加了程序的可读性,更重要的是实现了界面与逻辑程序的脱离,便于我们修改与维护,当然,为了延续甚至程序这方面的性能,我们应该做好程序的重构,重构代码即在反复的检查或者读代码的过程中,通过一些小的改变来增加代码的可读性和可维护性,罗马不是一天建成的,代码不是写一次就可以做到优化的,所以做好量变的过程,即每天做好代码的重构,才能使代码出现质变,形成可读性的和可维护高的优化的代码,个人看来,重构有时是举手之劳,有时却包含着更加深奥的架构设计模式,有时是我们程序的扩展,有时却是简化,但无论我们做什么,总之,程序会更加完美。
第一步:举手之劳的重构,简单却必——将字符串抽离到xml
相信开发者都会有这样的经验,在编写程序的时候,我们会先处理xml的部分,然后编写并调试java部分代码,在调试过程中,我们也许会声明一些用于界面显示的string变量,而在程序可以按我们的要求跑起来的时候,我们常会忘了string本来应该被抽取到res/values目录下的strings.xml文件中,但我们恰恰忘了,于是用于显示的这个string就被“临时”的“永久”保存在我们的逻辑程序中,这显然违背了android架构,所以,举手之劳的重构,将字符串抽离到xml中,简单却必要。其必要性也会在本文的后文中有所体现。
第二步:使用架构设计模式的重构——android平台中应用的MVC模式
我们在android平台开发中也用到一些常用的架构设计模式,尤其是MVC模式,MVC模式指的是将程序组成分成三个主要部分,分别是存储内容的“model(模型)”,负责显示的“view(视图)”,控制程序逻辑操作的“Controller(控制器)”,我们进行开发时应该将这三个部分分割开来,来增加我们程序代码的可读性,进而便于维护。“controller”部分负责处理各种主要的运算工作,例如根据用户在“view”中的各种操作,从“model”中提取数据,从而把其中的视觉元素传给“view”,将数据的修改部分修改在“model”中。
Android平台中的java+xml模式实际上已经很像是MVC模式,然而,我们在编写java代码中,也要延续这种风格,甚至将它发扬光大,可以想象,在同一个界面中多添加一些按钮和字段后“onCreate”这个函数会像长篇小说一样让人不忍多看一眼,我们不妨将其中的一部分抽离出来,不如就使用MVC模式对部分代码进行封装,我们将“声明和查找组件”部分抽离出来,封装成findViews函数,声明和查找组件部分就是像这样的代码:updateButton =(button)findViewById(R.id.update)//按id在界面中寻找updateButton这个组件,另一部分就是“为特定界面组件添加控制流程”,如给按钮增加Listener这种事件函数等。
第三步:增加软件功能——国际化和其他
Java中有一些支持国际化的特性,包括统一的编码,地区类Locale,并且利用类ResourceBundle将地区特征的信息从程序中分离出来,在android的开发框架中也给我们提供了的支持多国语言的办法,正如我们第一步中做的,我们将负责显示字符串抽离到string.xml中,然后我们可以创建同样的string.xml只是把原来的显示语言换成其他我们需要的,如中文换成英语,然后将中文(简体)的string.xml的目录换成res/values-zh-rCN,将英文的string.xml的目录换成res/values-en,这样重新运行就可以支持多国语言我们只需在java程序中的onCreate程序块中添加如下代码便可实现:
首先使用Resources res =getResources();获得资源对象,接着使用Configuration cOnf= res.getConfiguration();取得设置对象,然后使用conf.locale = Locale.SIMPLIFIED_CHINESE;将我们的语言,最后将我们的配置显示出来DisplayMetrics dm = res.getDisplayMetrics();Res.updateConfiguration(conf,dm);
当然我们也可以做成选项,然用户自己来选择。
最后,增加软件功能的努力也不仅只有国际化,还有让程序能适应不同的屏幕方向,显示方式和浏览方式等等。也有对我们的程序做减法,去掉冗余的部分。总之,考虑用户的使用,让用户获得更好的体验是我们的目标。
我只是简单介绍了一下我在android开发中使用的一些重构技巧,当然重构的方向远不止如此,还有统一的命名方法等方法,这里就不再赘述。正如开篇时提到的,android开发平台给我们提供了非常清晰的架构,我们在开发中要利用好它使我们的代码更好读,程序更好用,这才是作为一个开发者最需要做的,每天做一下小的改进,日久天长,我们的程序就会朝这个目标迈进,希望所有开发者都能有更好的应用。
推荐阅读
-
本文探讨了如何通过 FinOps 实践优化 Serverless 应用的成本管理,提出了首个 Serverless 函数总成本估计模型,并分享了多种有效的成本优化策略。 ...
[详细]
蜡笔小新 2024-12-24 12:44:26
-
本文介绍如何使用微软的 Visual Studio Online(VSO)创建和管理开发项目。作为一款基于云计算的开发平台,VSO 提供了丰富的工具和服务,简化了项目的配置和部署流程。 ...
[详细]
蜡笔小新 2024-12-24 14:27:35
-
-
本文介绍了OAuth认证协议的核心概念及其工作原理。OAuth是一种开放标准,旨在为第三方应用提供安全的用户资源访问授权,同时确保用户的账户信息(如用户名和密码)不会暴露给第三方。 ...
[详细]
蜡笔小新 2024-12-28 12:07:46
-
本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ...
[详细]
蜡笔小新 2024-12-27 16:38:48
-
本章将深入探讨移动 UI 设计的核心原则,帮助开发者构建简洁、高效且用户友好的界面。通过学习设计规则和用户体验优化技巧,您将能够创建出既美观又实用的移动应用。 ...
[详细]
蜡笔小新 2024-12-27 08:43:40
-
本文详细介绍了macOS系统的核心组件,包括如何管理其安全特性——系统完整性保护(SIP),并探讨了不同版本的更新亮点。对于使用macOS系统的用户来说,了解这些信息有助于更好地管理和优化系统性能。 ...
[详细]
蜡笔小新 2024-12-26 18:05:04
-
在工作期间想要浏览微信和朋友圈却不太方便?虽然微信电脑版目前不支持直接刷朋友圈,但通过远程投屏技术,可以轻松实现在电脑上操作安卓设备的功能。 ...
[详细]
蜡笔小新 2024-12-26 15:23:19
-
友盟推出的最新版错误分析工具,专为移动开发者设计,提供强大的Crash收集与分析功能。该工具能够实时监控App运行状态,快速发现并修复错误,显著提升应用的稳定性和用户体验。 ...
[详细]
蜡笔小新 2024-12-26 14:11:47
-
本文介绍了两种方法,用于检测 Android 设备是否开启了开发者模式。第一种方法通过检查 USB 调试模式的状态,第二种方法则直接判断开发者选项是否启用。这两种方法均提供了代码示例和详细解释。 ...
[详细]
蜡笔小新 2024-12-26 11:02:52
-
本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ...
[详细]
蜡笔小新 2024-12-25 16:03:57
-
探讨架构师在项目中应如何平衡对产品的关注和对团队成员的关注,以实现最佳的开发成果。 ...
[详细]
蜡笔小新 2024-12-24 19:41:40
-
2018年3月31日,CSDN、火星财经联合中关村区块链产业联盟等机构举办的2018区块链技术及应用峰会(BTA)核心分会场圆满举行。多位业内顶尖专家深入探讨了区块链的核心技术原理及其在实际业务中的应用。 ...
[详细]
蜡笔小新 2024-12-24 10:56:15
-
本文详细介绍了Git管理工具SourceTree的安装、配置及团队协作方案,旨在帮助开发者更高效地进行版本控制和项目管理。 ...
[详细]
蜡笔小新 2024-12-23 18:58:52
-
在创建新的Android项目时,您可能会遇到aapt错误,提示无法打开libstdc++.so.6共享对象文件。本文将探讨该问题的原因及解决方案。 ...
[详细]
蜡笔小新 2024-12-23 11:49:11
-
本文作者分享了在阿里巴巴获得实习offer的经历,包括五轮面试的详细内容和经验总结。其中四轮为技术面试,一轮为HR面试,涵盖了大量的Java技术和项目实践经验。 ...
[详细]
蜡笔小新 2024-12-23 11:32:02
-