Plazma sayı 5, sayfa 57
Sayfanın metni

Sayfa 57

üzerine pişmişinden OOP kes, az da MVC döküver..."

Cem (Spaztica) Gencer

Beşiktaş'ta sabit pazarın yanında, üst geçidin altında yer alan ve yakın zamanda kapanan Bolu Et Lokantası'nı düşünürken attığım bu başlık, aslında tüm yazının içeriğini anlatıyor -ya da benim acıkmaya başladığımı... FutureWave Software (1993) olarak başlayan, kısa sürede (1996) MacroMedia tarafından satın alınan sonra da -hala yabancılığını çeksek de- Adobe'un gücünden beslenmeye başlayan bu platform, ağır gelişim evresini aşarak yapısının giderek kurallara bağlı hale gelmesi ve OOP gibi çağdaş bir şekle girmesiyle sağlıklı hale geldi.

Uzun süredir Flash'a göz ucuyla bakıp çeşitli denemelerinizde performansı düşük olduğu için burun kıvırıyorduk. AS2 ve öncesinde kullanıcılar için düşünülmüş esneklikler, hantallaşmaya sebep oluyordu. Kurallara ve OOP ilkelerine daha bağlı hale gelen ActionScript 3 ile artık daha erişkin bir dil / platformdan söz etmek mümkün. Yeni duyulmaya başlayan Flash 10 (Astro) dedikodularından da Flash'ın konumlanmasının radikal olarak değişeceği; erişimine, 3D rotasyona ve IK (bones) ile daha pratik animasyonlar oluşturulabileceğini geçenlerde bir blogda okudum. Yani Adobe, Flash ekibinin oluşturduğu ivmeyi, sağladığı kaynaklarla da daha da artırdı. Önümüzdeki versiyonlarda bizi neyin beklediğini kestirebilmek giderek zorlaşacak. Flex ve Air gibi yan teknolojilerle, Spry ve yakında alınacağını duyduğum AMFPHP gibi destekleyici framework'lerle Flash'ın gücü gerçekten katlanacağa benziyor. Karşı cephede MacroFos'un oluşturmaya çalıştığı SilverLight gibi bir ürünün zamanın getirdiği bu deneyimle baş etmesi ve sağlıklı bir yer edinmesi zor olacağa benzer. Kurumsal müşteriler, elbette her zaman uyuşturucu bağımlısı gibi kendi torbacılarından beslenmek isteyeceklerdir. Neticede bir torbacı da olsa, müşterisini kaybetmek istemez.

Bu yazıda OOP ilkelerinin ve MVC'nin AS3 üzerinde nasıl uygulanabildiğini göstermeye çalışacağım. AS2'den AS3'e geçmek isteyenler de buradaki temel prensiplere sadık kalırlarsa sorunları azalacaktır. Bu temeller olmadan önümüzdeki sayılarda ele alacağım konuları kavramak zor olurdu. Görsel efekt ve benzeri demo kültürünü ilgilendiren konular ağırlıklı ilgi alanımız olacak; basit bannerlar yapmak ya da dinamik içerik sunmak gibi konularda web üzerinde yazılmış tonla kaynak zaten mevcut.

Yazılarım, terminoloji açısından klasik bilişim çevirilerinden biraz farklı olabilir. Object Oriented Programming tanımlamasını herkesin kabul ettiği gibi nesne yönelimli diye çeviremiyorum; bunun önemli sebebi pratiklik. İngilizce terminoloji halinden fazla uzaklaşmazsak, başka bir yerde object olarak okuduğunuz bir tanımlamanın nesne olup olmadığını düşünmezsiniz. Bunun gibi bazı terimleri İngilizce bırakmak okunurluğu rahatlatan, uygulama açısından da pratik olacak bir tercih.

Kontrol Etmek, Kontrol Edilmektir...

Bir Zen ustası kontrolü reddeder. Kontrol etmeye çalıştığınız sürece kontrol sizi kendisine bağlı kılar. Kodunuzu tek bir yerde toplamak, kontrolü elinizde tutmak gibidir. O güç asla sizde olmayacaktır, asla kontrolü elinizde tutamazsınız, tuttuğunuzu düşündüğünüzde aslında siz kontrol altında tutuluyor olursunuz. Kontrol de asla ulaşılamayan gereksiz bir amaç olur. Budistlerin Samsara olarak adlandırdığı ve farkındalıkla kurtulmaya çalıştıkları sonsuz döngü ancak farkındalık ve dışında durmayı tercih etmekle kırılabilir; aynı şekilde kontrol döngüsü de.

Düz akışlı ve fonksiyon bazlı kodlamada alıştığımız her şeyi bir dosyada, bir listede toplamak, aşırı kontrolün sonucu; yazdığımız programa ait her parçanın elimizin altında olmasını isteriz. OOP'un oluşmasıyla, her oluşturulan objeyi bir yaşam biçim olarak görebiliriz. Bu objelere verdiğiniz görevlere, yapacaklarına güvenmeniz, işleri bu şekilde bölüştürüp delege etmeniz, vaktinizi artıracak, karışıklığı ise azaltacak bir yol.

Yazdığınız kod parçalarını amaçlarına göre düzenleyin ve her bir metodu, gerçek amaçları için kullanarak kendinizi özgür bırakın. Amaçları iç içe geçmiş kod yığınları sadece kodunuzu karıştırmaya ve sizi bug'larla uğraşmaya mahkum bırakır.

Hantallık ya da Aşırı Esneklik...

ActionScript'in önemli bir yavaşlatıcı unsuru, esnek model idi. Bunun sayesinde programlama deneyimi fazla olmayan kişiler, rahatlıkla 3-4 satır ekleyerek pratik fonksiyonları gerçekleştirebiliyordu. En basitinden değişkenlerin tipinin tanımlanmamış olması, player'ın her türlü değişkeni kendi içinde inceleyerek uygun şekilde ele alması gibi bir yavaşlatıcı etkene sebep oluyordu. Bu yüzden AS3 kullanırken değişken tiplerini tanımlamak bir gereklilik oldu. Daha önceden kolaylık sağlayan Number tipi de int ve uint gibi iki gruba ayrıldı. Bu sayede int ile pozitif ve negatif değerleri, uint ile de sadece pozitif değerleri tanımlıyoruz.

Klavyeyle gezinmek için ← ve → tuşları.