」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > Item 避免使用其他類型更合適的字串

Item 避免使用其他類型更合適的字串

發佈於2024-11-02
瀏覽:625

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 dict...
    程式設計 發佈於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 whites...
    程式設計 發佈於2025-04-16

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3