Android编程实战1.5 熟练使用IDE_Android编程实战1.5 熟练使用IDE试读-查字典图书网
查字典图书网
当前位置: 查字典 > 图书网 > 编程 > Android编程实战 > 1.5 熟练使用IDE

Android编程实战——1.5 熟练使用IDE

2013年5月谷歌在开发者大会上发布了一款名为Android Studio的IDE。它是在IntelliJ IDEA(社区版)的开源版本的基础上进行开发的。之所以从Eclipse切换到IntelliJ IDEA是因为在Eclipse上开发Android插件太过复杂。Intellij IDEA提供了一个更为优秀的开发平台,允许谷歌的Android工具开发团队把开发体验提升到一个新的水平,因为不像Eclipse只是提供一个插件,它能直接把Android工具集成进来。 本节将介绍Android Studio支持的三个实用功能:调试、静态代码分析和重构。虽然Intellij IDEA和Eclipse都提供了这些功能,但是很多开发者,包括一些经验丰富的开发人员,还不能充分利用它们。在IDE中熟练使用这些功能可以更高效地开发出高质量的代码。 1.5.1 调试Android应用 开发者使用调试功能更精确地控制应用程序的执行。可以设置断点来暂停执行并且检查应用程序的各种状态。当查找bug源或者需要仔细检查应用程序的运行情况时,调试会变得非常有用。IDE内置了调试功能,并提供了一个简单的用户界面供开发者单步执行代码、检查变量,甚至改变变量的值。 可以使用Android SDK调试设备上的Android应用。IDE会连接运行在设备上的调试服务(adb),从而连接到运行应用程序的Dalvik虚拟机(VM)。该过程基本上和从IDE运行应用一样。 图1-3显示了在Android Studio中打开的Android SDK示例应用程序。可以看到,我在代码中设置了断点并且在IDE中启动了调试。该图显示了IDE执行到断点的情况。 图1-3 当在Android Studio中调试示例应用时,应用程序运行到断点处 当达到断点处时,可以检查此时的应用程序状态。所有作用域中的变量都会显示在IDE的调试视图中。调试应用程序时,可以改变当前作用域中的变量值,而不用重新启动应用程序并修改代码中的赋值,这对测试不同输入值下应用程序的运行情况非常有用。比如,如果应用程序从传感器读取输入而开发者又不能控制传感器的输出,那么在读取传感器数据的代码处设置断点在开发过程中会是一个强大的工具。 Android Studio强大的调试工具不仅允许开发者改变变量的值,还能在当前作用域执行任意代码,如图1-4所示。这对于执行需要在断点处临时注入几行代码的高级检查特别有用。 图1-4 在Android Stuido中执行代码求值工具 注意,使用调试器并不能代替为应用程序编写测试。 1.5.2 使用lint做静态代码分析 即使是最好的程序员也会在写代码时犯错,多年来已经发展出多种处理这个问题的方法。编写单元测试已被证明是非常有效的方法,笔者强烈推荐所有的开发者使用。然而,即使是很细心编写的单元测试,也很难覆盖所有可能的状况,这就是为什么需要用其他方式来补充单元测试,比如静态代码分析。幸好谷歌已向Android SDK中加入了lint工具来处理这类情况。 lint工具会检查项目中的源文件,包括XML和Java。它还会查找缺失的元素、结构不良的代码、未被使用的变量等。在IDE中,高亮显示的区域(如图1-5所示)表示有代码要修正。将光标放在这些高亮处会显示更多的细节,在某些情况下可以执行“快速修复”命令来纠正这些问题。 图1-5 Android Studio高亮显示缺少属性的XML布局文件 虽然lint是一个强大的工具,但是它可能误把正确的代码显示成警告。声明未使用的方法或者AndroidManifest文件缺少推荐属性都可能导致lint生成警告,这种情况可能会很恼人,特别是多个开发者开发一个项目时。这时,不管lint的行为,主动抑制某段代码的警告,从而表示一切正常是个不错的想法。 Java和XML源文件都可以抑制lint警告。对于Java,可以使用@SuppressLint注解,把需要抑制的警告当做参数,如图1-6所示。 在XML文件中,需要引入lint命名空间,并且在需要抑制警告的地方添加tools: ignore="WarningName"(其中WarningName是需要抑制的警告,如图1-7所示)。 图1-6 在Java源码中抑制警告 图1-7 在XML源文件中抑制警告 请记住,lint的警告是有目的的。它们会指示潜在的bug区域,所以确保仔细考虑是否真的需要抑制这些警告。通常最好是保留它们而不是删掉,以便提醒开发者稍后处理。 1.5.3 重构代码 写代码时,很少一下子就能写出完善的代码。开发者会不断调整方法、变量、类的结构和名称。如果项目中的类不断增加,还会把它们移到一个单独的包中。随着代码越写越多,开发者可能会突然意识到已在某些地方写过类似的代码。 如果在多处引用一些代码,修改它们会是一个很复杂的过程。要给某个方法添加一个参数,就需要找到所有使用它的地方,然后一个个更新。如果手动处理,这个过程会非常复杂,而且很容易出错。所幸IDE内置了重构功能,这会让修改代码变得容易,还能消除引入bug的风险。 IDE内置了多种重构任务。重构涉及像命名,以及移动变量、方法、类、包这类简单的工作,也涉及大量复杂操作,比如修改方法的签名,封装字段,替换重复代码,以委托取代继承。本节接下来会介绍一些最常用的重构任务。 要在Android Studio中使用重构,将光标放在需要修改的代码处,然后从Refactor菜单中选择重构任务。 1. 提取常量 编写代码过程中很容易忽略一些从长远看来非常有益的最佳实践。一个常见的例子是,直接在代码中编写常量值(也就是说,使用实际的值而不是变量)而不是声明一个常量变量(声明为public static final的变量)。问题是,要修改这个值就需要找到所有使用它的地方,然后用常量名进行替换。这就是Extract Constant(提取常量)重构任务要做的事情。如图1-8所示,这个功能允许使用一个新定义的常量快速正确地替换所有该值出现的地方。 2. 修改方法签名 方法签名定义了方法的访问修饰符(private、protected、package local或者public)、返回类型、名称、参数。如果要为某个常用的方法添加一个额外的参数,在项目中所有引用它的地方做出正确的修改可能很复杂。图1-9显示了如何修改方法签名的各个部分以及代码中所有引用它的地方。 3. 从代码块中提取方法 保持方法体较小是一种最佳实践,这样可以使代码更可读并允许更有效的代码重用。当方法体变得越来越大,可以标记一个代码块然后执行Extract Method(抽取方法)重构任务,如图1-10所示。此后,如果需要的话,还可以执行Change Method Signature(修改方法签名)重构任务,以便让方法更加通用和更易重用。 IDE还能提供更多的重构选项。建议熟悉所有这选项,因为它们可以让开发者变得更富有成效。更多关于Android Studio(基于Intellij IDEA)的重构选项,可访问http://www.jetbrains.com/ idea/features/refactoring.html,里面有较全面的重构工具指南。 图1-8 在Android Studio中抽取常量 图1-9 在Android Studio中修改方法签名 图1-10 在Android Studio中抽取代码块到一个单独的方法

展开全文

推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

《Android编程实战》其他试读目录

• 1.1 可供选择的操作系统
• 1.2 Android SDK进阶
• 1.3 Android库项目以及第三方库
• 1.4 版本控制和源代码管理
• 1.5 熟练使用IDE [当前]
• 1.6 Android设备上的Developer选项
• 1.7 小结
• 1.8 延伸阅读