Anlaşılır ve daha hatasız kod yazmak!
Gönderilme zamanı: 29 Ağu 2022 01:56
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 :
Verilerinizi birlik olarak tanımlamanız daha iyi olacaktır!
Örnek C kütüphanesi içinde kullanımı:
__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.
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:
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:
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:
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ı?
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ı:
aynı şekilde içiçede kullanabilirsiniz.
CPP dosyalarına kendi hazırladığınız başlık dosyasını(c) nasıl eklersiniz?
şeklinde yapabilirsiniz.
Aklınıza gelenleri(unutulmuş/yanlış/eksik vb.) bu başlık altından ekleyebilirsiniz.
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