Programlama İpuçları Yazılım Kuralları - SOFTSAM

Breaking

About Software

22.01.2016

Programlama İpuçları Yazılım Kuralları


     Öncelikle bu makaleyi okuyanların bir yazılımcı olduğunu yada olmaya karar verdiğini varsayarak biraz programlamayı bildiğinizi benimseyerek yazacağımı bilmenizi isterim.
     
     Yazılım da bir dili bilmek bir dilin syntax(yazım kurallarını) yapısını bilmek çoğu zaman pek bir anlam ifade etmez.Öncelikle algoritma bilmeniz gerekir çünkü algoritma öğrenilmesi ve pratik ile geliştirilmesi gereken bir konu iken bir dil ile programlamak o dilin yazım kurallarını ezberlemek ve üzerinde pratik yaparak geliştirebileceğiniz bir konudur.Farkları sizinde fark edeceğiniz üzere birisi ezberden ibaretken diğeri öğrenmeye dayalı bir konudur.

    Bu konu "Peki syntax nedir? Syntax önemli değil mi? Syntax de de sadece programlama dilinin kurallarına mı bağlı kalmalıyız?" şeklinde sorularıda beraberinde getirmiyor değil.
Syntax:Temel olarak bir dilde (language) tanımlı olan öğelerin (kelime, işlem, sembol yada değerlerin) anlamlı bir dizilim oluşturmasıyla ilgilenen bilimdir.
Yani programlama dilinin de kendine göre kuralları var.Her programlama dilinin ise kendine has bir syntax' i var.Bunu günlük konuşma dilimiz Türkçe ve İngilizce ile kıyaslayalım.

Ali okula gider.
Jhon goes to school.

İki dilinde kendine ait kelimeleri ve cümle oluşturma şekilleri vardır.
Turkçe:Özne (nesne+yönelme hali) (yüklem+geniş zaman eki)
İngilizce:Özne fiil(geniş zaman eki almış) yönelme eki nesne
 şeklinde göstermeye çalıştım ne kadar doğru oldu bilemiyorum ama önemli olan nokta ikisinde de farklı kelimeler ve farklı bir cümle kurma sistemi kullanılmıştır.Eğer bu dillerde yazım kurallarını kullanmazsanız kimse sizi anlamayacaktır.İngilizcenin kurallarını Türkçe'ye uygulamaya çalışan yabancılar gibi konuşmaya başlarsınız.Bu da normal değildir.Doğru değildir.
İşte bu sebepten dolayı syntax önemlidir.
   
    Sadece programlama dillerinin kurallarına bağlı kaldığımızı var sayarak iki ayrı kod oluşturacağım C ve C# dilinde:

