”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > Item 避免使用其他类型更合适的字符串

Item 避免使用其他类型更合适的字符串

发布于2024-11-02
浏览:137

1。避免使用字符串替代其他数据类型:

字符串旨在表示文本,但经常被误用来表示数字、枚举或聚合结构。
如果数据本质上是数字,请使用 int、float 或 BigInteger 等类型,而不是 String。

String age = "30";  // incorreto
int age = 30;       // correto

2.字符串是枚举类型的糟糕替代品:

使用 enum 比使用字符串表示枚举值更安全、更易读。

String status = "ACTIVE";  // incorreto
Status status = Status.ACTIVE;  // correto, usando enum

3.字符串是聚合类型的较差替代品:

将复杂数据表示为单个字符串,并用分隔符分隔,可能会导致错误和维护问题。最好为这些数据创建类。

错误示例(使用字符串表示聚合数据):

String personData = "John|Doe|30";

正确示例(使用类):

class Person {
    String firstName;
    String lastName;
    int age;

    // Construtor e métodos adequados
}

4。字符串替代资源(例如:线程局部变量):

使用字符串将资源标识为线程局部变量可能会导致安全问题和名称冲突。更换为更安全的密钥。

错误示例(使用字符串来标识线程局部变量):

Map threadLocalVariables = new HashMap();
threadLocalVariables.put("myVariable", value);

正确示例(使用安全密钥):

class Key {
    // implementação da chave
}

Map threadLocalVariables = new HashMap();
Key key = new Key();
threadLocalVariables.put(key, value);

ThreadLocal的正确使用:

线程局部变量的理想设计涉及使用 ThreadLocal,它允许以类型安全的方式创建与每个线程关联的变量。

ThreadLocal正确使用示例:

private static final ThreadLocal threadId = ThreadLocal.withInitial(() -> 0);

public static void main(String[] args) {
    System.out.println(threadId.get());  // obtem o valor da variável local da thread
}

结论:

避免一切都使用字符串的诱惑。使用更合适的数据类型或创建新类型可以防止错误、提高可读性并使代码更加高效和安全。

书中的例子:

Item  Evite as strings onde outros tipos forem mais adequados

Item  Evite as strings onde outros tipos forem mais adequados

