JavaRush /Blog Java /Random-MS /Rehat kopi #109. Kemahiran yang paling diminati dalam pem...

Rehat kopi #109. Kemahiran yang paling diminati dalam pembangunan Java sekarang. 7 Petua Pilihan Java untuk Menghilangkan Kekacauan Kod

Diterbitkan dalam kumpulan

Kemahiran yang paling diminati dalam pembangunan Java sekarang

Sumber: Medium Java kekal sebagai salah satu bahasa pengaturcaraan yang paling popular dan dalam permintaan, walaupun pada hakikatnya ia berusia hampir seperempat abad. Oleh itu, adalah munasabah untuk mengandaikan bahawa populariti Java akan terus berkembang dan pembangun Java akan melihat permintaan yang lebih besar daripada majikan pada masa hadapan. Rehat kopi #109.  Kemahiran yang paling diminati dalam pembangunan Java sekarang.  7 Petua Pilihan Java untuk Menghilangkan Kekacauan Kod - 1Untuk mencipta produk berkualiti, pembangun perlu mengikuti alatan Java terkini dan meningkatkan kemahiran teknikal dan pengetahuan mereka. Di bawah ini kami membentangkan enam kemahiran penting yang diperlukan untuk pembangun Java.

1. Pengetahuan yang sangat baik tentang Java 8

Walaupun versi Java yang lebih baharu telah digunakan secara meluas, semua pembangun Java yang bercita-cita tinggi memerlukan pengetahuan dan pengalaman yang mendalam dengan Java 8. Beberapa ciri yang paling berguna bagi Java 8 termasuk:
  • Kaedah standard dan statik untuk mencipta antara muka dengan pelaksanaan kaedah.
  • Antara muka berfungsi yang hanya mempunyai satu kaedah abstrak dan membantu pembangun mengelak daripada menambah kaedah abstrak lain.
  • Ungkapan Lambda yang membantu mencipta antara muka berfungsi.
  • Java Stream API untuk membolehkan pelaksanaan selari dan berjujukan.
  • Kaedah baharu dalam API Koleksi.
Semua ciri ini menjadikan Java 8 amat diperlukan untuk pengaturcaraan berfungsi. Pengaturcaraan fungsian menyediakan konkurensi dan keringkasan kod, dan membantu mencipta aplikasi beban tinggi dengan kod yang dioptimumkan. Java 8 juga menjadi asas untuk pengoptimuman kod asli, membolehkan pengoptimuman pembangunan dalam bahasa lain seperti Scala, Kotlin, dan Grails.

2. Pengalaman dengan ujian

Ujian unit di Java adalah topik yang agak kontroversi. Sesetengah pembangun berpendapat bahawa menulis ujian unit adalah membuang masa, tetapi kami yakin bahawa kemahiran ujian unit adalah satu kemestian bagi mana-mana pembangun Java profesional. Ujian unit membolehkan anda menguji blok kod individu dan memastikan produk akhir berfungsi tanpa ralat. Oleh itu, jika pembangun ingin meningkatkan kemahiran dan pengetahuannya, dia perlu belajar cara menggunakan alat ujian yang paling popular dan berkesan. Rangka kerja ujian utama yang perlu anda kenali ialah perpustakaan JUnit 5. Alat lain termasuk:
  • Rangka Kerja Robot
  • Mockito
  • PowerMock
Selain daripada ujian unit, pembangun Java tidak seharusnya melupakan kaedah ujian lain (ujian sistem, ujian penerimaan dan ujian integrasi). Ini membolehkan anda melakukan ujian menyeluruh terhadap perisian dan memastikan tiada ralat, pepijat atau kegagalan kritikal. Perkara utama yang perlu diingat tentang ujian ialah perubahan kecil membawa kepada hasil yang besar. Jika anda tidak teragak-agak untuk meluangkan masa dan usaha ke dalam ujian unit, anda akan kagum dengan peningkatan dalam kualiti kerja anda.

3. DevOps

