JavaRush /Java Blog /Random-ID /Rehat kopi #89. 10 Plugin IntelliJ IDEA Terbaik untuk Men...

Rehat kopi #89. 10 Plugin IntelliJ IDEA Terbaik untuk Meningkatkan Produktivitas Anda. Menangani pengecualian di Java Streams menggunakan antarmuka fungsional

Dipublikasikan di grup Random-ID

10 Plugin IntelliJ IDEA Terbaik yang Akan Meningkatkan Produktivitas Anda

Sumber: Hackernoon Saya baru-baru ini bertanya kepada pengembang yang menggunakan IntelliJ IDEA, plugin apa yang paling mereka sukai untuk IDE ini? Berdasarkan tanggapan yang dikumpulkan, diperoleh daftar 10 ekstensi terpopuler. Rehat kopi #89.  10 Plugin IntelliJ IDEA Terbaik untuk Meningkatkan Produktivitas Anda.  Menangani Pengecualian di Aliran Java Menggunakan Antarmuka Fungsional - 1

1. Waktu Waka

WakaTime memungkinkan Anda melihat metrik, analitik, dan melacak waktu yang dihabiskan pemrograman. Dengan itu, Anda akan tahu persis berapa banyak waktu yang Anda habiskan untuk coding karena plugin secara otomatis melacak kapan Anda mulai dan berhenti mengetik, dengan metrik terperinci untuk proyek, file, cabang, penerapan/PR, fitur, dan banyak lagi.

2.Ukuran langkah

Plugin ini membantu menyelesaikan masalah terkait utang teknis, pemeliharaan, dan pemfaktoran ulang kode. Ukuran langkah memungkinkan Anda untuk:
  • membuat bookmark di kode;
  • melacak utang teknis langsung dari editor;
  • buat TODO;
  • memprioritaskan masalah teknis selama perencanaan sprint;
  • Berkolaborasi dengan rekan satu tim selama pemeliharaan kode dan pemfaktoran ulang.

3. Promotor Kunci X

Promotor Kunci X membantu Anda mempelajari arti pintasan dan tombol di IntelliJ IDEA. Saat Anda mengarahkan mouse ke tombol di dalam IDE, Key Promoter X menampilkan pintasan keyboard yang dapat Anda gunakan alih-alih mengklik mouse.

4. ZIO untuk IntelliJ

ZIO akan memberi Anda saran, pemfaktoran ulang, dan peningkatan lainnya untuk ekosistem Scala ZIO. Plugin ini memperluas perpustakaan ZIO dengan fungsi seperti:
  • pemfaktoran ulang dan saran;
  • dukungan untuk makro Zio (misalnya, @accessible);
  • uji coba bawaan.

5.Protobuf

Plugin Bahasa Protobuf untuk IDE berbasis IntelliJ menyediakan dukungan untuk bahasa Protobuf. Protobuf membantu penyorotan sintaksis, mengimpor file dari perpustakaan dan SDK, navigasi, pelipatan kode, analisis semantik, dan dokumentasi cepat.

6.SonarLint

SonarLint memungkinkan Anda memperbaiki masalah kode sebelum terjadi. Sebagai pemeriksa ejaan, SonarLint menyoroti kesalahan dan kerentanan keamanan saat Anda menulis kode, dengan petunjuk jelas tentang cara memperbaikinya, sehingga Anda dapat memperbaikinya sebelum kode diterapkan. SonarLint di VS Code mendukung analisis kode dalam Java, JavaScript, TypeScript, Python, HTML, dan PHP.

7. ESLint

ESLint mendukung tampilan peringatan eslint sebagai inspeksi IntelliJ, membantu melakukan perbaikan cepat untuk beberapa aturan, mendukung aturan eslint khusus, serta anotasi dan penyelesaian konfigurasi eslint.

8. Lebih cantik

Ekstensi Prettier membantu kode Anda terlihat lebih baik dan lebih konsisten. Ini memastikan gaya yang konsisten dengan menganalisis kode Anda dan menulis ulang sesuai dengan aturan dan panjang baris maksimum.

9.Quokka

Quokka.js adalah alat produktivitas pengembang untuk pembuatan prototipe cepat JavaScript/TypeScript. Di IDE, ini memperbarui metrik waktu eksekusi di samping kode saat Anda mengetik. Ini sangat mempercepat pembuatan prototipe, pelatihan, dan pengujian JavaScript/TypeScript.

