Bilgisayar Bilimleri

Kodlama & Programlama Standartları Nelerdir?

Başarılı ve iyi programın özellikleri nelerdir ve nasıl olmalıdır? Sizce bizi baştan çıkaran, bağımlılık yaratan programların buluştukları ortak bir payda, ortak özellikleri var mıdır? Programlama öğrenmek isteyen veyahut öğrenen kişilerin mutlaka sorgulaması gereken bir konudur başarılı ve iyi program nitelikleri… Evet, başarılı yazılımlarda, insanların çoğunu kendi içine çekmeyi başaran kimi ortak özellikler vardır. Gelin bunlara göz atalım.

Programlama Standartları Nelerdir?

1- Güncel Hayattan Sorunları Çözmek

Programlama ve yazılım yapmaktaki temel amaç bir takım sorunları çözerek hayatı kolaylaştırmaktır. Zira insanlara güzel bir vaad sunamayan programlar pek fazla kullanılmadıkları için zamanla unutuluyorlar.

Örnek: Bilgisayar oyunlarının çılgınlar gibi oynanmasının ve sosyal medya uygulamalarının bu kadar çok kullanılmamasının sebebi, bu uygulamaların insanların boş vakitlerini en kolay yoldan doldurmalarını sağlamalarıdır. Hatta bu durum o kadar etkilidir ki, zamanla pek çok kişinin teknoloji ve sosyal medya bağımlılığı yaşamasına sebep olur.

2- Hızlı ve Performans Odaklı Çalışmak

Bir özelliği defalarca kez, gerektiği her yerde tekrar tekrar tanımlamak saçma olur değil mi?
a) O programı yazan ellerimize yazık, gereksiz yere yoruluyorlar.
b) O kodları okuyan bilgisayara yazık, aynı işi tekrar tekrar yapıyorlar. (Evet, bilgisayarın ömründen yer bu durum)
c) Bilgisayar tekrarlar ile oyalanırken onu bekleyen ve psikolojik olarak gerilen kullanıcıya da yazık.
d) Yani herkese yazık 😀

Neden Programlarımızı Temiz Şekilde Kodlamalıyız
Neden Programlarımızı Temiz Şekilde Kodlamalıyız?
Temiz Kodlanmış Programlar Yüksek Verimlilik Oranına Sahiptir
Temiz Kodlanmış Programlar Yüksek Verimlilik Oranına Sahiptir

Bunun yerine baştan fonksiyonu tanımlayıp, gerektiği yerlerde o fonksiyonu çağırmak ciddi bir şekilde sizi de, bilgisayarı da, program kullanıcısını da yükten kurtaracaktır. Google da nasılsa bir çeşit başarılı yazılım değil mi? Bunun en somut kanıtı ise şuan kullanıcıların neredeyse tamamı tarafından tercih ediliyor olmasıdır.

Mesela yavaş çalışan programların veyahut geç açılan internet sitelerinin ne kadar can sıkıcı olduğu hepimizin malumudur. İşte can sıkan bu yavaşlığın olası dört sebebi vardır:
• Teknik olarak yetersiz alt yapı
• Yüksek algoritma kompleksliği
• Gereksiz büyük kod boyutu
• Temiz kodlama yapılmamış olması

Her ne kadar üstte açıklamış olsak da, direkt yazının burasını okuyan birisi vardır diye tekrardan açıklayalım. CSS ve JavaScript dosyaları kod satırlarıdır. Bir çok kodda olduğu gibi; bunların arasında da dosya boyutunu şişiren, dosyanın okunma süresini uzatan boşluklar ve yorum satırları bulunmaktadır.

İşte bu yorum satırlarını ve boşlukları kaldırarak bu dosyaların boyutlarını küçültebiliriz. Aynı zamanda bunları sıraya sokup, derleyip, sıkıştırarak daha da etkili bir işlem yapabiliriz. Örneğin aşağıda yorum satırlarını, boşluk (” “) karakterlerini ve alt satıra geçme (“\n”) karakterleri kod boyutunu küçültmek için kaldırılmıştır:

Minify İşlemi İle Dosya Boyutu Nasıl Küçültülür?
Minify İşlemi İle Dosya Boyutu Nasıl Küçültülür?

➽ Esneklik (Flexibity): Programlama dilinin kullanıcıya sunduğu özgürlük miktarına verilen isimdir.
➽ Verimlilik (Efficiency): Programlama dilinde az kodla fazla iş yapabilmeye ve dilin fonksiyonelliğine verilen isimdir.

