Saya minta maaf jika ini adalah pertanyaan yang benar-benar sangat mutakhir, tetapi saya ingin tahu apa praktik terbaik yang ada, dan sepertinya saya tidak dapat menemukan jawaban yang baik di Google.
Dalam Python, saya biasanya menggunakan kelas kosong sebagai wadah struktur data super-catchall (seperti file JSON), dan menambahkan atribut di sepanjang jalan:
class DataObj:
"Catch-all data object"
def __init__(self):
pass
def processData(inputs):
data = DataObj()
data.a = 1
data.b = "sym"
data.c = [2,5,2,1]
Ini memberi saya banyak fleksibilitas, karena objek kontainer pada dasarnya dapat menyimpan apa saja. Jadi jika persyaratan baru muncul, saya hanya akan menambahkannya sebagai atribut lain ke objek DataObj (yang saya berikan di kode saya).
Namun, baru-baru ini saya terkesan (oleh programmer FP) bahwa ini adalah praktik yang mengerikan, karena membuatnya sangat sulit untuk membaca kode. Kita harus melalui semua kode untuk mengetahui atribut apa yang sebenarnya dimiliki DataObj.
Pertanyaan : Bagaimana saya bisa menulis ulang ini untuk pemeliharaan yang lebih besar tanpa mengorbankan fleksibilitas?
Apakah ada ide dari pemrograman fungsional yang bisa saya adopsi?
Saya mencari praktik terbaik di luar sana.
Catatan : satu ide adalah untuk menginisialisasi kelas dengan semua atribut yang diharapkan akan ditemui, misalnya
class DataObj:
"Catch-all data object"
def __init__(self):
data.a = 0
data.b = ""
data.c = []
def processData(inputs):
data = DataObj()
data.a = 1
data.b = "sym"
data.c = [2,5,2,1]
Apakah ini ide yang bagus? Bagaimana jika saya tidak tahu atribut saya apriori?