10. AceJump

AceJump memungkinkan Anda memindahkan kursor dengan cepat ke posisi mana pun yang terlihat di editor. Cukup tekan “CRTL+;”, masukkan karakter, lalu masukkan karakter yang sesuai untuk Ace Jump. Jika tidak ada kecocokan yang ditemukan di layar, AceJump akan melanjutkan ke kecocokan berikutnya yang dapat ditemukan.

Menangani pengecualian di Java Streams menggunakan antarmuka fungsional

Sumber: Dev.to Rehat kopi #89.  10 Plugin IntelliJ IDEA Terbaik untuk Meningkatkan Produktivitas Anda.  Menangani Pengecualian di Aliran Java Menggunakan Antarmuka Fungsional - 2 Saya baru-baru ini melihat beberapa kode dan menemukan sesuatu seperti ini:
subject.getIdentities().forEach(i -> {
  try {
    caseService.updateDocument(i.getCase());
  } catch (Exception e) {
    log.error(e);
  }
});
Karena saya penggemar berat ekspresi lambda dan menyukai singkatnya, kode di atas tampak sedikit ringkas dan sedikit membingungkan saya. Untuk menghapusnya, Anda harus menggunakan antarmuka fungsional. Apa yang kita butuhkan untuk ini? Kita tahu bahwa forEach mengharapkan masukan dari Konsumen. Jika kita dapat menggabungkan logika penanganan pengecualian di Konsumen, maka kita dapat menggunakan logika di forEach. Logika utama di dalam forEach adalah baris berikut:
//try catch removed
// i is an Identity and updateDocument returns a UpdateResponse
i -> caseService.updateDocument(i.getCase());
Kita mengetahui tipe input dan return, dan kita dapat membuat antarmuka fungsional yang metodenya mengeluarkan pengecualian.
@FunctionalInterface
public interface ThrowingFunction<Identity, UpdateResponse> {
  UpdateResponse apply(Identity i) throws Exception;
}
Kita dapat membuat kode menjadi lebih nyaman menggunakan obat generik.
@FunctionalInterface
public interface ThrowingFunction<T, R> {
  R apply(T t) throws Exception;
}
Setelah antarmuka dibuat, logika asli dapat diketik:
ThrowingFunction<Identity, UpdateResponse> tf = i -> caseService.updateDocument(i.getCase());
Sekarang kita memiliki antarmuka fungsional untuk logika kita, kita bisa meneruskannya sebagai parameter ke metode yang menangani pengecualian dan mengembalikan Konsumen yang bisa kita gunakan di forEach.
private static <T, R> Consumer<T> wrap(ThrowingFunction<T, R> f) {
  return t -> {
    try  {
      f.apply(t);
    } catch (Exception e) {
      throw new RuntimeException(e);
    }
  };
}
Kelihatannya agak aneh, tapi pada dasarnya metode wrap mengambil ThrowingFunction sebagai input dan menangani eksekusi fungsi atau menangkap dan melempar pengecualian di Konsumen. Sekarang kita dapat menggabungkan logika apa pun yang digunakan dalam forEach yang mungkin menimbulkan pengecualian. Ini terlihat seperti ini:
// target type the original logic
ThrowingFunction<Identity, UpdateResponse> tf = i -> caseService.updateDocument(i.getCase()):

// pass logic to the wrapmethod
// which will execute the function or throw a RunTimeException.
Consumer<Identity> p = wrap(tf);

// use Consumer in foreach
subject.getIdentities().forEach(p);
Atau jika Anda lebih suka satu baris:
subject.getIdentities().forEach(wrap(i -> caseService.updateDocument(i.getCase())));
Setuju bahwa ini jauh lebih baik! Anda dapat menerapkan sesuatu seperti ini untuk menangani berbagai jenis antarmuka fungsional. Misalnya, operasi Map hanya menggunakan Function sebagai input . Alih-alih metode pembungkus yang mengembalikan Konsumen, Anda bisa memiliki metode yang mengembalikan suatu fungsi. Ini hanyalah salah satu cara untuk menangani pengecualian di thread. Saya harus menyebutkan bahwa ada perpustakaan yang melakukan ini untuk Anda. Anda juga dapat menggunakan monad untuk menangani keberhasilan atau kegagalan, tapi itu di luar cakupan postingan ini.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION