Hello guys! Menurut kalian apasih refactoring itu? Refactoring itu bukan hanya sekedar menulis ulang kode supaya lebih cantik, namun refactoring merupakan proses incremental dalam meningkatkan kualitas kode dengan melakukan perubahan pada bagian-bagian yang kecil.
Pada umumnya, setiap kali kita menulis kode pemrograman, dalam python maupun bahasa lain, kita memulai dari mencari bagaimana solusi dalam menyelesaikan masalah. Pada masa ini, mencari solusi yang memiliki kualitas yang terbaik sangatlah sulit untuk langsung didapatkan. Solusi juga beraneka ragam sehingga bukanlah tidak mungkin jika solusi yang kita temui adalah solusi yang buruk, lambat, dan sulit untuk dimengerti.
Pada TDD penggunaan metode refactoring terletak setelah tes lulus. Ketika tes telah lulus, pengembang akan berfokus pada 'refactoring' dimana memperbaiki kode untuk menjadi lebih cepat, mudah dibaca, dan mengikuti best practices.
Refactoring pada dasarnya juga dibutuhkan pada kode-kode yang tergolong tua (dibuat sudah lama) untuk dapat diubah menjadi baris yang lebih modern dan standar, membolehkan fungsionalitas yang awalnya tidak ada.
https://usercontent2.hubstatic.com/8530569.gif |
Menentukan Tujuan
Sebelum berusaha melakukan refactor pada kode python kita, sangatlah dianjurkan untuk memiliki gambaran yang jelas dari tujuan yang ingin dicapai dengan melakukan refractoring. Secara umum mungkin dapat dibagi menjadi 4 tujuan utama:
1. Membuat kode mudah dibaca oleh diri sendiri dan orang lain.
2. Membuat kode yang reusable, mudah ditambahkan fungsi lain ataupun digunakan dengan fungsi lain.
3. Mengurangi lamanya kode dalam memproses karena ketidakefektifan.
4. Mengurangi memori yang dibutuhkan dalam memproses.
Kadangkala ditemukan juga konflik diantara tujuan-tujuan tersebut. Sebagai contoh dalam python rekursif membutuhkan penulisan kode yang sangat sedikit dibandingkan dengan menggunakan fungsi loop, namun mungkin saja tidak dianjurkan karena performanya yang cenderung lebih buruk.
Alloca-refactor
Dengan mengacu pada beberapa panduan dan contoh dalam bahasa Ruby oleh Martin Fowler pada websitenya, kami berusaha mengimplementasikan proses refractoring pada aplikasi berbahasa Python kami.
MVC
Pada implementasi proyek kami, kami menggunakan framework yaitu Flask yang membantu kita untuk membangun sebuah backend menggunakan python. Framework itu sendiri merupakan sebuah MVC (Model-View-Controller) dan merupakan bagian dari design pattern. MVC termasuk ke dalam behavioral patern yang mengidentifikasi kesamaan cara komunikasi antar objek. MVC memisahkan komponen-komponen implementasi sebuah Model, View, dan Controller.
Model
Model mewakili struktur data yang berisi fungsi-fungsi yang membantu seseorang dalam pengelolaan basis data seperti memasukkan data, pembaruan, dan lainnya.
View
View merupakan bagian yang mengatur tampilan kepada pengguan.
Controller
Controller merupakan bagian yang menjembatani model dan view. Berfungsi sebagai 'kontrol' yaitu menyimpan proses-proses yang dapat dilakukan dalam mengolah data dari model dan memberikannya kepada view yang tepat.
MVC
Pada implementasi proyek kami, kami menggunakan framework yaitu Flask yang membantu kita untuk membangun sebuah backend menggunakan python. Framework itu sendiri merupakan sebuah MVC (Model-View-Controller) dan merupakan bagian dari design pattern. MVC termasuk ke dalam behavioral patern yang mengidentifikasi kesamaan cara komunikasi antar objek. MVC memisahkan komponen-komponen implementasi sebuah Model, View, dan Controller.
Model
Model mewakili struktur data yang berisi fungsi-fungsi yang membantu seseorang dalam pengelolaan basis data seperti memasukkan data, pembaruan, dan lainnya.
View
View merupakan bagian yang mengatur tampilan kepada pengguan.
Controller
Controller merupakan bagian yang menjembatani model dan view. Berfungsi sebagai 'kontrol' yaitu menyimpan proses-proses yang dapat dilakukan dalam mengolah data dari model dan memberikannya kepada view yang tepat.
Explicit code
Walaupun banyak hal ajaib yang dapat dilakukan oleh Python, yang sering kita sebut dengan black magic, namun cara yang paling explisit lebih diutamakan karena mudah dimengerti. Contoh:
Ubah:
Menjadi:
1 Statement Per-Baris
Merupakan bad practice untuk menumpuk pernyataan pada satu baris kode. Contoh:
Ubah:
Menjadi:
Jangan Pakai Jalan Pintas
Python merupakah bahasa yang sangat fleksibel dan memiliki banyak trik untuk dapat menyelesaikan masalah. Namun, sangat disarankan untuk menghindari:
1. Merubah cara objek dibuat.
2. Merubah cara interpreter python mengubah modul.
3. Meng-embed kode C dalam Python.
Flake8
Flake8 merupakan linter yang menjaga kita untuk dapat menuliskan kode dengan rapih dan best practice sehingga guideline dalam menuliskan kode dalam tim dapat teratur.
Manipulasi List
Beberapa cara yang baik dan buruk untuk memanipulasi list:
Buruk:
Baik:
Buruk:
Baik:
Gunakan enumerate untuk mengingat indeks pada loop:
Enumerate sangat optimal terhadap iterator dan mempermudah cara membaca.
Membuka File
Gunakan 'with open' agar file tidak lupa ditutup walaupun terdapat exception di tengah blok.
Baik:
Baik:
Demikian beberapa ilmu refactoring yang dapat kami bagikan kepada kalian selama pengembangan perangkat lunak kami, semoga bermanfaat ya!
0 komentar:
Post a Comment