Pengembangan Skrip / Perencanaan dan Organisasi Kode
Kumpulan Skrip, Skrip, dan fungsi harus diorganisasikan dengan logika tertentu, bukan sekadar menumpuk kode secara sembarangan. Penataan Kumpulan Skrip dan Skrip yang wajar bermanfaat untuk pemeliharaan kode dan efisiensi operasional sistem.
1. Membagi Kumpulan Skrip dan Skrip secara wajar berdasarkan kegunaan dan jenis
Secara umum, disarankan untuk memilih cara-cara pengorganisasian kode berikut:
- Buat Kumpulan Skrip terpisah untuk Skrip pemrosesan bisnis berdasarkan industri, proyek, organisasi, misalnya:
eShop,IoT,monitor,sales,marketing, dll. - Jika ukuran kode terlalu besar, bagi Skrip yang jarang digunakan dan Skrip yang sering digunakan berdasarkan frekuensi penggunaan, misalnya
prediction,advanced_prediction
2. Memanggil Fungsi dalam Skrip Lain
Skrip dapat dibagi ke dalam Skrip atau Kumpulan Skrip yang berbeda berdasarkan berbagai kebutuhan seperti fungsi, kegunaan, dan lain-lain; kode dalam Skrip yang berbeda dapat saling memanggil.
Ketika perlu memanggil fungsi dalam Skrip lain, cukup import Skrip yang bersangkutan.
Saat mengimpor Skrip lain, harus mengikuti cara penulisan yang tetap:
| Python | |
|---|---|
1 2 3 4 5 6 | |
Di editor Skrip, Anda dapat mengarahkan kursor ke ikon tanda tanya di bilah sisi kiri untuk langsung menyalin pernyataan terkait
Jika perlu mengekspor Kumpulan Skrip, maka Skrip lain yang menjadi dependensi dalam Kumpulan Skrip ini juga perlu diekspor bersama. Jika tidak, Kumpulan Skrip yang diekspor tidak akan benar-benar berjalan karena kekurangan fungsi!
Skrip atau Kumpulan Skrip bukanlah modul Python, dan sebenarnya tidak dapat diimpor dengan import
Tetapi DataFlux Func secara internal menerapkan mekanisme pemuatan dinamis dan mengizinkan penggunaan pernyataan import untuk memuat kode dinamis. Oleh karena itu, penulisan berikut semuanya salah.
| Python | |
|---|---|
1 2 3 4 5 6 | |
Selain itu, saat mengimpor Skrip, perhatikan agar tidak terjadi referensi melingkar, seperti:
| Python | |
|---|---|
1 2 3 4 5 6 7 8 | |
Perhatian, ketika mengedit beberapa Skrip secara bersamaan, jika saat ini Anda mengimpor Skrip lain, Skrip yang dirujuk sebenarnya akan dieksekusi menggunakan versi yang telah dipublikasikan, dan sistem tidak akan pernah mengimpor versi draf!
3. Ukuran Kode dan Rantai Ketergantungan pada Satu Skrip
Karena ketika DataFlux Func menjalankan Skrip, ia menggunakan pemuatan dinamis untuk mengeksekusi Skrip yang diperlukan. Jika salah satu Skrip mengimpor Skrip lain, Skrip yang diimpor juga akan dimuat secara dinamis.
Oleh karena itu, jika ada beberapa fungsi dalam sebuah Skrip yang dipanggil dengan sangat sering, pertimbangkan untuk mengekstraknya menjadi Skrip terpisah untuk mengurangi beban pemuatan. Disarankan agar ukuran satu Skrip dibatasi tidak lebih dari 1000 baris.
Selain itu, hindari juga rantai ketergantungan yang terlalu panjang, karena dapat menyebabkan pemborosan kinerja yang tidak perlu. Contoh:
- Skrip 1 bergantung pada Skrip 2
- Skrip 2 bergantung pada Skrip 3
- Skrip 3 bergantung pada Skrip 4
- Skrip 4 bergantung pada Skrip 5
- ...
Modul bawaan Python dan modul pihak ketiga tidak terpengaruh oleh batasan ini
4. Kasus Tanpa Pembagian Skrip
Meskipun di atas telah disebutkan perencanaan Skrip yang wajar dan cara pemanggilan antar Skrip, dalam beberapa situasi tertentu (misalnya ketika fungsi publik yang benar-benar digunakan sangat sedikit dan sederhana), Anda dapat mempertimbangkan untuk tidak membagi Skrip dan menempatkan semua kode dalam satu Skrip yang sama.
Dengan cara ini, meskipun kode menjadi sedikit redundan, cara ini juga memberikan beberapa manfaat tambahan:
- Satu Skrip saja sudah dapat berjalan, mengurangi beban pemuatan
- Tidak akan terpengaruh oleh perubahan fungsi publik
- Tidak perlu mempertimbangkan ketergantungan saat mengekspor Skrip
Silakan pilih cara yang paling wajar untuk mengorganisasikan Skrip sesuai dengan situasi aktual
5. Penyingkatan Referensi Antar Skrip dalam Kumpulan Skrip yang Sama
Ditambahkan pada versi 1.1.0rc51
Dalam Kumpulan Skrip yang sama, referensi antar Skrip dapat ditulis tanpa menyertakan bagian ID Kumpulan Skrip (yaitu hanya menulis bagian yang diawali dengan __).
Hal ini memudahkan saat Kumpulan Skrip dikloning; setelah ID Kumpulan Skrip diubah, fungsi-fungsi internal tetap dapat saling merujuk dengan benar.
Contoh:
| Python | |
|---|---|
1 2 3 4 | |
| Python | |
|---|---|
1 2 3 4 5 6 7 | |
6. Hindari Enkapsulasi Berlebihan
Python adalah bahasa pemrograman multi-paradigma; kita dapat menggunakan pemrograman prosedural yang sederhana, dan juga dapat menggunakan pemrograman berorientasi objek.
Namun, di DataFlux Func, demi kemudahan debugging, disarankan untuk menulis kode dengan gaya pemrograman yang cenderung prosedural dan menghindari enkapsulasi yang berlebihan.
Misalnya, fungsi yang sama dapat diimplementasikan dengan 2 cara yang berbeda:
| Python | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | |
Pada contoh di atas, meskipun keduanya dapat mengimplementasikan fungsi yang sama, karena query_some_api(...) adalah fungsi yang dapat dipanggil secara langsung, di editor Anda dapat memilih fungsi ini lalu langsung mengisi parameter untuk menjalankannya.
Sedangkan jika ingin men-debug dan menjalankan metode do(...) dari kelas APIQuery, Anda harus membuat instance objek terlebih dahulu sebelum dapat memanggilnya, sehingga Anda perlu menulis fungsi pengujian terpisah test_api_query(...) untuk memanggilnya.
Metode mana yang digunakan, silakan pilih sesuai dengan situasi aktual.