JavaRush /Java Blog /Random-TW /喝咖啡休息#109。目前 Java 開發中最需要的技能。消除程式碼混亂的 7 個 Java 選用技巧

喝咖啡休息#109。目前 Java 開發中最需要的技能。消除程式碼混亂的 7 個 Java 選用技巧

在 Random-TW 群組發布

目前 Java 開發中最需要的技能

來源:Medium Java 仍然是最受歡迎和最受歡迎的程式語言之一,儘管它已經有近四分之一個世紀的歷史了。因此,可以合理地假設 Java 的受歡迎程度將繼續成長,未來雇主對 Java 開發人員的需求將會更大。 喝咖啡休息#109。 目前 Java 開發中最需要的技能。 消除程式碼混亂的 7 個 Java 可選技巧 - 1為了創造高品質的產品,開發人員需要跟上最新的 Java 工具並提高他們的技術技能和知識。以下我們介紹 Java 開發人員所需的六項基本技能。

1. 精通Java 8

儘管較新版本的 Java 已被廣泛使用,但所有有抱負的 Java 開發人員都需要深入了解 Java 8 並獲得經驗。Java 8 的一些最有用的功能包括:
  • 用於建立具有方法實現的介面的標準和靜態方法。
  • 一種只有一個抽象方法的函數式接口,可以幫助開發人員避免添加其他抽象方法。
  • 有助於建立函數式介面的 Lambda 表達式。
  • Java Stream API 支援並行和順序執行。
  • Collection API 中的新方法。
所有這些特性使得 Java 8 對於函數式程式設計來說不可或缺。函數式程式設計提供並發性和程式碼簡潔性,並有助於使用最佳化的程式碼建立高負載應用程式。Java 8 也成為本機程式碼最佳化的基礎,允許對 Scala、Kotlin 和 Grails 等其他語言的開發進行最佳化。

2、有測試經驗

Java 中的單元測試是一個相當有爭議的話題。有些開發人員認為編寫單元測試是浪費時間,但我們堅信單元測試技能是任何專業 Java 開發人員都必須具備的技能。單元測試可讓您測試各個程式碼區塊並確保最終產品正常運作。因此,如果開發人員想要提升自己的技能和知識,他需要學習如何使用最受歡迎、最有效的測驗工具。您需要熟悉的主要測試框架是 JUnit 5 函式庫。其他工具包括:
  • 機器人框架
  • 莫基托
  • 電源模擬
除了單元測試之外,Java 開發人員不應忘記其他測試方法(系統測試、驗收測試和整合測試)。這使您可以對軟體進行全面的測試,並確保沒有錯誤、錯誤或嚴重故障。關於測驗要記住的主要一點是,小變化會帶來大結果。如果您毫不猶豫地將時間和精力投入到單元測試中,您將會對工作品質的提升感到驚訝。

3. 開發營運

儘管不是必需的,但了解 DevOps 及其原則對您作為開發人員和您工作的公司來說都是有益的。DevOps 流程的靈活性和組織性使公司能夠優化產品品質並簡化營運。並提高流程的透明度。Java中的DevOps本質上是DevOps在Java開發中的應用。這包括:
  • 持續交付和整合。
  • 使用微服務而不是整體服務。
  • 基礎設施即代碼。
  • 自動化測試。
DevOps 是一個廣泛的領域,需要大量的時間和資源來研究它。但如果你是 Java 開發人員,學習 DevOps 將是有益的,因為它將使你將來成為 DevOps 工程師。如果您不想成為 DevOps 工程師或您的公司對此不感興趣,那也沒關係。請記住,DevOps 在 Java 社群中變得越來越流行。

4.了解Java庫和API。

由於 Java 是世界上領先的程式語言之一,因此它擁有大量可用的 API 和程式庫也就不足為奇了。這些工具極大地簡化了開發過程,使開發人員能夠快速創建可靠的軟體。以下我們列出了一組基本工具,任何優秀的 Java 開發人員都知道並且可以自信地使用它們。這些工具可協助您快速建立應用程式並有效管理資料及其儲存:
  • Gradle(建立應用程式的工具);
  • Maven(有點過時但仍然流行,也用於建立應用程式);
  • Java 8 標準包;
  • Spring框架;
  • JPA ORM(Hibernate、TopLink);
  • NoSQL 資料庫(MongoDB、Cassandra)。
至於 API,要使用核心 Java API,開發人員需要充分了解 OpenJDK、Android、Oracle 和 IS2T。這些工具的一大優點是它們都附帶詳細且資訊豐富的文件。而且,開發者總是能得到社區的支持,這也是一大優勢。

5. 對Spring和Spring Boot有信心的知識

Spring 框架是開發基於 Java 的應用程式最常用的框架,因此開發人員了解如何使用它非常重要。Spring 的主要優點之一是依賴注入,它允許您建立鬆散耦合的應用程式並為開發人員提供更大的靈活性。Spring也非常輕量級,支援XML配置、註解和聲明式程式設計。所以如果你想掌握Java開發技能,你也應該掌握Spring部署。Spring Boot 是 Spring 的迭代,為快速部署應用程式提供了便利的工具。可以肯定地說,Spring Boot 使用 Spring 作為基礎,並在其之上建立了自己的功能。Spring 專注於靈活性,而 Spring Boot 有助於減少程式碼並簡化開發流程。它為開發人員提供開箱即用的功能,幫助建立獨立的應用程序,並且總體上更易於啟動和管理。Spring Boot 非常適合需要快速建置的微服務和應用程序,因為它可以快速輕鬆地為各種環境(生產、測試、品質、CI/CD)設定和運行應用程式。Spring和Spring Boot都擴展了React程式設計能力,這是開發者社群的另一個熱門趨勢。例如,Spring 5 現在使用 WebFlux 來實作響應式方法來程式設計和解決複雜的分散式系統。

6. 大數據經驗

大數據是一個不斷增長的趨勢,開發人員必須遵循和採用才能滿足市場需求。專業Java開發人員可以熟悉的主要工具有:
  • 阿帕契火花
  • 阿帕契·卡夫卡
  • Hadoop(用於批次)
Apache Spark 是一個分散式大數據處理平台,為 Java 提供本機綁定。該框架因其功能和效能而變得非常受歡迎,並且是目前 Java 社群中最受歡迎的大數據工具。Apache Spark 可以在叢集獨立模式下運行,為此您只需要一個 Apache Spark 環境和一個 JVM(對於叢集中的每台機器)。Spark 的速度也非常快,並且具有非常用戶友好的 Spark API。Hadoop 是一個 Java 開發人員也熟知的資料儲存平台。儘管 Hadoop 的速度不如 Spark,但它仍然是最受歡迎的大數據處理工具之一。這也是由於 Hadoop(以及類似的解決方案)擁有大量插件,可讓您有效率地解決大數據處理問題並普遍優化 Hadoop 效能(包括對即時串流處理的支援)。

消除程式碼混亂的 7 個 Java 選用技巧

一位 Java 開發人員在 Reddit 上寫道:“我的一些 同事不知道Optional的存在。” 我們是否可以認為Optional提高了程式碼的「可讀性」?值得一直使用嗎?哪裡完全不需要使用Optional?由於許多開發人員仍然不知道如何正確使用Optional,我將給出7個Optional濫用的例子以及如何處理它們。 喝咖啡休息#109。 目前 Java 開發中最需要的技能。 消除程式碼混亂的 7 個 Java 可選技巧 - 2

1. 不要使用Optional進行空檢查

使用可選而不是空檢查只會增加混亂。這樣做沒有任何好處。使用Optional 以及isPresentget方法也是一個錯誤。開發人員認為get應該按預期工作。然後他們添加isPresent並返回空檢查。請記住,Optional 不會修復您的空檢查。下次看到isPresentget(或ElseThrow)時,請更改這段程式碼。使用映射和orElse刪除標準空檢查,並更有選擇性地使用Optional。這是一個很好的例子:
var user = userService.getCurrentUser();
if(user == null) {
    return "(unknown)";
}
var username = user.getUsername();
if (username == null) {
    return "(unknown)";
}
return username;
vs

var user = userService.getCurrentUser();
if(user.isEmpty()) {
    return "(unknown)";
}
var username = user.orElseThrow().getUsername();
if (username == null) {
    return "(unknown)";
}
return username;
vs

