Pengalaman bekas pembangun Microsoft yang bekerja pada BitLocker untuk Windows 8 telah mencetuskan perbincangan mengenai batasan alat pembangunan dalaman Microsoft. Kisah ini mendedahkan bagaimana tugas mudah seperti mengemaskini mesej ralat boleh menjadi cabaran kompleks akibat kekangan alat.
Masalah dengan Mesej Ralat Statik
Pembangun tersebut menghadapi isu kebolehgunaan biasa semasa bekerja pada sistem konfigurasi BitLocker. Apabila pentadbir menetapkan dasar penyulitan yang melebihi had sistem, pengguna akan melihat mesej ralat yang samar-samar seperti The BitLocker minimum passphrase length is too high tanpa mengetahui apakah had sebenar. Matlamatnya mudah: menukar mesej ini supaya lebih spesifik, seperti The BitLocker minimum passphrase length cannot exceed 20.
Walau bagaimanapun, keperluan penyetempatan Microsoft mewujudkan halangan teknikal. Semua teks yang berhadapan dengan pengguna perlu berada dalam fail .mc
yang berasingan untuk tujuan terjemahan, manakala had sebenar ditakrifkan sebagai pemalar dalam kod C++. Pemisahan ini bermakna tiada cara langsung untuk merujuk pemalar C++ dalam mesej ralat.
Seni Bina Sistem Mesej Ralat Microsoft:
- Teks yang dihadapi pengguna disimpan dalam fail
.mc
untuk penyetempatan - Pemalar C++ ditakrifkan secara berasingan dalam fail pengepala
- API
ShowError()
hanya menerima ID sumber, bukan rentetan format - Tiada mekanisme terbina dalam untuk merujuk pemalar C++ dalam fail mesej
Penyelesaian Preprocessor Raymond Chen
Apabila pembangun meminta bantuan dalam senarai mel dalaman, Raymond Chen - pembangun Windows terkenal di sebalik blog The Old New Thing - mencadangkan menggunakan preprocessor C pada fail .mc
. Ini akan membolehkan fail mesej ralat merujuk pemalar yang sama yang digunakan dalam kod C++, memastikan semuanya segerak.
Walaupun secara teknikal kukuh, penyelesaian ini memerlukan pengubahsuaian sistem binaan kompleks Microsoft. Pembangun akhirnya memilih untuk tidak melaksanakannya, bimbang dengan risiko merosakkan binaan malam yang bergantung kepada ratusan rakan sekerja.
Penyelesaian Preprocessor Raymond Chen:
- Jalankan preprocessor C pada fail
.mc
sebelum kompilasi - Membenarkan fail mesej merujuk pemalar C++ secara langsung
- Memerlukan pengubahsuaian konfigurasi sistem pembinaan
- Risiko merosakkan pembinaan malam untuk keseluruhan pasukan pembangunan
Reaksi Komuniti Menonjolkan Isu Yang Lebih Luas
Kisah ini bergema dengan pembangun yang melihatnya sebagai lambang masalah yang lebih besar dengan amalan pembangunan Microsoft. Sesetengah ahli komuniti menyatakan bahawa ekosistem lain seperti gettext telah lama menyokong pemformatan mesej dinamik, mempersoalkan mengapa Microsoft kekurangan keupayaan serupa untuk produk utama mereka.
Cara Microsoft adalah melakukan perkara secara terbalik, menjadikan yang mungkin mustahil, dan membungkus API mudah yang difahami dengan 16 lapisan abstraksi dengan nama yang mengerikan.
Yang lain menunjukkan bahawa API ShowError()
itu sendiri terhad, hanya menerima ID sumber dan bukannya rentetan format yang boleh memasukkan nilai dinamik. Pilihan seni bina ini memaksa pembangun kepada penyelesaian sementara yang sepatutnya tidak diperlukan.
Perspektif Moden tentang Alat Warisan
Enam belas tahun kemudian, pembangun merenung bahawa penyelesaian preprocessor Raymond Chen masih terasa tidak dijangka dan tidak jelas. Ini menunjukkan masalahnya bukanlah kekurangan pengetahuan pembangun, tetapi jurang dalam ekosistem alat dalaman Microsoft.
Perbincangan mendedahkan bagaimana walaupun di Microsoft, bekerja pada Windows itu sendiri, pembangun kadangkala kekurangan cara standard untuk mencapai tugas asas. Ketakutan merosakkan sistem binaan kompleks boleh melumpuhkan kemajuan pada penambahbaikan yang kelihatan mudah.
Kisah ini berfungsi sebagai peringatan bahawa walaupun syarikat teknologi besar boleh mempunyai alat dalaman yang mewujudkan geseran yang tidak perlu untuk pembangun mereka sendiri, berpotensi memberi kesan kepada kualiti produk yang bergantung kepada jutaan pengguna.
Rujukan: I Once Appeared in The Old New Thing