Catatan blog ini memperincikan peningkatan terkini pada antara muka baris arahan (CLI) projek HyperGraph kami: sistem pemuatan arahan dinamik. Pada mulanya, menambah arahan CLI baharu ialah proses manual berbilang langkah, melanggar prinsip DRY dan Prinsip Terbuka/Tertutup.
Cabaran: Pendaftaran Perintah Manual
Menambah arahan baharu yang terlibat:
__init__.py
.Ini membosankan, terdedah kepada ralat dan memerlukan pengubahsuaian kod sedia ada untuk setiap ciri baharu—jauh daripada ideal.
Meneroka Penyelesaian: Automasi lwn. Pemuatan Dinamik
Dua penyelesaian telah dipertimbangkan:
Walaupun skrip automasi kelihatan lebih mudah pada mulanya, ia hanya akan menangani gejala, bukan kecacatan reka bentuk yang mendasari.
Penyelesaian: Penemuan Perintah Dinamik
Penyelesaian yang dipilih ialah sistem pemuatan dinamik yang mendaftarkan arahan secara automatik. Kod teras ialah:
<code class="language-python">async def load_commands(self) -> None: implementations_package = "hypergraph.cli.commands.implementations" for _, name, _ in pkgutil.iter_modules([str(self.commands_path)]): if name.startswith("_"): # Skip private modules continue module = importlib.import_module(f"{implementations_package}.{name}") for item_name, item in inspect.getmembers(module): if (inspect.isclass(item) and issubclass(item, BaseCommand) and item != BaseCommand): command = item(self.system) self.registry.register_command(command)</code>
Pendekatan ini menawarkan beberapa kelebihan:
implementations
.Pelajaran Utama yang Dipelajari
CommandRegistry
asal memastikan kod sedia ada terus berfungsi.Kemunduran Kecil
Isu kecil timbul dengan import jenis yang hilang (Any
daripada typing
), yang menonjolkan kepentingan pembayang jenis yang teliti dalam Python.
Langkah Masa Depan
Semasa sistem dinamik dilaksanakan, skrip automasi kekal sebagai kemungkinan sebagai alat pembangunan untuk menjana templat fail arahan. Rancangan masa depan termasuk:
Kesimpulan
Pemfaktoran semula ini menunjukkan faedah menilai semula pendekatan untuk penyelesaian yang lebih elegan. Walaupun memerlukan lebih banyak usaha awal daripada pembetulan pantas, hasilnya lebih boleh diselenggara, diperluas dan kod Pythonic. Mengutamakan kebolehselenggaraan jangka panjang memudahkan pembangunan masa depan.
Tag: #Python #Refactoring #CleanCode #CLI #Programming
Untuk maklumat teknikal terperinci, rujuk repositori Codeberg kami.
Atas ialah kandungan terperinci Menjadikan CLI Python Lebih Boleh Diselenggara: Perjalanan dengan Pemuatan Perintah Dinamik. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!