3- Anlaşılır Kodlama ve Mimari Kullanmak

4- Kullanıcı Deneyimine Önem Vermek

İyi program para kazanma odaklı saniye başı açılan reklamlar içermez. Biz size demiyoruz ki yaptığınız iyi program ve yazılımlar üzerinden para kazanmayın. Elbette kazanacaksınız, işiniz bu zira ama reklamlar, tanıtımlar, görseller arasında boğulan kullanıcı o programı tercih etmez. Sonuçta yine zarara uğrayan taraf siz olursunuz, bizden uyarması. Tabi şu fotoğraftaki gibi ince düşünmeniz gereken noktalar da olacak:

İyi program ince düşünme ve bunu uygulama yeteneği gerektirir
İyi program ince düşünme ve bunu uygulama yeteneği gerektirir

Nasılsa gerek tasarımda, gerek (özellikle) kodlama esnasında her türlü durumu düşünmek zorundasınız. Ne siz, ne de kullanıcı hata almamalı. Bunun için bolca test yapmalısınız. Başarılı program göz yoran bir tasarım içermez. Başlıkta dediğimiz gibi kullanıcı odaklıdır. (User experience = UX tasarım) Biz demiyoruz ki renkli, albenisi yüksek bir tasarım yapmayın. Elbette yapın, hatta öyle bir yapın ki akıllarda her daim kalıcı olsun. 5 hatta 10 yıl sonra insanlar eskiden yaptığınız tasarımı çağrıştıracak bir şeyi gördüğünde “Ha şöyle bir efsane program vardı eskiden, hatırlıyor musun birader” desinler.

Hafızalarda Kalmaya Güzel Bir Örnek

2000’li yılların başında, bilgisayarlar (daha doğrusu İnternet kafeler) yaygınlaşmaya başladığında ilk başlarda MSN sayesinde insanlar çok daha kolay iletişim kurar olmuşlardı. Bugün sosyal medyada eski zamanlar çok güzeldi ya konulu gönderilerde MSN uygulamasından bu sebeple sürekli bahsedilir. Zira iyi program niteliklerinin çoğuna sahiptir:

-Hem bir sorunu çözmüştür,
-Hem kodlaması / tasarımı temizdir,
-Hem insanlarla duygusal bağ kurmuş ve bunun sonucunda hafızlara kazınmış ve hatırlanan bir efsane olmayı başarmıştır.

Tabi bunu başarmadan önce dökülen alın teri, verilen emek, gösterilen gayret ayrı bir konudur… Başarılı programın kodlarına bakarsanız bolca açıklama metni görürsünüz. (Hani kodların arasında bu kod şunun için diye açıklamalar daha doğrusu hatırlatma metinleri olur ya, onlardan) Zira programın yapımcısı ileride ortaya çıkan bir sorunu çözerken veya ekstra özellik eklerken hangi değişken ne içindi, başka türlü nereden hatırlayacak değil mi?

5- Eşsiz Tasarım ve Kodların Ritmik Dansı…

İyi program ve hafızlarda kalıcılık için sadece süper ötesi kodlama yeteneği veyahut eşsiz bir tasarım becerisi TEK BAŞINA yeterli midir? İyi program ne sadece frontend (tasarım) ne de sadece backend (kodlama) ile yapılır. İkisinin ritmik ahenkli uyumu esastır. Tasarımı inceleyen insan ne gereksiz detaylar arasında boğulmalı, ne de “Bu da çok sade be canım” demeli. Kişi istediğini fazla dolanmadan bulabilmeli ama aynı zamanda da bunu başarılı bulmalı.

İyi program iyi tasarım ve kodlama yeteneği gerektirir
İyi program iyi tasarım ve kodlama yeteneği gerektirir

İyi program ve yazılımda ise gereken kodlama niteliği ise şudur: işi en kısa yoldan en başarılı şekilde yapmalı.

Ayrıca yüz gülümseten ve “İyi ki bu ürünü tercih etmişim” dedirtecek cinsten özellik ve sürprizleri de olmalı.

6- Özgünlük ve Markalaşma Her Şeydir

Üniversitelerde bilgisayar mühendisliği veya yazılım mühendisliği bölümünde ilk öğretilen şeylerden birisidir bu.

Kod hırsızlığı yapmadan, tamamen özgün bir şekilde yapılan program iyi program niteliklerini taşır. Tabi bu demek değildir ki, kod hatası ayıklarken veya tıkandığınız yerde bir yardım almayacaksınız.

