Menulis kode HasFlag yang mudah dibaca di C# dengan overhead runtime minimal
(github.com/KBluePurple)Latar belakang pengembangan
Ini adalah paket yang dibuat agar saat mengembangkan game Unity atau menggunakan C#, pembuatan garbage akibat boxing ketika memakai Enum.HasFlag bawaan bisa dicegah dengan mudah!
Cara kerja
Dengan menggunakan Source Generator, pada waktu kompilasi paket ini mencari deklarasi enum yang memiliki [Flags] di dalam kode, lalu secara otomatis menghasilkan extension method HasFlagNonAlloc kustom.
Fitur
Anda bisa menulis kode HasFlag yang tetap mudah dibaca dengan overhead runtime yang nyaris nol!
var currentState = PlayerState.Idle | PlayerState.Walking;
// HasFlag lama (terjadi boxing)
if (currentState.HasFlag(PlayerState.Idle))
{
// ...
}
// Implementasi pengecekan HasFlag yang menghindari boxing
if ((currentState & PlayerState.Idle) == PlayerState.Idle)
{
// ...
}
// Setelah memasang NonAllocFlagGenerator
if (currentState.HasFlagNonAlloc(PlayerState.Idle))
{
// ...
}
Ini adalah proyek open source pertama saya yang dibuat dengan cukup serius, jadi masih banyak kekurangannya, tetapi saya memberanikan diri untuk membagikannya!
Semoga ini bisa membantu saat Anda menulis kode yang sensitif terhadap performa.
Masukan dan umpan balik sangat saya sambut!
Belum ada komentar.