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.
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.
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.
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.
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."
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
YORUMLAR
Aktif etkinlik bulunmamaktadır.
- Dünyanın En Görkemli 10 Güneş Tarlası
- Dünyanın En Büyük 10 Makinesi
- 2020’nin En İyi 10 Kişisel Robotu
- Programlamaya Erken Yaşta Başlayan 7 Ünlü Bilgisayar Programcısı
- Üretimin Geleceğinde Etkili Olacak 10 Beceri
- Olağan Üstü Tasarıma Sahip 5 Köprü
- Dünyanın En İyi Bilim ve Teknoloji Müzeleri
- En İyi 5 Tıbbi Robot
- Dünyanın En Zengin 10 Mühendisi
- Üretim için 6 Fabrikasyon İşlemi
- DrivePro Yaşam Döngüsü Hizmetleri
- Batarya Testinin Temelleri
- Enerji Yönetiminde Ölçümün Rolü: Verimliliğe Giden Yol
- HVAC Sistemlerinde Kullanılan EC Fan, Sürücü ve EC+ Fan Teknolojisi
- Su İşleme, Dağıtım ve Atık Su Yönetim Tesislerinde Sürücü Kullanımı
- Röle ve Trafo Merkezi Testlerinin Temelleri | Webinar
- Chint Elektrik Temel DIN Ray Ürünleri Tanıtımı
- Sigma Termik Manyetik Şalterler ile Elektrik Devrelerinde Koruma
- Elektrik Panoları ve Üretim Teknikleri
- Teknik Servis | Megger Türkiye
ANKET