版本声明 本文转载于:https://dev.to/giselecoder/item-62-evite-as-strings-onde-outros-tipos-forem-mais-adequados-2o63?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 如何从Google API中检索最新的jQuery库?
    如何从Google API中检索最新的jQuery库?
    从Google APIS 问题中提供的jQuery URL是版本1.2.6。对于检索最新版本,以前有一种使用特定版本编号的替代方法,它是使用以下语法:获取最新版本:未压缩)While these legacy URLs still remain in use, it is recommended ...
    编程 发布于2025-04-16
  • 如何使用Python理解有效地创建字典?
    如何使用Python理解有效地创建字典?
    在python中,词典综合提供了一种生成新词典的简洁方法。尽管它们与列表综合相似,但存在一些显着差异。与问题所暗示的不同,您无法为钥匙创建字典理解。您必须明确指定键和值。 For example:d = {n: n**2 for n in range(5)}This creates a dicti...
    编程 发布于2025-04-16
  • eval()vs. ast.literal_eval():对于用户输入,哪个Python函数更安全?
    eval()vs. ast.literal_eval():对于用户输入,哪个Python函数更安全?
    称量()和ast.literal_eval()中的Python Security 在使用用户输入时,必须优先确保安全性。强大的Python功能Eval()通常是作为潜在解决方案而出现的,但担心其潜在风险。本文深入研究了eval()和ast.literal_eval()之间的差异,突出显示其安全性含义...
    编程 发布于2025-04-16
  • 如何在JavaScript对象中动态设置键?
    如何在JavaScript对象中动态设置键?
    在尝试为JavaScript对象创建动态键时,如何使用此Syntax jsObj['key' i] = 'example' 1;不工作。正确的方法采用方括号: jsobj ['key''i] ='example'1; 在JavaScript中,数组是一...
    编程 发布于2025-04-16
  • 在GO中构造SQL查询时,如何安全地加入文本和值?
    在GO中构造SQL查询时,如何安全地加入文本和值?
    在go中构造文本sql查询时,在go sql queries 中,在使用conting and contement和contement consem per时,尤其是在使用integer per当per当per时,per per per当per. [&​​&&&&&&&&&&&&&&&默元组方法在...
    编程 发布于2025-04-16
  • 在Ubuntu/linux上安装mysql-python时,如何修复\“ mysql_config \”错误?
    在Ubuntu/linux上安装mysql-python时,如何修复\“ mysql_config \”错误?
    mysql-python安装错误:“ mysql_config找不到”“ 由于缺少MySQL开发库而出现此错误。解决此问题,建议在Ubuntu上使用该分发的存储库。使用以下命令安装Python-MysqldB: sudo apt-get安装python-mysqldb sudo pip in...
    编程 发布于2025-04-16
  • 如何解决UWP应用访问localhost时的"net_http_client_execution_error"错误?
    如何解决UWP应用访问localhost时的"net_http_client_execution_error"错误?
    [2 在UWP Apps 中进行故障排除网络环回限制 问题: 原因: 解决: 允许您的UWP应用程序访问本地主机访问,请按照以下步骤: 查找您的软件包姓名:找到您的UWP应用程序的软件包姓名。 您可以使用Visual Studio 2015的package.appxmanifest编辑器或powe...
    编程 发布于2025-04-16
  • 为什么我在Silverlight Linq查询中获得“无法找到查询模式的实现”错误?
    为什么我在Silverlight Linq查询中获得“无法找到查询模式的实现”错误?
    查询模式实现缺失:解决“无法找到”错误在Silverlight应用程序中,尝试使用LINQ建立LINQ连接以错误而实现的数据库”,无法找到查询模式的实现。”当省略LINQ名称空间或查询类型缺少IEnumerable 实现时,通常会发生此错误。 解决问题来验证该类型的质量是至关重要的。在此特定实例中...
    编程 发布于2025-04-16
  • 如何使用Regex在PHP中有效地提取括号内的文本
    如何使用Regex在PHP中有效地提取括号内的文本
    php:在括号内提取文本在处理括号内的文本时,找到最有效的解决方案是必不可少的。一种方法是利用PHP的字符串操作函数,如下所示: 作为替代 $ text ='忽略除此之外的一切(text)'; preg_match('#((。 &&& [Regex使用模式来搜索特...
    编程 发布于2025-04-16
  • 揭秘pytz中'Asia/Hong_Kong'时区偏移之谜
    揭秘pytz中'Asia/Hong_Kong'时区偏移之谜
    在Pytz中的Pytz 在Pytz中的偏移时区偏移,使用'Asia/hong_kong的时区上的时区域似乎是不寻常的,因为它返回了7-Minute and 37-minute ofsets,创建一个时区对象。这种行为不是唯一的。原因在于时区和偏移经历历史变化的事实。 PYTZ初始化了具有最...
    编程 发布于2025-04-16
  • 如何有效地转换PHP中的时区?
    如何有效地转换PHP中的时区?
    在PHP 利用dateTime对象和functions DateTime对象及其相应的功能别名为时区转换提供方便的方法。例如: //定义用户的时区 date_default_timezone_set('欧洲/伦敦'); //创建DateTime对象 $ dateTime = ne...
    编程 发布于2025-04-16
  • 如何使用替换指令在GO MOD中解析模块路径差异?
    如何使用替换指令在GO MOD中解析模块路径差异?
    在使用GO MOD时,在GO MOD 中克服模块路径差异时,可能会遇到冲突,其中3个Party Package将另一个PAXPANCE带有导入式套件之间的另一个软件包,并在导入式套件之间导入另一个软件包。如回声消息所证明的那样: go.etcd.io/bbolt [&&&&&&&&&&&&&&&&...
    编程 发布于2025-04-16
  • Java的Map.Entry和SimpleEntry如何简化键值对管理?
    Java的Map.Entry和SimpleEntry如何简化键值对管理?
    A Comprehensive Collection for Value Pairs: Introducing Java's Map.Entry and SimpleEntryIn Java, when defining a collection where each element com...
    编程 发布于2025-04-16
  • 如何使用Python的请求和假用户代理绕过网站块?
    如何使用Python的请求和假用户代理绕过网站块?
    如何使用Python的请求模拟浏览器行为,以及伪造的用户代理提供了一个用户 - 代理标头一个有效方法是提供有效的用户式header,以提供有效的用户 - 设置,该标题可以通过browser和Acterner Systems the equestersystermery和操作系统。通过模仿像Chro...
    编程 发布于2025-04-16
  • Java字符串非空且非null的有效检查方法
    Java字符串非空且非null的有效检查方法
    检查字符串是否不是null而不是空的 if(str!= null && str.isementy())二手: if(str!= null && str.length()== 0) option 3:trim()。isement(Isement() trim whitespace whitesp...
    编程 发布于2025-04-16

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3