Menggunakan eval dalam pengaturcaraan sering tidak digalakkan kerana kelemahan yang wujud. Walaupun dirasakan kemudahannya, terdapat alternatif yang lebih sesuai dan selamat, terutamanya apabila mentakrifkan atribut objek secara dinamik.
Sebab Terhadap Penggunaan eval:
Mengatasi Masalah Asas tanpa Eval:
Masalah asas menetapkan atribut secara dinamik boleh diatasi tanpa menggunakan eval. Pertimbangkan kelas Lagu yang disemak berikut menggunakan setattr:
class Song: attsToStore = ('Name', 'Artist', 'Album', 'Genre', 'Location') def __init__(self): for att in self.attsToStore: setattr(self, att.lower(), None) # Initialize attributes with None def setDetail(self, key, val): if key in self.attsToStore: setattr(self, key.lower(), val) # Set attribute dynamically
Kesimpulan:
Walaupun eval mungkin menawarkan kemudahan penggunaan yang jelas, risiko dan batasan yang berkaitan menjadikannya tidak digalakkan berlatih dalam kebanyakan senario. Setattr atau mekanisme serupa menyediakan alternatif yang lebih selamat dan cekap untuk mentakrifkan atribut objek secara dinamik.
Atas ialah kandungan terperinci Mengapakah Menggunakan `eval()` Dianggap sebagai Amalan Memudaratkan dalam Pengaturcaraan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!