Hele hele çizginizi bozmadan, kaliteyi bırakın düşürmeyi, bırakın yerinde tutmayı, bir de yükseltirseniz, hele hele bir de markalaşıp bilinirliği arttırır iseniz orta vadede sizden kralı olmaz.

Markalaşma Doğrudan Yüksek Katma Değer Oluşturan Unsurlar Arasındadır
Markalaşma Doğrudan Yüksek Katma Değer Oluşturan Unsurlar Arasındadır

7- Programlama Standartları Konusunda Öğrendiklerimizi Test Edelim

.#. Programlama standartları konulu bu içerik boyunca anlatılanları bu bölümde orijinal ve olabildiğince pratiğe yönelik farklı 15 soru ile pekiştirebilirsiniz.

Soru-1: Aşağıdakilerden hangisi programlama standartlarına uygun programlar üretmenin sağladığı avantajlardan birisi değildir?
A) Program kodlarına bakıldığında anlaması daha kolay olur.
B) İleri dönemlerde programı güncellemesi daha kolay olur.
C) Programın en yüksek verimle çalışması sağlanır.
D) Kullanıcılara daha iyi bir deneyim sunulması sağlanır.
E) İnsanları üretilen programa bağımlı hale getirir.

💡 Çözüm: Kodlama standartlarına uyulduğunda kodların anlaşılırlığı artar ve bu sebepten ötürü programı güncellemesi de daha kolay olur. Temiz kodlama ile yüksek performans ve verim sağlanır. Yüksek performans ve uygun tasarım sonucu da iyi bir kullanıcı deneyimi sunulur. Yani yanıt E şıkkıdır.

Soru-2: Aşağıdakilerden hangilerini değişken veya metot adı olarak kullanmak programlama standartlarına uygun olmaz?
A) müsteriAdı
B) sifre
C) toplamÜcret
D) kulKydt()
E) borcSil()

💡 Çözüm: kulKydt() metodunun ismi kısaltılmaya çalışırken yanlış anlaşılmalara müsait hale getirildiği için standartlara uygun değildir. Yani yanıt D şıkkıdır.

Soru-3: Programın olabildiğince gereksiz tekrarlardan, uzatmalardan kaçınılarak doğrudan performans temelli olarak kodlanmasına ne ad verilir?
A) Hızlı kodlama
B) Temiz kodlama
C) Performans kodlaması
D) Tekrarsız kodlama
E) Uzatmasız kodlama

💡 Çözüm: Soruda verilen tanım temiz kodlama ifadesinin tanımıdır.

Soru-4: Hız ve performans konusunda başarılı bir yazılıma ait özellikler hangi şıkta doğru şekilde sıralanmıştır?
A) Yüksek esneklik, yüksek verimlilik
B) Düşük esneklik, yüksek verimlilik
C) Yüksek esneklik, düşük verimlilik
D) Düşük esneklik, düşük verimlilik
E) Hiçbiri

💡 Çözüm: Esneklik programlama dilinin programcıya sunduğu özgürlüktür. Verimlilik ise programlama dilinde az kodla fazla iş yapabilmeye ve dilin fonksiyonelliğine verilen isimdir. Yani A şıkkında verilen ifade doğrudur.

Soru-5: Aşağıdakilerden hangisi temiz kodlama uygulamalarına uygun bir yöntem veya uygulama değildir?
A) Tekrar çağrılması gereken metotları ayrıca bir fonksiyon olarak yazıp, o fonksiyonu çağırarak kod uzunluğunu azaltmak
B) Kodları derlemeden önce sıkıştırmak ve yorum satırlarını kaldırmak suretiyle boyutlarını küçültmek (minify)
C) Programın kodlarının anlaşılırlığını bozmayacak şekilde olabildiğince kısa değişken adları kullanmak
D) Programın bozulmasını engellemek için hata yakalama bloklarını gerektiği durumlarda çekinmeden kullanmak
E) Şartlı ifadeler, döngüler, return komutları gibi uzun ifadeleri olabildiğince tek satıra indirgemeye çalışmak

💡 Çözüm: Hata yakalama blokları genellikle pahallı (fazla hafıza ve işlemci gücü gerektiren) işlemler oldukları için, ilk başta başka çözüm yolları aranmalı, en son çare hata yakalama blokları kullanılmalıdır. Yani yanıt D şıkkıdır.

