Skip to content

Latest commit

 

History

History
64 lines (40 loc) · 3.75 KB

README.md

File metadata and controls

64 lines (40 loc) · 3.75 KB

Tutorial 7

Pada sesi tutorial kali ini, kamu akan menerapkan materi yang telah kamu pelajari yaitu terkait refactoring dan clean code. Tidak hanya itu, kamu juga akan mencoba menggunakan SonarQube untuk membantumu mengidentifikasi code smell, serta men-deploy aplikasi tersebut.

Clean Code

Selama liburan beberapa hari kebelakang, kamu sempat ingat bahwa dulu pernah membuat suatu program untuk belajar SpringBoot. Namun ketika dilihat kembali programnya, ternyata masih berantakan dan bahkan sulit dipahami. Kalau kata orang-orang kodenya kotor. Maklum, waktu itu yang penting bisa jalan dulu saja, yang lainnya urusan belakangan.

Kali ini, kamu ingin membersihkan kodemu dan menghilangkan code smell-nya. Oleh karena itu, dilakukanlah refactoring untuk memperbaiki kodemu sebelumnya. Untuk membantumu mengidentifikasi code smell, kamu juga mendapat rekomendasi dari teman untuk menggunakan SonarLint dan SonarQube. Kemudian, setelah programmu bebas dari code smell, kamu juga akan men-deploy-nya agar bisa digunakan secara luas.

Spesifikasi Program

Aplikasi terdiri dari tiga fitur, yaitu:

  1. Leap Year: Memeriksa apakah suatu tahun merupakan tahun kabisat.

  2. Day Counter: Menghitung beberapa hari setelah atau sebelum hari tertentu.

  3. Time Counter: Menghitung beberapa jam/menit setelah atau sebelum waktu tertentu.

Deployment

Deployment aplikasi akan menggunakan Google Cloud Platform dengan memanfaatkan guideline deployment yang telah ada. Aplikasi ini tidak membutuhkan database dan diasumsikan environment development, test, dan production sama sehingga bagian application.properties dapat dihiraukan untuk saat ini. Meskipun demikian, kamu diharapkan dapat memahami peran application.properties.

Beberapa hal yang perlu diperhatikan.

  • File application.properties dan beberapa versi environment tidak perlu dibuat.
  • Terdapat Dockerfile yang sudah disesuaikan.
  • Semua hal terkait database tidak perlu ditambahkan seperti dalam environment variables di GitLab dan Pipeline GitLab.
  • Konfigurasi .gitlab-ci.yml dapat dilihat disini untuk melihat perbedaannya.
  • Variabel IMAGE_NAME dan CONTAINER_NAME diisi dengan tutorial-7.

Requirements

  • Refactor implementasi fitur Leap Year:

    • Penamaan variable/method/file
    • Mengurangi long method
    • Memastikan setiap class memiliki responsibility yang sesuai
    • Meningkatkan readability kode. Contoh bahan bacaan dapat dilihat di sini dan di sini.
    • Feel free untuk menghapus comments yang tidak penting dan tidak berkaitan dengan production code.
  • Refactor implementasi fitur Day Counter:

    • Mengurangi long method
    • Memastikan setiap class memiliki responsibility yang sesuai
  • Refactor implementasi fitur Time Counter untuk mengurangi code duplication

  • Jalankan test yang telah disediakan untuk memastikan fitur dapat berjalan sebagaimana mestinya

  • Install SonarLint pada Intellij dan setup SonarQube untuk memastikan tidak ada code smell yang tersisa

  • Mengatur integrasi CI/CD untuk tahap pengecekan SonarQube

  • Deploy aplikasi pada GCP

Referensi