如果其他类型更加合适,请避免使用字符串(50)

本文探讨了在编程中不当使用字符串代替其他数据类型的潜在问题,并提出了合理的替代方案。

不应该使用字符串的情形:

1、字符串不适合代替其他的值类型

  • 传入程序的数据是什么类型就用什么类型保存,不是全用字符串保存

2、字符串不适合代替枚举类型

3、字符串不适合代替聚集类型

  • 保存多个数据,用一个长字符串(过程慢、繁琐、容易出错)
  • 使用一个简单的类描述数据集,成员使用私有静态成员

92d62da76d437f265ba58cc3a056502a578.jpg

4、字符串不适合代替能力表

878458612653ee7f0a4a5e1928860712123.jpg

f5293c54f11f8365e87fcf72f391b0da28b.jpg

  • 上述字符串key 代表一个共享全局命名空间(key 必须唯一、存在巨大安全隐患)
  • 如下使用不可伪造的键

6ef325eceb4fd65b861c4e0b3da7315ae30.jpg

  • 进一步改进,使用内嵌ThreadLocal

54c05ae5ac3948f87f086b73ddcd53bb025.jpg

  • 非类型安全、进一步改进

807aeb6404d33ce51723f9220955f086a8c.jpg

8712c6708967a7842098211edb9408fd149.jpg

  • 类型安全的原因是 T 代替Object ,获取值后使用 Object 强转带来类型不安全
  • ThreadLocal 更快、更优雅、不基于字符串

总结:

  • 如果有更加合适的类型,避免使用字符串代替对象
  • 使用不当会显得更加笨拙、不灵活、速度慢、容易出错
  • 经常被错误使用字符串代替的类型包括基本类型、聚集类型、枚举类型

转载于:https://my.oschina.net/u/3847203/blog/1923647

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值