Walaupun tidak diperlukan, mempelajari tentang DevOps dan prinsipnya boleh memberi manfaat kepada anda sebagai pembangun dan untuk syarikat tempat anda bekerja. Fleksibiliti dan organisasi proses DevOps membolehkan syarikat mengoptimumkan kualiti produk mereka dan menyelaraskan operasi. dan juga meningkatkan ketelusan proses. DevOps dalam Java pada asasnya adalah aplikasi DevOps kepada pembangunan Java. Ini termasuk:
  • Penyampaian dan penyepaduan berterusan.
  • Bekerja dengan perkhidmatan mikro dan bukannya monolit.
  • Infrastruktur sebagai kod.
  • Ujian automatik.
DevOps ialah bidang yang luas dan memerlukan sejumlah besar masa dan sumber untuk mengkajinya. Tetapi jika anda seorang pembangun Java, mempelajari DevOps akan memberi manfaat kerana ia akan membolehkan anda menjadi jurutera DevOps pada masa hadapan. Jika anda tidak mahu menjadi jurutera DevOps atau syarikat anda tidak berminat dengannya, maka tidak mengapa juga. Perlu diingat bahawa DevOps semakin popular dalam komuniti Java.

4. Pengetahuan tentang perpustakaan Java dan API.

Memandangkan Java adalah salah satu bahasa pengaturcaraan terkemuka di dunia, tidak hairanlah ia mempunyai sejumlah besar API dan perpustakaan yang tersedia untuk digunakan. Alat ini sangat memudahkan proses pembangunan dan membolehkan pembangun mencipta perisian yang boleh dipercayai dengan cepat. Di bawah ini kami telah menyenaraikan set alat asas yang mana-mana pembangun Java yang baik tahu dan boleh menggunakan dengan yakin. Alat ini membantu anda membina aplikasi dengan cepat dan mengurus data serta storannya dengan berkesan:
  • Gradle (alat untuk membina aplikasi);
  • Maven (sedikit ketinggalan zaman tetapi masih popular, juga digunakan untuk membina aplikasi);
  • Pakej Standard Java 8;
  • Rangka Kerja Spring;
  • JPA ORM (Hibernate, TopLink);
  • Pangkalan data NoSQL (MongoDB, Cassandra).
Bagi API, untuk bekerja dengan API Java teras, pembangun perlu mempunyai pengetahuan yang baik tentang OpenJDK, Android, Oracle dan IS2T. Kelebihan besar alat ini ialah semuanya dilengkapi dengan dokumentasi terperinci dan bermaklumat. Selain itu, pembangun sentiasa boleh mendapatkan sokongan komuniti, yang juga merupakan kelebihan besar.

5. Pengetahuan yakin tentang Spring dan Spring Boot

Rangka Kerja Spring ialah rangka kerja yang paling biasa digunakan untuk membangunkan aplikasi berasaskan Java, jadi adalah penting bagi pembangun mengetahui cara bekerja dengannya. Salah satu faedah utama Spring ialah suntikan kebergantungan, yang membolehkan anda mencipta aplikasi yang digandingkan secara longgar dan memberikan lebih fleksibiliti kepada pembangun. Spring juga sangat ringan, menyokong konfigurasi XML, anotasi dan pengaturcaraan deklaratif. Jadi jika anda ingin menguasai kemahiran pembangunan Java, anda juga harus menguasai penggunaan Spring. Spring Boot ialah lelaran Spring yang menyediakan alat mudah untuk menggunakan aplikasi dengan cepat. Adalah selamat untuk mengatakan bahawa Spring Boot menggunakan Spring sebagai asas dan membina cirinya sendiri di atasnya. Walaupun Spring memberi tumpuan kepada fleksibiliti, Spring Boot membantu mengurangkan kod dan memudahkan proses pembangunan. Ia menawarkan ciri luar biasa kepada pembangun, membantu membina apl kendiri dan secara keseluruhannya lebih mudah untuk dilancarkan dan diurus. Spring Boot bagus untuk perkhidmatan mikro dan aplikasi yang perlu dibina dengan cepat, kerana ia menjadikannya cepat dan mudah untuk menyediakan dan menjalankan aplikasi untuk pelbagai persekitaran (pengeluaran, ujian, kualiti, CI/CD). Kedua-dua Spring dan Spring Boot telah berkembang dengan keupayaan pengaturcaraan React, yang merupakan satu lagi trend hangat dalam komuniti pembangun. Spring 5, sebagai contoh, kini mempunyai WebFlux untuk melaksanakan pendekatan reaktif kepada pengaturcaraan dan menyelesaikan sistem teragih yang kompleks.

