Coding Guidelines

Panduan ini dibuat dengan tujuan untuk meningkatkan kualitas kode aplikasi clickERP. Kode yang ditulis dengan baik dapat meningkatkan keterbacaan, memudahkan pemeliharaan, membantu debugging, mengurangi kompleksitas, dan meningkatkan keandalan. Pedoman ini harus diterapkan pada setiap pengembangn modul baru maupun modul yang sudah ada.

Panduan ini diadaptasi dari Pedoman Pengkodean Odoo yang dibuat agar lebih cocok dengan kebutuhan dari proyek clickERP.

Modul

  • Penamaan modul (technical name) menggunakan bentuk tunggal, contohnya adalah gunakan sale bukan sales.
  • Jika modul dikembangkan sebagai basis untuk modul lain maka awali namanya dengan base_. Contoh: base_address.
  • Ketika extending modul yang sudah ada, awali nama modul yang dibuat dengan nama modul yang di-extend. Contoh, ketika kamu mengkustom modul mail dengan menambah fungsi forward pesan maka nama modul yang kamu buat adalah mail_forward.

Penomoran versi

Pola nomor versi dalam manifes modul harus berupa versi mayor Odoo (misal 15.0) diikuti dengan nomor versi modul x.y.z. Contohnya adalah 15.0.1.0.0 yang dapat dibaca bahwa modul tersebut merupakan versi rilis 1.0.0 yang ditujukan untuk Odoo 15.0.

Pola penomoran x.y.z mengikuti pola versi penomoran semantik dengan arti sebagai berikut.

  • x ditingkatkan nomornya jika terdapat perubahan model data atau view yang signifikan. Mungkin membutuhkan migrasi data karena perubahan tersebut.
  • y ditingkatkan nomornya jika terdapat fitur baru yang tidak merusak atau mengubah fitur yang sudah ada.
  • z ditingkatkan nomornya ketika ada bugfix terhadap fungsi yang sudah ada.

Struktur modul

Direktori

Modul diatur dalam sebuah struktur direktori. Direktori-direktori tersebut berisi logika bisnis. Berikut ini adalah direktori dalam sebuah modul.

  • data/, berisi file-file xml untuk data-data awal maupun data-data demo yang digunakan oleh modul.
  • models/, berisi file-file definisi model.
  • controllers/, berisi controller untuk rute HTTP.
  • views/, berisi file-file untuk mendefinisikan tampilan dan templat tampilan.
  • static/, berisi file-file aset web.

Direktori opsional lainnya terdapat dalam sebuah modul antara lain adalah.

  • wizard/, digunakan dalam pembuatan transient model.
  • report/, digunakan dalam pembuatan laporan-laporan yang dapat dicetak.
  • tests/, digunakan dalam testing modul.

Penamaan file

Untuk file-file model, pastikan membuat file untuk masing-masing model. Nama model menggunakan bentuk tunggal dan nama file model mengikuti nama model tetapi tanda titik dalam nama model digantikan dengan tanda garis bawah pada nama file.

Sebagai contoh, jika kamu membuat sebuah modul penjualan yang berisi data order, pelanggan, dan barang, maka berikut ini adalah gambaran file-file modelnya.

sale/
|-- models/
    |-- order.py
    |-- product.py
    |-- res_partner.py (inherited dari model res.partner)

Untuk masalah keamanan, berikut ini adalah ketentuannya.

  • Definisi access rights ditulis dalam file ir.model.access.csv.
  • User group didefinisikan dalam file <nama_modul>_groups.xml.
  • Record rule didefinisikan dalam file <nama_model>_security.xml.

Jika diterapkan dalam contoh sebelumnya maka berikut ini adalah gambarannya.

sale/
|-- security/
    |-- ir.model.access.csv
    |-- order_security.xml
    |-- product_security.xml
    |-- sale_groups.xml

File-file view dibagi berdasarkan modelnya dengan pola penamaan <nama_model>_views.xml. Sebagai catatan, main menu suatu modul dapat dibuatkan file tersendiri karena tidak terikat dengan model tersendiri. Untuk file main menu menggunakan pola <nama_modul>_menus.xml. Untuk file-file template juga sama dengan file view dengan pola <nama_model>_templates.xml.

Jika diterapkan dalam contoh sebelumnya maka berikut ini adalah gambarannya.

sale/
|-- views/
    |-- order_views.xml
    |-- product_templates.xml
    |-- product_views.xml
    |-- res_partner_views.xml
    |-- sale_menus.xml

Jika modul kamu memiliki data bawaan yang harus disediakan, buat file-file data tersebut di dalam direktori data/ dengan pola <nama_model>_data.xml. Selain data bawaan, kamu juga dapat menyertakan data demo yang dapat digunakan oleh user untuk mencoba modulmu. Pola penamaan untuk file demo adalah <nama_model>_demo.xml.

Jika diterapkan dalam contoh sebelumnya maka berikut ini adalah gambarannya.

sale/
|-- data/
    |-- order_demo.xml
    |-- product_data.xml
    |-- product_demo.xml