Soru-6: Bir programlama dilinde matematik işlemleri için kullanılan Mat adında özel bir kod kütüphanesi olsun. Bunu kullanarak standart sapma yapmak için bu kütüphanenin hangi şekilde çağrılması kullanılmayan kod büyüklüğünü minimize eder?
A) import Mat
B) import Mat.Islem
C) import Mat.Islem.Veri
D) import Mat.Islem.Veri.standartSapma
E) Kütüphane import etmeden kendi fonksiyonunu yazmak

💡 Çözüm: Kütüphaneler genellikle bir işlemin en yüksek performans ile yapılmasını sağlayan metotları bünyelerinde bulundurdukları için kullanılırlar. Kullanılmayan kütüphanelerin çağrılması ise programın boyutunu gereksiz şekilde büyütür. Yani yanıt D şıkkıdır.

Soru-7: Aşağıdaki kod bloklarından hangisi temiz kod ilkesine en uygun şekilde kodlanmıştır? (Syntax’a değil, kod karmaşıklığına odaklanın!)

A) 
private List = [];
public function isEmpty(){
	return List.size() > 0;
}
B)
private List = [];
public function isEmpty(List liste){
	if List.size() > 0 {
		return false; }
	if List.size() == 0 {
		return true; }
}
C)
private List = [];
public function isEmpty(List liste){
	if List.size() > 0 {
		return false; }
	else if List.size() == 0 {
		return true; }
}

💡 Çözüm: Kodda şartlı ifadeler kullanılmaktan kaçınılmalı ve kullanılsa bile if if yerine else if kullanılmalıdır. Bu sebeple uygun sırası 1-3-2 şeklindedir. Yani yanıt a şıkkıdır.

Soru-8: Python programlama dilinde liste verileri depolamak için sıkça kullanılır. Kümeler ise duplikelerin olmadığı veri tipidir. Bu bilgiler ışığında, elinizdeki verideki duplikelerden kurtulup final veriyi listede depolamak için hangisini kullanmak daha mantıklı olur?
A) Listedeki duplikeleri yok eden bir fonksiyon yazmak
B) Listede duplike olan değerleri ayrı bir listede depolamak
C) Veriyi kümeden geçirmek
D) Listede duplike olan değerleri ayrı bir kümede depolamak
E) Verileri kümeden geçirip listeye eklemek

💡 Çözüm: Veriler kümeden geçirilirse otomatik bir şekilde hiçbir işleme uğramadan duplikelerden kurtulur. Ardından bu verileri tekrardan listeye ekleyerek denileni yapmış oluruz. Yani yanıt E şıkkıdır.

***
Yazının devamı güncellenecektir.
***

.min olarak adlandırma bahset, kriter dir boyutu küçültülen kodlar (kod boyutu küçültme link çık)

Mesela TC kimlik no, hesaplamada kullanmayacan. String kullan int yerine

iyi bir yazılımın özellikleri

Bugün Sıkça Tercih Edilen Programlarda Bu Özellikleri Görürüz
Bugün Sıkça Tercih Edilen Programlarda Bu Özellikleri Görürüz
Büyük Çaplı Projeleri Yazılım Kriterlerine Uygun Olarak Yapmak Sanıldığından Karmaşık ve Zor Bir İştir
Büyük Çaplı Projeleri Yazılım Kriterlerine Uygun Olarak Yapmak Sanıldığından Karmaşık ve Zor Bir İştir
Büyük ve Başarılı Projeler Çok Yönlü Oldukları İçin Ciddi Miktarda Kod İçerirler
Büyük ve Başarılı Projeler Çok Yönlü Oldukları İçin Ciddi Miktarda Kod İçerirler
// Standart Bir JavaScript Kodu
var array = [];
for (var i = 0; i < 20; i++) {
  array[i] = i;
}

