Selasa, 10 November 2020

Refleksi Sprint 2 Proyek Kelas

Pada Sprint 2 ini saya mencoba menerapkan konsep  ​Red, Green, Refactor​ dengan konsep ​clean code​.

Clean Code sendiri dapat diartikan kode program yang formatnya benar, disusun dengan baik dan rapi, dan mengikuti standard agar mudah dimengerti, mudah dibaca dan ditelusuri, proses pengembangan perangkat lunak dapat dilakukan secara tim dan bisa dalam jangka waktu panjang. Salah satu implementasi metode untuk clean code adalah dengan refactor. Refactoring (Red, Green, Refactor) ini bukan hanya memungkinkan kita untuk menggabungkan semua kode lama agar lulus tes, tetapi juga meminta kita untuk meluangkan waktu untuk memperbaiki desainnya sehingga pada akhirnya kode dapat mudah dimengerti, ditelusuri dan di kembangkan secara bersama-sama tim. Namun sebelum tahap refactoring kita harus melewati dahulu tahap Red dan green dimana pada tahap red kita akan membuat test terlebih dahulu gagal(red flag) karena implementasi code fiturnya memang belum dibuat. Setalah itu kemudian kita mengimplementasikan code fiturnya sampai akhirnya testnya berhasil maka fase ini di sebut GREEN. Setalah Fase red dan green barulah kita melakukan refactoring. Selain itu  test organisation diimplementasikan dengan cara membagi code berdasarkan user storynya masing-masing. File yang bercampur dipisah kedalam beberapa file lainnya sehingga lebih tertata dan mudah dibaca. Manfaat yang utama dalam penerapan test organisation adalah membuat kode kita sebersih mungkin(clean code) sehingga mudah dibaca, ditelusuri dan dipahami.​

Pada penerapan subscription email kita sebaiknya mencoba melakukan test terlebih dahulu dengan cara apakah ulr untuk subscription sudah benar, Pada bagian form juga diuji apakah form untuk mengisi email sudah sesuai dengan ketentuan yang ada. Kemudian cek ketika email berhasil di simpan dan email terdaftar sebagai subscriber apakah web memberikan pesan yang benar.

CSS juga file seperti javascript, image dan lain sebagainya yang berpengaruh pada tampilan perlu juga untuk kita test walaupun tidak semua karena terlalu banyak tapi beberapa kita test sehingga minimal kita tahu bahwa setting-an nya sudah benar dan terload sempurna.

Testing menekankan agar testing dilakukan setahap demi setahap tidak terburu-buru untuk membuatnya jadi sekaligus karena dikhawatirkan ketika semuanya dilakukan sekaligus akan menimbulkan permasalahan yang kita akan sulit pecahkan karna terlalu banyak dan mungkin juga ada bagian-bagian yang juga terlupakan. Maka kita membaginya kedalam tahap-tahap kecil dan dikerjakan satu tahap-satu tahap (one step at a time)

Dengan pengecekan sederhana terhadap fungsi css kita, kita bisa memastikan bahwa css kita terload dengan benar. Dalam kasus ini pengecekannya berupa benarkah gambar sbuscription kita sudah berada pada posisi dan terload sempurna. Pada tahapnnya kita melakukan step by step mulai dari menyusun testing dan implementasi satu demi satu sehingga semua test berjalan

Terakhir dengan konsep YAGNA (You ain’t gonna need it), penulis menghindari menulis code yang tidak perlu karna tergoda pemikiran bahwa mungkin fungsi ini dibutuhkan

Refleksi Sprint 1 Proyek Kelas

Pada Sprint 1 ini Saya mengerjakan fitur Subscription email dan sorting artikel dengan like tertinggi terlebih dahulu (urutan terfavorite). Untuk Subscription tidak terdapat kendala berarti namun untuk yang sorting like agak kebingungan karena fiturnya beririsan dengan tugas mahasiswa lain sehingga harus menunggu tugas mahasiswa tersebut beres. 

Pada Sprint 1 ini kita dituntut untuk mengimplementasikan "Do Nothing Until You Have a Test" dimana berlaku Statemen Red, Green, Refactor. Pertama-tama kita tulis tesnya, lalu kita jalankan dan memeriksa apakah gagal seperti yang diharapkan. Baru setelah itu kita melanjutkan dan membangun beberapa code sehingga testnya berhasil. Kemudian jika kode perlu dirapihkan atau ada perulangan code yang dituliskan maka kita melakukan Refactor. Untuk melakukan refactor kita harus memastikan bahwa test telah berhasil karena jika test masih gagal kemudian kita lakukan refactor akan sulit kita mendeteksi dimana letak error yang ada.

Kita menggunakan framework Djanggo untuk membuat modul-modul diatas. Django digunakan karena framework ini sangat populer di bahasa pemrograman Python. Django juga memiliki unit test yang memudahkan programer dalam menjalankan testing terhadap aplikasinya. Basic code untuk proyek sudah ada dalam repository http://gitlab.cs.ui.ac.id/

Dalam memulai Proyeknya kita terlebih dahulu mengclone repository yang ada di git. Sebelum mengintall kebutuhan yang diperlukan saya membuat virtualenvironmet agar lingkungan yang digunakan bersih dan tidak bentrok dengan proyek saya yang lainnya. Kemudian  sesuaikan environmet yang dibutuhkan dengan environtment lingkungan operating system dan database yang kita pakai terutama pada bagian username dan password postgree jika lingkungan kita sudah tidak memakai username dan password default postgre. 

Setelah bagian environment disesuaikan, tahapan selanjutnya adalah menginstall requirement yang dibutuhkan dan melakukan migration dengan cara:

pip3 install -r requirements.txt

python3 manage.py makemigrations

python3 manage.py migrate 

Setelahnya kita coba jalankan apakan server bisa berjalan dengan mengetikan python3 manage.py runserver. Pada lingkungan Sistem Operasi Windows ada sedikit kurang berjalan dan saya menyesuaikan dahulu dengan menginstall beberapa requirement yang tidak tertulis di file requirement.txt

Setelah server jalan kita tambahkan beberapa data awal dengan melakukan python3 manage.py loaddata */fixtures/initial.json. Setelahnya Server siap untuk melakukan testing dengan melakukan python3 manage.py test