经验分享——工具类

简介: 最近工程抓取到了几个崩溃信息,查看了下抓取到的bug,都是工具类出现异常,以前写完工具类都要测试好多遍,不觉着工具类会出现什么问题,就没太在意,但是最近发现有好多奇葩设备,奇葩的自定义系统不按常规出牌,就是会有各种各样的问题。

最近工程抓取到了几个崩溃信息,查看了下抓取到的bug,都是工具类出现异常,以前写完工具类都要测试好多遍,不觉着工具类会出现什么问题,就没太在意,但是最近发现有好多奇葩设备,奇葩的自定义系统不按常规出牌,就是会有各种各样的问题。

工具类就是为其他方法提供方便使用的工具,那么最最重要的就是要保证工具自身好用,起码不能影响调用者。

下面总结几点Android下工具类需要具备的几点基本要求

工具类

  1. final修饰

    工具类不再需要继承,也没有必要让别人继承,那么final修饰一下,提升下逼格。

  2. 构造方法私有化

    工具类一般不允许new对象,直接使用工具类名,点,方法名就可以了

  3. 方法public static修饰

    工具类私有化以后,想要调用工具方法,必须使用public static修饰

  4. 没有返回值的方法均 try catch

    如果工具类出现问题,在cathc里做处理

  5. 有返回值的的方法均 try catch finally

    如果工具类出现问题,在catch里做处理,在finally里返回一个默认值

在满足以上几点基本要求的基础上,再去实现工具内容

当然,逻辑严谨是最重要的,不要依赖于try catch

eg

package …….utils;

import ……;

/**
 * Created by kongqw on 2015/12/3.
 */
public final class TextUtil {
    private TextUtil() {
    }

    /**
     * 处理空字符串
     *
     * @param input
     * @return
     */
    public static String replaceSpace(String input) {
        String str = null;
        try {
            str = input.replaceAll("\t", "").replaceAll(" ", "").replaceAll("\r", "").replaceAll("\n", "").replaceAll("\b", "");
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            return str;
        }
    }

    ……
}
相关文章
|
7月前
|
JavaScript 算法 开发者
如何用JS实现在网页上通过鼠标移动批量选择元素的效果?
本文介绍了类似电脑桌面通过鼠标选择多个图标的实现原理。主要通过监听mousedown、mousemove和mouseup事件,动态调整选择框大小并计算与元素的重叠情况。提供了角重叠和相交重叠的检测方法,并附有示例代码和在线演示链接,方便开发者参考与测试。
259 56
|
人工智能
AI大模型初体验
为了实现真正的A,需不断学习以提升能力。
339 3
AI大模型初体验
|
机器学习/深度学习 物联网 异构计算
ExVideo+CogVideoX,更长、更优!再次升级的开源视频生成能力
DiffSynth-Studio 再次为 CogVideoX 带来新的增强模块——ExVideo-CogVideoX-LoRA-129f-v1
|
10月前
|
调度 vr&ar 图形学
【干货】实时云渲染与本地渲染的技术对比
实时渲染分为本地渲染和云渲染两种模式。随着XR技术在建筑、教育、医疗等领域的广泛应用,越来越多企业选择云渲染以提升效率、降低成本并增强协同能力。本文对比分析了这两种渲染模式的优劣,并重点介绍了实时云渲染方案具备便捷性、高效资源调度、超低时延网络、数据安全、终端轻量化及跨系统运行等优势,满足多种XR应用场景需求。
516 13
|
10月前
|
人工智能 文字识别 BI
多模态数据信息提取解决方案评测报告
《多模态数据信息提取解决方案评测报告》概述了该方案在商业智能、内容审核等领域的应用。报告指出,该方案通过AI技术解析多种格式文件,提升数据处理效率。部署界面直观易用,但数据类型选择和复杂配置需优化。部署文档详尽,涵盖环境准备到验证,但在操作系统差异方面可加强指导。函数应用模板简化部署,适合非技术人员,但对于高级用户细节说明不足。官方示例展示了系统的强大功能,但在长篇文本和低质量图片处理上有改进空间。整体上,该方案表现良好,具有灵活性和可移植性,但仍需进一步优化以满足特定领域需求。
179 8
|
Java
软件工程设计原理里氏替换原则 ,具体实现及JAVA代码举例
里氏替换原则(Liskov Substitution Principle, LSP)是面向对象设计的基本原则之一,由Barbara Liskov提出。这个原则指出,如果类 S 是类 T 的子类型,则程序中使用 T 的对象的地方都可以不经修改地使用 S 的对象。换句话说,子类的对象应该能够替换掉它们的父类对象,而不影响程序的正确性。这个原则强调了继承关系中的行为兼容性,保证了基类和派生类之间的正确抽象和继承关系。
264 3
|
XML JSON 安全
借助API接口实现自营商城上货采集,无货源模式采集商品
在无货源模式的自营商城中,通过API接口实现商品采集是一个高效且灵活的方式。这种方式允许商家直接从供应商或其他电商平台的API接口中获取商品信息,然后将这些信息导入到自己的商城中,无需自己拥有实际的库存。
|
编解码 安全 小程序
Flutter屏幕适配
Flutter屏幕适配
|
Shell 数据处理 C++
【Shell 编程设计】shell中${}和()的使用指南
【Shell 编程设计】shell中${}和()的使用指南
304 0
|
JavaScript 前端开发 Java
前端js实现打印(导出)excel表格
前端js实现打印(导出)excel表格
260 0