PENOLAKAN: Ini adalah artikel pertama dalam seri yang akan menjelaskan tenun di .net. Artikel ini ditujukan bagi orang-orang yang tidak tahu tentang subjek ini dan ingin mulai mempelajari penenun, jadi silakan lewati jika Anda sudah mengetahui dasar-dasarnya (atau mungkin membacanya untuk mempelajari sesuatu yang baru). Jika bahasa Inggris bukan pilihan Anda, versi dalam bahasa Portugis tersedia di sini.

Artikel kedua dalam seri ini dapat ditemukan di sini

Pendahuluan 🎉

Saya memulai seri ini karena dua alasan utama: Pertama, karena menulis tentang subjek yang sedang saya pelajari membantu saya mempelajarinya dengan lebih baik. Kedua, yang mungkin merupakan alasan paling penting adalah karena hanya ada sedikit artikel tentang topik ini. Yang ada kurang begitu teliti dalam menjelaskan langkah-langkah yang diperlukan untuk memahami penenun secara utuh. Jadi di sinilah saya, mencoba mengisi kekosongan tersebut.

Entah Anda pernah mendengar tentang menenun sebelumnya atau tidak, artikel ini ditulis dengan asumsi bahwa Anda tidak tahu apa-apa tentangnya. Saya hanya meminta Anda untuk mengetahui beberapa C# dan bersedia mencoba hal baru. Di sini Anda akan mempelajari dasar-dasar cara menggunakan weavers, namun di akhir seri ini kita akan menulis weavers kita sendiri dan mengintip file .dll.

Menenun? 🤔

Tenun merupakan sebuah konsep yang cenderung membuat takut masyarakat. Ini adalah tindakan memanipulasi file .dll yang telah dikompilasi dan memasukkan instruksi tambahan ke dalamnya. Hal ini dapat digunakan, misalnya, untuk mengurangi jumlah boilerplate dalam basis kode Anda, dengan membuat tugas berulang dilakukan oleh komputer, bukan oleh manusia, yang pasti akan membuat kesalahan salin & tempel®.

Alasan menenun membuat takut orang adalah karena mengotak-atik .dll terasa seperti mengatakan 'Hei, saya tahu lebih banyak tentang IL daripada tim Roslyn', sebuah pernyataan yang hampir selalu diucapkan salah (Jon Skeet adalah salah satu pengecualian yang jelas). Saya memahami kekhawatiran ini (saya merasa seperti itu pada awalnya), namun meskipun pendekatannya terasa rapuh dan idenya sendiri mungkin terdengar berlebihan, kondisi peralatan penenun saat ini sangat bagus dan mudah digunakan sehingga Anda tidak akan menyesal. menggunakannya sebelumnya!

Hanya demi membuktikan komitmen saya kepada penenun, dalam 3 tahun terakhir saya tidak ingat pernah mengirimkan satu aplikasi pun yang tidak menggunakannya (yang saat ini saya kerjakan adalah aplikasi seluler Toggl, yang adalah OSS dan dapat ditemukan di sini). Weaver juga digunakan oleh Realm, database mobile first, untuk memasukkan panggilan asli ke kode C++ di setiap properti kelas yang diwarisi dari RealmObject.

Jadi, bagaimana cara memulainya‍? 🤓

Sejauh ini penggunaan yang paling umum adalah menghapus boilerplate INotifyPropertyChange. Saat mengimplementasikan antarmuka ini, Anda perlu memastikan bahwa setiap properti Anda:

  • Apakah beberapa perbandingan kesetaraan
  • Pengembalian awal jika nilainya tidak berubah
  • Tetapkan nilai bidang pendukung
  • Beritahukan bahwa properti telah berubah

Ini berarti Anda tidak dapat menggunakan properti otomatis, fitur C# yang menghilangkan kebutuhan untuk mengelola bidang pendukung, dan properti Anda akan terlihat seperti ini:

11 Baris kode untuk setiap properti? Tidak🙅

Menenun untuk menyelamatkan ⛑

Jadi kami mengidentifikasi tugas yang berulang dan membosankan. Kodenya hampir sama dan kita akan lebih sering menyalin/menempelkannya. Apa yang harus kita lakukan selanjutnya? Gunakan penenun!

Untuk itu, kami akan menggunakan Fody. Ini adalah alat yang melakukan semua pemipaan yang dibutuhkan selama fase pembangunan sehingga kita tidak perlu berurusan dengan MSBuild sendiri. Ingatkah saat saya mengatakan bahwa menenun itu sederhana? Itu karena Fody mendukungmu.

Namun, Fody sendiri tidak melakukan apa pun. Ini hanya menyediakan sarana bagi kita untuk menggunakan add-in. Nanti di seri ini kita akan melihat bagaimana kita bisa membuat add-in kita sendiri, tapi untuk saat ini kita akan puas dengan menggunakan plugin PropertyChanged yang sudah teruji dan banyak digunakan.

Karena Fody menggunakan MSBuild, Fody berfungsi di Visual Studio untuk Windows dan Mac. Yang perlu Anda lakukan hanyalah menginstal paket NuGet PropertyChanged.Fody. Ini akan menambahkan paket Fody sebagai ketergantungan dan juga menambahkan file FodyWeavers.xml ke proyek Anda. Buka file ini dan pastikan berisi nama plugin yang ingin Anda gunakan, seperti ini:

Dan voila! Anda cukup menginstal paket NuGet dan memverifikasi bahwa file XML memiliki Word di dalamnya dan, sebagai imbalannya, ViewModel 11-loc-per-property Anda sekarang terlihat seperti ini:

Cukup rapi, ya?

Kelihatannya bagus, tapi apakah berhasil? 🙄

Seperti yang dinyatakan sebelumnya, menenun adalah teknik yang banyak digunakan di kalangan pengembang .NET. Paket PropertyChanged memiliki hampir setengah juta unduhan dan Realm (yang juga mengandalkan Fody) memiliki hampir 100 ribu unduhan.

Jika statistik penggunaan dan perusahaan yang menggunakan Fody tidak cukup untuk mengubah skeptisisme Anda terhadap tenun, pantau terus dua artikel berikutnya, di mana kita akan mempelajari lebih dalam tentang seperti apa CIL dan bagaimana Anda juga dapat memanipulasi dll yang dikompilasi untuk melakukan apa yang Anda inginkan.

Sementara itu, jelajahi sendiri Fody! Instal PropertyChanged.Fody dalam proyek uji, baca dokumennya, periksa plugin lain dan jangan ragu untuk menghubungi saya di twitter jika Anda memerlukan bantuan apa pun!