Çok eski bir web tarayıcısı kullanıyorsunuz. Bu veya diğer siteleri görüntülemekte sorunlar yaşayabilirsiniz.. Tarayıcınızı güncellemeli veya alternatif bir tarayıcı kullanmalısınız.
:mmotutkunlari-logo:
Bu başlık altında konu dışına çıkmadan, YMIR’in yaklaşık 20 yıl önce yazdığı ve günümüz standartlarına göre oldukça problemli olan kod bloklarını refaktör edip, ortaya çıkan sonuçları birbirimizle paylaşalım.
YMIR bu oyunu geliştirmeye başladığında, Visual Studio’da bugün...
(DirectX8 içindir, DirectX9 için uygulamak isterseniz kendiniz uyarlamalısınız)
Yeni Bölüm: GrpDetector / GrpDevice – Legacy D3D8 cihaz ve mod tespit kodunun sadeleştirilmesi
Bunu yapmadan önce şu konulardaki değişiklikleri yapın, yoksa bazı fonksiyon çağrılarımız uyuşmayabilir. Ben bu iki...
Yeni bölümü ayrı konu olarak açtım
https://www.mmotutkunlari.com/konu/c-metin2-client-window-centering-bug-win10-11-%E2%80%93-ger%C3%A7ek-sebep-ve-kal%C4%B1c%C4%B1-%C3%87%C3%B6z%C3%BCm.24536/
Bu bölümde basit bir iş yapacağız.
C++11 öncesi yazılan bu oyunda auto makrosu olmadığı için kendilerince itertype diye bir makro yazmışlar. Ancak bu makro SonarQube gibi statik kod analiz araçlarının kafasını karıştırıyor ve araçlar öneri sunamıyor. Bunu standart C++'nın auto makrosuyla...
Ben aslında onu "Metin2 için bu kadar da kasmaya gerek var mı?" Kafasıyla yazmıştım. Ama haklısınız, nihai kod kalitesi perspektifinden bakınca exception safety önemli bir konu. Eve gidince sağladığınız düzenlemeyi ekleyeceğim.
Metin2'nin neresi exception-safe ki? Bir de Set_Proto_Mob_Table zaten bool döndürüyor. Sizin verdiğiniz kod server ve Dump Proto parsing için over-engineering değil mi? Yanlış mı düşünüyorum?
assign(count, value) de fill gibi count kez copy assignment yapar; bu yüzden bilinçli olarak kullanılmadı. az önce eleştirilen fill yaklaşımının aynısı bu.
bu son yaptığım reserve + emplace_back en doğru yaklaşım olsa gerek
Haklısın, resize + index üzerinden doldurma yaklaşımı çalışıyor ama gereksiz default ctor çağrılarına yol açıyor ve uzun vadede ölçeklenebilir değil. Bu yüzden düzgün bir refactor için clear + reserve + emplace_back modeline geçmek daha doğru.
Şöyle yaptım:
/* - [4] Allocate target vector...
Konuyu tam olarak bunun için yoruma açık tutuyorum, katkınız için teşekkür ederim.
Başlığa C++26 yazmamın sebebi en azından C++26 ile derlenebilir kod almak ve daha modern yaklaşımları teşvik etmek. Yoksa evet bu özellikler C++20 ile geldi.
UB kokusu var dediğiniz yerde hakkınız var, ancak...
Aşağıdaki @Larry Watterson üyemizle yaptığımız tartışmalar neticesi daha da iyileştirildi ve güncellendi! Kendisine teşekkür etmek istiyorum.
Bu bölümde
https://www.mmotutkunlari.com/konu/db_name_column-sistemi-kald%C4%B1rma-detayl%C4%B1-rehber.24442/
Bu konudaki sadeleştirmenin üzerine
[1]...
Ben başlayayım o halde;
void CHARACTER::ItemDropPenalty(LPCHARACTER pkKiller)
Fonksiyonu içinde bu kod bloğu:
int iAlignIndex;
if (GetRealAlignment() >= 120000)
{
iAlignIndex = 0;
}
else if (GetRealAlignment() >= 80000)
{
iAlignIndex = 1;
}
else...