C:
int main()
{
int a,b,c;
scanf("%d %d",&a,&b);
c=a+b;
printf("%d",c);
getch();
}
C#
static void Main()
{
int a,b,c;
a=int.Parse(Console.ReadLine());
b=int.Parse(Console.ReadLine());
c=a+b;
Console.WriteLine(c);
Console.ReadKey();
}
Bu iki kodu incelediğinizde yada çalıştırdığınızda hiç bir hata almayacaksınız.Çünkü tamamen dillerin kendine ait olan kuralları gereğince yazılmış iki kod göreceksiniz.Birde bu kodlara Kullanıcı ve Geliştirici gözü ile bakalım.
Kullanıcı için:
1)Ekran açılacak ve bir gerişi beklenecek bu veri girişleri C için arasında boşluk olan 2 sayı ve C# için ise birinci sayı girilip Enter dan sonra ikinci sayı girilecek.Fakat Kullanıcı bu iki durumdan da habersiz çünkü siz kullanıcıya hiçbir şekilde bir kolaylık sağlamamışsınız.Bu kodları şu şekilde düzenleyelim.
C:
int main()
{
int a,b,c;
printf("aralarında bir boşluk olacak şekilde iki sayı giriniz:");
scanf("%d %d",&a,&b);
c=a+b;
printf("%d",c);
getch();
}
C#
static void Main()
{
int a,b,c;
Console.Writeline("Birinci Sayıyı giriniz:");
a=int.Parse(Console.ReadLine());
Console.Writeline("İkinci Sayıyı giriniz:");
b=int.Parse(Console.ReadLine());
c=a+b;
Console.WriteLine(c);
Console.ReadKey();
}
bir de bu programı bu şekilde çalıştırın farkedeceksiniz ki kullanıcı için bu şekilde kullanması daha kolay olacaktır çünkü ne yapması ve yapmaması gerektiğini biliyor.
Bu durumu birde sonuç kısmı için düşünelim. ekrana veriyi yazdırıyorsunuz fakat bunun ne olduğunu söylememişsiniz.Bunu da unutmamanız gerekli.
printf("Toplam:%d",c);
Console.WriteLine("Toplam={0}",c);
Bu şekilde düzenlediğiniz zaman artık kullanıcı bu programın iki sayıyı topladığının farkına vardı.Siz ona programınızın ne yaptığını açıkladınız.Kullanıcı etkileşiminde bu gibi durumlara kesinlikle dikkat etmeniz gerekiyor.Kendinize bir program yazarken bile bu tür bilgilendirmeleri yapmayı alışkanlık edinmeniz sizin için iyi olacaktır.
Birde bu işin kod kısmı var burada hem kullanıcıyı içeren hemde geliştiriciyi içeren sorunlar var.
Öncelikle en baştan başlamak gerekirse:
int a,b,c;
şeklinde bir değişken tanımlaması yapılmamalıdır. Bu sizin için bir anlam ifade edebilir fakat yazdığınız bir kütüphaneyi yada class'ı bir başka geliştirici tarafından geliştirmeye başlandığında geliştirici onların ne anlam ifade ettiğini tek tek bulması gerekecektir.
Değişkenlere Sınıflara yada metodlara her türlü yaptığınız tanımlamalara verdiğiniz isimler o değişken sınıf yada metodun ne için kullanılacağını geliştiriciye anlatmalıdır.Tanımlama kısımlarımızı şu şekilde değiştirelim.
int sayi1,sayi2,toplam; 
Bu şekilde yapılmış bir tanımlama bu değişkenlerin ne olduğunu açık açık belirtmektedir.
Eğer bir metodunuz varsa
int M(int a,int b)
{
return a-b;
}
ve metodunuz buna benziyor ise ki bu metod hiç bir şeye benzemiyor.Bu metodun ne iş yaptığını kimse açıklayamaz iki sayıyı birbirinden çıkartıyor ama ne için yapıyor bunu.Hesap makinesi görevindemi yoksa gelen iki tane yıl verisinden yaşı mı hesaplıyor. Benim amacım yaşı hesaplatmak ve bunun bu şekilde olmasını sağlamalıyım.Metoduma bir anlam katmalıyım. Bu iş aslında kitab yazmaya benzetiliyor. Kitap size bir karakteri betimler ve siz artık o isme sahip karakterin kim olduğunu ve birkaç özelliğini bilirsiniz. Metodumuzada öyle bir isim ve parametre isimleri vermeliyiz ki geliştirici bu metod ne yapıyor diye değil bu adam mu metodu nasıl yazmış diye bakmalı kodunuza.
int yasHesapla(int buYil,int dgmTarihi)
{
return buYil-dgmTarihi;
}
İlk bakışta bile bu metod bize çok şey anlaytıyor. 
1) Bu metod yaş hesabı yapıyor.(isminden)
2)İçerisine Bulunduğumuz yıl ve Doğum tarihi gönderince ikisi arasında işlem yapıyor.
(isimlerirde uzatmak istemediğimden anlaşılacak biçinde fazla kırpmadan kısalttım.
Değişken isimlendirme kurallarında bundan bahsedeceğiz.
Bu şekilde bu makalenin sonuna gelmiş olalım bir sonraki makalemizde Kodlama bölümünde kullanıcı ile ilgili durumları ve değişken isimlendirme kurallarını işleyeceğim.

Şamil "SoftSam" ÖZÇELİK

Hiç yorum yok:

Yorum Gönder