return userService.getCurrentUser()
                  .map(User::getUsername)
                  .orElse("(unknown)");
您可以從可選目標開始。Optional 的目的是表示可選的、缺少的值。然後回到你的問題,看看它是否適合你。處理 null 檢查的另一種方法是使用註解。NullableNotNull應該可以正常運作。確實,它們會污染您的程式碼,並且它們僅在編譯時提供保護。若要檢查執行時,請使用Objects.requireNonNull

2. 進行適當的錯誤處理

有時null代表異常。這是發出錯誤和異常訊號的錯誤方式。「出了點問題,這裡是空的」是應該避免的反模式。另外,您不應該使用Optional 來覆蓋異常。這是一個例子。
public Optional<MyObject> getMyObject(final String jql) {
    try {
        return Optional.ofNullable(get(sql));
    } catch (final JqlParseException e) {
        return Optional.empty();
    }
}
為什麼myObject是空的?這要不是錯誤,就是空值。因此,您將再次獲得一個不明確的結果,並因此消除了可選的好處。這段程式碼的存在是因為人們試圖使用Optional來控制流程。可選將從您的程式碼庫中刪除一些零。但您仍然需要使用 try-catch 構造來處理異常。使用try-catch來正確處理異常。處理錯誤時不要刪除Optional,只需等待,它就會完美運作。但這裡有一個例外—空catch。當您不知道在空 catch 中返回什麼時,空的Optional應該可以正常工作。
private int readExpirationAsInt(Milk milk)
{
  String expiration = milk.getExpiration();
  try {
    return Integer.parseInt(expiration);
  }
  catch(NumberFormatException ignored) {}

  return 0;
}


private OptionalInt readExpirationAsInt(Milk milk)
{
  String expiration = milk.getExpiration();

  try {
    return Optional.of(Integer.parseInt(expiration));
  }
  catch(NumberFormatException e) {
    return OptionalInt.empty();
  }
}

3. 不要從可選方法回傳 null

public static Optional<POSType> getPOSType(String posName) {
    if (StringUtils.isNotBlank(posName)) {
        return Arrays.stream(POSType.values())
                .filter(type -> type.toString().equalsIgnoreCase(posName))
                .findFirst();
    }
    return null;
}
這違背了Optional的目的。這是另一個糟糕測試的例子。由於輸入為空,這意味著我們需要一個IllegalArgumentException檔案。另外,這是一個錯誤。沒有人需要檢查可選呼叫方法。傳回一個空的可選元素,並且從不檢查可選元素是否為空。

4. 不要對集合使用Optional。

不需要將集合包裝在Optional中。此外,不要將Options放入集合中。這只會讓事情變得更加複雜,因為增加了毫無意義的拳擊和額外的展開。不要將Options 新增到集合中。這樣做沒有明顯的好處。保持簡單並對缺失值使用Optional。

5. 不要為了鏈接而鏈接

Optional.ofNullable(foo).ifPresent(value -> {
  //do something
})
可選有詳細的方法可以幫助解決這個問題。代替鏈,一個簡單的空檢查就足夠了。我知道Optional有很好的方法和良好的IDE支援。你可以使用它們。

6. 使用原始值包裝器

這不是一個大問題,但您可以使用OptionalIntOptionalLong。只需刪除不必要的泛型,您就可以提高效能並編寫更簡潔的程式碼。

7. 你應該了解 ofNullable

if (a==null){
  return Optional.empty();
} else {
  return Optional.of(a);
}
這類程式碼通常是由不了解Optional#ofNullable 的開發人員編寫的。大多數開發人員甚至不理解ofNullableof之間的差異。他們不明白Optional#of為何會適得其反。大多數人會求助於ofNullable因為擔心在Optional#of中拋出NullPointerException。這再次違背了這兩種方法的目的。如果我們只使用ofNullable,為什麼我們還需要Optional#of呢? 當您傳遞給 null 時, Optional#of會引發 NPE。發生這種情況是有原因的。當您期望該值存在時,應使用此方法。如果它不存在,它很快就會失敗。 Optional#ofNullable將 null 轉換為空的Optional。此方法接受 null 作為參數,它符合一個空的Optional。
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION