elektrik port üyelik servisleri elektrik port üyelik servisleri

Spagetti Kod Nedir?

Spagetti dendiğinde hemen hemen herkesin aklında üzerinde güzel soslanmış baharatları ile burnunuza ve gözünüze hitap eden ve afiyetle yediğimiz yemek olarak canlanır fakat tabi ki biz yemek olarak size yazımızı sunmayacağız. Yazımızda Spagetti Kod (Spaghetti Code) tabiri ile bilinen kodları anlatacağız.



A- A+
17.09.2014 tarihli yazı 14789 kez okunmuştur.

Spagetti Kod Ne Anlama Gelir ?


Bilgisayar kodlamasında,  bir kodun okunabilirliğinin az olması,  karmaşık, düzensiz, kuralsız,  anlaması zor,  anlatması daha zor olan yazıma kodlamaya verilen isimdir.

Resimde de görüldüğü üzere spagetti birbiri içine girmiş, iyice karışmış parçalardan oluşuyor. Üstüne de yemeği tadanların beğenmesi için güzelce sos eklenmiş yemek olarak lezzetli olsa da aynı durum kod için geçerli olduğunda yazılımcı için pek de lezzet vermese gerek. En ufak bir şeyi değiştirmek, düzeltmek, onarmak istediğinizde birbiri içine geçmiş parçalar arasından istediğinizi yapmak oldukça zor oluyor. Bu sorunla muhakkak siz de karşılaşmışsınızdır.

                       
Şekil 1: Çabuk programlamalarda sıkça görülen düzensiz kodlama yapısına spagetti kod denmektedir.


Genellikle Nesneye Dayalı Programlama olmayan yapılardır. Tüm işlemler bir kod sayfasında yapılmaktadır. Kodlarımızda bir  GOTO JMP veya label olması, yazılımımızın Spagetti kod olarak nitelendirmeye sebep olmaktadır. Belirli bir formata göre yazılmaması da bloklar halinde girdilerin ve çıkışların ayrılmaması da kötü kodlama yaptığımız anlamına gelmektedir. Nesneye dayalı olmayan programlama dillerinin hepsinde yazılan kodlar Spagetti kod’dur. Spagetti kod’a yapısal olmayan programlama da diyebiliriz.
 

► İlginizi Çekebilir: MikroC ile C Programlama Dersleri Bölüm 1


Spagetti Kod Nasıl Engellenir?

 

1.     Kodda bulunan ve koşula bağlanması istenen satırlar için if bloğu kullanılmalıdır.

2.     Kodda bulunan ve tekrarlanması istenen satırlar için döngü kullanılır.

3.     Kodda bulunan ve parametrize edilmesi istenen satırlar için (aynı satırların farklı değerlerle çalışması isteniyorsa) fonksiyon kullanılır.

Bu hususları yerine getirdikten sonra  kodda herhangi bir GOTO satırı kalmamalıdır.
 
Spagetti kod yazılımcılar için hoşnutluk sağlamayabilir. Hem kendinden sonraki yazılımcıya hem de ileride kod üzerine geliştirmek için çalışırken kendisine eziyet yapmak istemez kimse. Yazılım kalitesi ve standardını yakalamak ve uygulamak için yapılan bu adımlar düzgün okuma, düzgün çalıştırma felsefesine dayanır. Eğer bir şirkette iseniz ekibinizin veya proje yöneticisinin belirlediği ve üzerinde anlaştığınız bir yapı olmalıdır.

Peki Spagetti kodu ne kadar karmaşık olabilir? Hemen size C dilinde geliştirilen yazılımların yarıştığı bir yarışma olan Obfuscated C Code Contest’ten bahsedeyim.


Şekil 2: C CODE CONTEST yarışmasından spagetti koduyla insan silüeti.
 


Obfuscated C Code Contest Yarışması Nedir?

 
Obfuscated C Code Contest yarışması IOCCC önderliğinde ortaya Landon Curt Noll ve Lary Bassel tarafından başlatılmış. C dilinde bilgi birikimin yüksek seviyede olan yazılımcıların katıldığı yarışmadır.

1984 yılında başlayan, bir dönem ara vermiş ardından devam eden bu yarışmanın amacı çok ilgi çekici katılan yazılımcıların hedefi ufak ve anlaşılmaz “anlamlı” programlar yazmak. Bu yarışmanın elbette bir takım kuralları var ve bu kurallar her sene değişmektedir. Şaşırtıcı ve ilgi çekici olan bu kodlar ilk başta ne olduğu, ne hakkında yazıldığını anlamak oldukça zor olurken, derledikten sonra ortaya çıkan sonuçlar ise heyecan verici düzeyde olmaktadır. Yarışmanın genel kuralı programı programın içinde saklamak ve anlamsız söz dizimi ise en belirgin kural olarak gösterilebilir. Bu yarışmaya katılanlar büyük ihtimalle deha yolunda ilerlemektedirler hem sanat, hemde bilgi ve tecrübenin üst seviyede olduğu kod bloklarından rahatlıkça anlaşılmaktadır.


Şekil 3: Anlamsız kod yazım yarışından örnekler.


Şekil 4: Yarışmadan ödül almış örnek anlamsız kod.

Düzgün bir yazılım, kod geliştirmek resimdeki gibi olmalıdır. Parçalar birbirinden düzgün olarak ayrılmış ama birbiri ile az da olsa temas içinde. Neyin nerede olduğu bellidir. Yeni özellik eklemesi, değiştirmesi, tekrar kullanılabilmesi daha kolaydır.


Şekil 5: Düzgün kod anlamlı ve bütün olmalıdır.


Yazılım geliştirme oldukça ciddi bir iş olduğundan dolayı oldukça dikkatli olunmalıdır. Facebook’un 2007 yılında kullanılan kaynak kodlarının yayınladığı haberlerini görmüşsünüzdür. Kaynak kodları usta bir şekilde yazılmadığı çok açık ortadadır. Spagetti Kodlamaya güncel bir örnek olarak rahatlıkla gösterilebilir.

Bir zamanlar Stephen Walter'ın dediği gibi:

"Good software is software that works as you intended and that is easy to change." 

"İyi yazılım istenildiği gibi çalışan ve kolay değişebilen yazılımdır. İyi yazılım iyi kodlardan oluşur."

Kaynak:

► Wikipedia

Safa BİLGİNER Safa BİLGİNER Yazar Hakkında Tüm yazıları Mesaj gönder Yazdır



Aktif etkinlik bulunmamaktadır.
ANKET
Endüstri 4.0 için En Hazır Sektör Hangisidir

Sonuçlar