Kuralları yeniden yazmak yerine bir çözücü ödünç almak
Bir demo bir ürünün mantığına ihtiyaç duyduğunda, gerçek kodu içeri almak onun basitleştirilmiş bir sürümünü yeniden yazmaktan daha mı güvenli?
·
Bir tarayıcı demosu normalde ürünün yalnızca doğru görünmeye yetecek kadarını yeniden uygular. Ürünün ilginç kısmı anlatması kolay, doğru yapması zor bir kural olana kadar bu sorun değildir — o noktada yeniden yazım, reklamı yapılan şeyin sessizce daha kötü bir sürümünü gönderir.
Glow Garden tam olarak bu durum. Kuralı bir bulmaca klişesi gibi okunuyor: her satırda, her sütunda, her renkli bölgede bir ateşböceği, hiçbiri birbirine değmeyecek. Ama oyun yerleştirmeleri bu kurallara karşı denetlemiyor. Bir çözücüye tahtanın hâlâ tamamlanabilir olup olmadığını soruyor ve olamıyorsa dokunuşu reddediyor. Bu, bir yerleştirmenin tek başına geçerli olup yine de reddedilebileceği anlamına geliyor; oyunu keyfî değil adil hissettiren de bu ve yeniden yazımın düzleyeceği incelik tam olarak bu.
Bu yüzden yeniden yazmak yerine kural çekirdeği uygulamadan değiştirilmeden kopyalandı, karması kaydedildi ve önüne tipli bir sınır konuldu; böylece özgün kod bir gün saparsa derleme patlıyor. Aynı yaklaşım sonra Veyra’nın şablon fonksiyonu için de işe yaradı.
Ne öğrendik
Şimdiye kadarki bulgular.
- 01
Kopyalanmaya değer kısım nadiren karmaşık görünen kısımdır. Makul görünen bir yeniden uygulamanın incelikle yanlış olacağı ve kimsenin fark etmeyeceği kısımdır.
- 02
İçeri almak sadece bir kopya değil, bir sınır gerektirir. Ödünç alınan kodun önündeki elle yazılmış tipli yüzey, “saptı”yı sessiz bir davranış değişikliğinden düşen bir derlemeye çeviren şeydir.
- 03
Yalnızca mantık zaten saf olduğunda işe yarar. Temiz şekilde nakledilen iki parçanın da hiçbir içe aktarması ve altında hiçbir çatı yoktu; bu, sonradan dilemekle değil, baştan öyle yazmakla elde edilen bir özellik.
- 04
Sabit bir tahta yine de gerçek üreticinin garantisine ihtiyaç duyar. Demo tahtası elle çizilip umut edilmek yerine, uygulamanın kendi çözücüsüyle tam olarak tek çözümü olan biri çıkana kadar arandı.
Çalışırken gör
Kural denetimi Glow Garden’ın kendi kodu; değiştirilmeden alındı ve tahtayı çözümsüz bırakacak her yerleştirmeyi reddeden çözücü de dahil. Tahta üretilmiyor, sabit: tam olarak tek çözümü olan biri çıkana kadar aynı çözücüyle arandı.