6. Pengalaman dengan Data Besar

Big Data ialah trend yang semakin meningkat yang mesti diikuti dan diguna pakai oleh pembangun untuk memenuhi permintaan pasaran. Alat utama yang boleh dibiasakan oleh pembangun Java profesional ialah:
  • Apache Spark
  • Apache Kafka
  • Hadoop (untuk pemprosesan kelompok)
Apache Spark ialah platform pemprosesan Data Besar yang diedarkan yang menyediakan pengikatan asli untuk Java. Rangka kerja ini telah menjadi sangat popular kerana ciri dan prestasinya dan pada masa ini merupakan alat data besar yang paling disukai dalam komuniti Java. Apache Spark boleh berjalan dalam mod kendiri kluster dan untuk ini anda hanya memerlukan persekitaran Apache Spark dan JVM (untuk setiap mesin dalam kluster). Spark juga sangat pantas dan mempunyai API Spark yang sangat mesra pengguna. Hadoop ialah platform penyimpanan data yang juga terkenal kepada pembangun Java. Walaupun Hadoop tidak sepantas Spark, ia kekal sebagai salah satu alat paling popular untuk bekerja dengan data besar. Ini juga disebabkan oleh fakta bahawa Hadoop (dan penyelesaian serupa) mempunyai sejumlah besar pemalam yang membolehkan anda menyelesaikan masalah pemprosesan Data Besar dengan cekap dan secara amnya mengoptimumkan prestasi Hadoop (termasuk sokongan untuk pemprosesan strim masa nyata).

7 Petua Pilihan Java untuk Menghilangkan Kekacauan Kod

Sumber: Sederhana "Saya mempunyai rakan sekerja yang tidak tahu tentang kewujudan Pilihan," tulis seorang pembangun Java di Reddit. Bolehkah kita menganggap Pilihan meningkatkan "kebolehbacaan" kod? Adakah berbaloi menggunakannya sepanjang masa? Di manakah penggunaan Optional sama sekali tidak perlu? Memandangkan ramai pembangun masih tidak tahu cara menggunakan Pilihan dengan betul, saya akan memberikan 7 contoh penyalahgunaan Pilihan dan perkara yang perlu dilakukan terhadapnya. Rehat kopi #109.  Kemahiran yang paling diminati dalam pembangunan Java sekarang.  7 Petua Pilihan Java untuk Menghilangkan Kekacauan Kod - 2

1. Jangan gunakan Pilihan untuk semakan nol

Menggunakan Pilihan dan bukannya semakan nol hanya menambah kekacauan. Tidak ada faedah daripada ini. Ia juga merupakan satu kesilapan untuk menggunakan Pilihan dan kaedah isPresent dan dapatkan . Pembangun percaya bahawa get harus berfungsi seperti yang diharapkan. Mereka kemudian menambah isPresent dan kembali ke semakan nol. Ingat bahawa Pilihan tidak membetulkan semakan nol anda. Lain kali anda melihat isPresent dan dapatkan (atau ElseThrow ) tukar sekeping kod ini. Gunakan pemetaan dan orElse untuk mengalih keluar semakan nol standard, dan gunakan Pilihan dengan lebih selektif. Berikut adalah satu contoh yang baik:
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)");
Anda boleh mulakan dengan sasaran Pilihan. Tujuan Pilihan adalah untuk mewakili nilai pilihan yang tiada. Kemudian kembali kepada masalah anda dan lihat sama ada ia berfungsi untuk anda. Cara lain untuk menangani semakan nol ialah menggunakan anotasi. Nullable atau NotNull sepatutnya berfungsi dengan baik. Benar, mereka boleh mencemarkan kod anda, dan mereka hanya melindungi pada masa penyusunan. Untuk menyemak runtime gunakan Objects.requireNonNull .

2. Lakukan pengendalian ralat yang betul