// Sıkıştırılmış JavaScript Kodu
for(var a=[i=0];i<20;a[i]=i++);
İleriki Güncellemelerde Algoritma Kompleksliğinin Artmasını Önlemek İçin Anlaşılır ve Mantıklı Bir Kodlama Yapın
İleriki Güncellemelerde Algoritma Kompleksliğinin Artmasını Önlemek İçin Anlaşılır ve Mantıklı Bir Kodlama Yapın
Kodları Temiz Kod [Clean Code] İlkesine Uygun Hale Getirmek Hayati Derecede Önemlidir
Kodları Temiz Kod [Clean Code] İlkesine Uygun Hale Getirmek Hayati Derecede Önemlidir
Kodlarda Tek Bir Değişiklik Tüm Kodun Yapısını Bozabileceği İçin Sık Sık Kodların Yedeğini Alın
Kodlarda Tek Bir Değişiklik Tüm Kodun Yapısını Bozabileceği İçin Sık Sık Kodların Yedeğini Alın
Programlamada Yorum Satırlarının Çeşitli Kullanım İşlevleri Mevcuttur
Programlamada Yorum Satırlarının Çeşitli Kullanım İşlevleri Mevcuttur
Programlama Yaparken Saatlerce Sıkıntı Çekeceğinize Başkalarının Hazır Tecrübe ve Çözümlerinden Faydalanabilirsiniz
Programlama Yaparken Saatlerce Sıkıntı Çekeceğinize Başkalarının Hazır Tecrübe ve Çözümlerinden Faydalanabilirsiniz
Veri İle İlgili Programlarda Veriyi İşlemek Kadar Görselleştirmenin De Önemli Olduğunu Unutmayınız
Veri İle İlgili Programlarda Veriyi İşlemek Kadar Görselleştirmenin De Önemli Olduğunu Unutmayınız
Programlar Doğru Çalışsalar Bile Doğru Operatörleri Doğru Yerlerde Kullandığımızdan Emin Olmalıyız
Programlar Doğru Çalışsalar Bile Doğru Operatörleri Doğru Yerlerde Kullandığımızdan Emin Olmalıyız
Hileli Fonksiyonlar Kullanmak Programlama Standartlarına Aykırıdır
Hileli Fonksiyonlar Kullanmak Programlama Standartlarına Aykırıdır
Temiz Kodlama İle Aynı İşlemlerin Daha Verimli Bir Şekilde Yapılması Sağlanır
Temiz Kodlama İle Aynı İşlemlerin Daha Verimli Bir Şekilde Yapılması Sağlanır
Programlarınızda Yorum Satırları Kullanarak Olası Bir Karmaşıklığı Engelleyebilirsiniz
Programlarınızda Yorum Satırları Kullanarak Olası Bir Karmaşıklığı Engelleyebilirsiniz
Program Nasıl Yapılır? [Bakım ve Sürdürülebilirlik Örneği]
Program Nasıl Yapılır? [Bakım ve Sürdürülebilirlik Örneği]
Hafıza Kullanımı, İşlemci Kullanımı ve İşlem Hızı Hesaba Katılarak En Uygun Olan Veri Yapıları Kullanılmalıdır
Hafıza Kullanımı, İşlemci Kullanımı ve İşlem Hızı Hesaba Katılarak En Uygun Olan Veri Yapıları Kullanılmalıdır
Profesyonelce Hazırlanmış Fonksiyonlar İle Programınızı Geliştirebilirsiniz
Profesyonelce Hazırlanmış Fonksiyonlar İle Programınızı Geliştirebilirsiniz
Programlarınızda While Döngülerini Olası Tüm Durumlarda Bitirmeyi Unutmayın
Programlarınızda While Döngülerini Olası Tüm Durumlarda Bitirmeyi Unutmayın
Verimli Hafıza Kullanımı ve Maksimum Performans İçin Temiz Kodlama Yapın
Verimli Hafıza Kullanımı ve Maksimum Performans İçin Temiz Kodlama Yapın
Program ve Yazılım Geliştirme Süreci Nasıl İşler?
Program ve Yazılım Geliştirme Süreci Nasıl İşler?
Programlamada ve Yazılımda Önemli Kavramlar
Programlamada ve Yazılımda Önemli Kavramlar
Program ve Yazılım Geliştiricilerinin Destek Aldığı Platformlar
Program ve Yazılım Geliştiricilerinin Destek Aldığı Platformlar
Programlama ve Yazılım Sürecinde Şelale Modeli Sıkça Tercih Edilir
Orijinal Dosyaların Saklanıp Optimize Edilmiş Dosyaların Program Derlenirken Kullanılması Performans ve Verimlilik Sağlar
Orijinal Dosyaların Saklanıp Optimize Edilmiş Dosyaların Program Derlenirken Kullanılması Performans ve Verimlilik Sağlar

.

MrKaptanTR

Bilgisayar mühendisiyim ve boş zamanlarımda kurucusu olduğum bu platformda yazarlık yapıyorum. Özellikle yazılım ve profesyonel içerik üreticiliği alanlarında çalışıyorum. Spor yapmaktan ve gizemli konuları araştırmaktan keyif alıyorum.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu