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
Ö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
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;
}
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
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;
}
?: 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ı
Nasıl mı?
Kod: Tümünü seç
olay nedir ? if kısmı? boyle oldu : boyle olmamalı : else kısmı
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; }
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" }
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