Anlaşılır ve daha hatasız kod yazmak!

C dili hakkında bilgiler, kaynaklar, dokümanlar ve örneklerin bulunduğu bölümümüz.
Cevapla
Kullanıcı avatarı
admin
Sistem Geliştiricisi
Sistem Geliştiricisi
Mesajlar: 832
Kayıt: 28 Ağu 2022 04:38
Konum: Database
Meslek: Teknisyen
Teşekkür etti: 456 kez
Teşekkür edildi: 308 kez
İletişim:

Kalp Anlaşılır ve daha hatasız kod yazmak!

Mesaj gönderen admin »

Merhaba, Bu döküman C dilinde anlaşılabilir ve daha hatasız kod yazma tavsiyelerini ele almıştır.

Kodunuzun anlaşıla bilirliği çok önemlidir. Peki sizde kodunuzun daha anlaşılır olmasını istemez miydiniz ?

Anlaşıla bilirlik Nedir?

Kodunuzu kısa veya karmaşık yazmak sizi çok iyi bir programcı yapmaz aksine daha çok hata alır veya kodunuzda gizli böcekler; derleyicinizin ve sizin fark edemediğiniz kodlar olur. ?:, >< vb. operatörleri olabildiğince yerinde ve anlaşılabilir şekilde kullanın. Sıkışık kod yazmayın fazla esnek kodda yazmayın buda tehlikeli sonuçlar doğurabilir.

Kodunuzu parça parça test edin ve yazın!

Projeleriniz büyüdükçe kodlarınızı parçalara ayırmanız gerekir*

Bu önemlidir; eğer kodunuzun hiç test etmeden bütün olarak yazdıysanız hataları düzeltirken zaman kaybedersiniz ve daha çok gizli böceğin kodunuzda yer almasına imkan sağlarsınız.

Kütüphane içinde tanımlamalarınızı yapmak kodun anlaşıla bilirliğini arttırır!

Örnek C kütüphane iskeleti :

Kod: Tümünü seç

#ifndef KUTUPHANE_H  
#define KUTUPHANE_H  
  
  
/* Tanımlamaların ve çeşitli hazır fonksiyonların geçtiği yer */  
  
#endif  
Verilerinizi birlik olarak tanımlamanız daha iyi olacaktır!
Örnek C kütüphanesi içinde kullanımı:


Kod: Tümünü seç

#ifndef KUTUPHANE_H  
#define KUTUPHANE_H  
  
__BEGIN_DECLS  
  
struct degiskenler {  
       int toplam;  
       int fark;  
       int carpim;   
       int bolum;  
};  
  
struct sayilar {  
       int sayi;  
       int sayi_2;  
};  
  
__END_DECLS  
  
#endif  
__BEGIN_DECLS ve __END_DECLS kullanmanız anlaşılabilirliği arttıracaktır.
Tanımladığınız değişkenlere şu şekilde erişebilirsiniz. Verilerinizi iyi tanımlayın global veya global olmayacak şekilde.

Kod: Tümünü seç

#include <stdio.h>  
#include "kutuphane.h"     
  
int main ( void )   // C99'da kullanılabilir bir diğer şekli  --  int main ( int argc, char *argv[] )  
{  
    struct degisken d;  
    struct sayilar s;  
  
    s.sayi = 10;  
    s.sayi_2 = 20;  
  
    ss.toplam = s.sayi + s.sayi_2;  
    printf("%d + %d = %d\n", s.sayi, s.sayi_2, s.toplam);  
  
    return 0;  
}  
typedef kullanmadan struct ile kısaltarak yeniden tanımladık. Şu an değişkenlerimiz birlik içerisinde önceden tanımlanmış
ve daha anlaşılabilir bir durumdadır.

Kütüphane'den önceden tanımlanmış fonksiyon kullanmak

Şu şekilde tanımlayabiliriz:

Kod: Tümünü seç

#ifndef KUTUPHANE_H  
#define KUTUPHANE_H  
  
__BEGIN_DECLS  
  
struct degiskenler {  
       int toplam;  
       int fark;  
       int carpim;   
       int bolum;  
};   
  
struct sayilar {  
       int sayi;  
       int sayi_2;  
};  
  
struct girdiler {  
       static char girdi[256];  
};  
  
__END_DECLS  
  
void ismimleBanaMerhabaDe( void )  
{  
     struct girdiler g;  
     printf("İsminizi alabilirmiyim?\n");  
   
     gets(g.girdi);  
     printf("%s, merhaba!\n", g.girdi);  
}  
  
#endif  
Tanımlamalara bir yeni girdi eklendi ve alınabilecek dizgi sınırı 256 olarak belirttik.
Eğer belirlemezseniz baştan derleyici uyarısı alırsınız(ki bunu tanımlasanız bile verir). 256'yı aşınca segfault alacaksınız.

Şimdi fonksiyonumuzu kullanalım:

Kod: Tümünü seç

#include <stdio.h>  
#include "kutuphane.h"  
  
int main ( void )  
{  
    ismimleBanaMerhabaDe();  
    return 0;  
}  
Derleyicinizin non-void uyarısı vermemesi için dönüşü 0 yapın.

?: operatörü nerede kullanılmalı?

?: üçlü operatördür(neden üçlü olduğunu koddan anlayabilirsiniz) ve if-else ifadesi ile aynı görevi yapar, kullanımı şu şekildedir:

Kod: Tümünü seç

olay nedir ? if kısmı : else kısmı  
Bunun yararı var gibi? Ama zararı şu yönde olacaktır, eğer içiçe daha fazla kullanır iseniz böceklerin oluşmasına neden olacaktır.
Nasıl mı?

Kod: Tümünü seç

olay nedir ? if kısmı? boyle oldu : boyle olmamalı : else kısmı  
Bunun sonucunda sizden kaynaklı hatalar oluşabilir.

Bu bakımdan yerinde kullanmanız çok önemlidir.

Extern Kullanmak?


Extern, genelde uzak bir yerden global veriyi bağlamak için kullanılır. Örneğin bir c++ kütüphanesi/fonksiyon veya diğer bir
c ile yazılmış fonksiyon var

extern kulllanımı:

Kod: Tümünü seç

extern "dil" { bildirim; bildirim; }  
aynı şekilde içiçede kullanabilirsiniz.

CPP dosyalarına kendi hazırladığınız başlık dosyasını(c) nasıl eklersiniz?

Kod: Tümünü seç

extern "C" { #include "kutuphaneniz.h" }  
şeklinde yapabilirsiniz.

Aklınıza gelenleri(unutulmuş/yanlış/eksik vb.) bu başlık altından ekleyebilirsiniz.
By Volatile. at 07-27-2010, 16:11 - spycoders.com
Daha zeki olmanın tek yolu, daha zeki bir rakiple oynamaktır.

Etiketler:
Cevapla

“C Programlama” sayfasına dön