Kadangkala null mewakili pengecualian. Dan ini adalah cara yang salah untuk menandakan ralat dan pengecualian. "Sesuatu telah berlaku, dan ini adalah batal" ialah anti-corak yang harus dielakkan. Selain itu, anda tidak seharusnya menggunakan Pilihan untuk menampung pengecualian. Berikut adalah contoh.
public Optional<MyObject> getMyObject(final String jql) {
    try {
        return Optional.ofNullable(get(sql));
    } catch (final JqlParseException e) {
        return Optional.empty();
    }
}
Mengapa myObject kosong? Ini sama ada ralat atau nilai kosong. Jadi anda sekali lagi akan mendapat keputusan yang samar-samar dan memadamkan faedah Pilihan sebagai hasilnya. Kod ini wujud kerana orang cuba menggunakan Pilihan untuk aliran kawalan. Pilihan akan mengalih keluar beberapa sifar daripada pangkalan kod anda. Tetapi anda masih perlu menggunakan binaan cuba-tangkap untuk mengendalikan pengecualian. Gunakan try-catch untuk mengendalikan pengecualian dengan betul. Jangan alih keluar Pilihan semasa mengendalikan ralat, tunggu sahaja dan ia akan berfungsi dengan sempurna. Tetapi terdapat satu pengecualian di sini - tangkapan kosong . Apabila anda tidak tahu apa yang perlu dikembalikan dalam tangkapan kosong, Pilihan kosong harus berfungsi dengan baik.
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. Jangan kembalikan null daripada kaedah Pilihan

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;
}
Ini mengalahkan tujuan Pilihan. Ini adalah satu lagi contoh ujian yang lemah. Memandangkan input kosong, ini bermakna kita memerlukan fail IllegalArgumentException . Juga, ini adalah kesilapan. Tiada siapa yang perlu menyemak Kaedah panggilan pilihan. Kembalikan elemen Pilihan kosong dan jangan sekali-kali tandakan elemen Pilihan untuk nol.

4. Jangan gunakan Pilihan dengan koleksi.

Tidak perlu membungkus koleksi dalam Pilihan. Selain itu, jangan letakkan Pilihan dalam koleksi. Ini hanya merumitkan keadaan dengan menambah tinju sia-sia dan membuka balutan tambahan. Jangan tambahkan Pilihan pada koleksi. Tiada faedah yang dapat dilihat daripada ini. Pastikan ia mudah dan gunakan Pilihan untuk nilai yang tiada.

5. Jangan merantai demi merantai

Optional.ofNullable(foo).ifPresent(value -> {
  //do something
})
Pilihan mempunyai kaedah terperinci yang boleh membantu dengan ini. Daripada rantaian, semakan nol mudah sudah memadai. Saya tahu Optional mempunyai kaedah yang baik dan sokongan IDE yang baik. Anda boleh menggunakannya.

6. Gunakan pembalut nilai primitif

Ia bukan masalah besar, tetapi anda boleh menggunakan OptionalInt atau OptionalLong . Hanya dengan mengalih keluar generik yang tidak diperlukan, anda akan meningkatkan prestasi dan menulis kod yang lebih ringkas.

7. Anda harus tahu tentang ofNullable

if (a==null){
  return Optional.empty();
} else {
  return Optional.of(a);
}
Kod jenis ini biasanya ditulis oleh pembangun yang tidak tahu tentang Optional#ofNullable . Kebanyakan pembangun tidak memahami perbezaan antara ofNullable dan of . Mereka tidak faham bagaimana Optional#of boleh menjadi bumerang. Kebanyakan akan menggunakan ofNullable kerana takut membuang NullPointerException dalam Optional#of . Sekali lagi, ini mengalahkan tujuan kedua-dua kaedah ini. Jika kita hanya menggunakan ofNullable , mengapa kita memerlukan Optional#of sama sekali ? Pilihan# melempar NPE apabila anda lulus ke null. Ini berlaku atas sebab tertentu. Kaedah ini harus digunakan apabila anda menjangkakan nilai akan hadir. Jika ia tidak ada, ia akan cepat gagal. Optional#ofNullable menukar null kepada Optional kosong. Kaedah ini mengambil null sebagai hujah, yang sepadan dengan Pilihan kosong.
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION