C#nedir?com
 
YAZAR HAKKINDA
Ahmet Faruk Nacaroğlu
Ahmet Faruk Nacaroğlu
http://www.csharpnedir.com/
İletişme geçmek için tıklayın.
40 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler: bakimini baskalarinin durumda istisnai kodunu metodunun metotlar programlama rehberi sinifi sinifin tavsiye tostring() yapmak zamani C# / VC#/.NET Ahmet Faruk Nacaroğlu
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Başlangıç
Kategori : C# / VC#/.NET
Yayınlanma Tarihi : 7.10.2004
Okunma Sayısı : 22320
Yorum Sayısı : 1     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
XML - Deniz Kılınç
emre TAŞ
yazının devamı >
emre TAŞ
Decompiling and Reverse Engineering .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
Masaüstü mü ? İnternet Mi? .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
.Net Kavramları - .Net Radyo
emre TAŞ
yazının devamı >
emre TAŞ
Yeni Başlayanlar için - .Net Radyo
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer
Conda install environment.yml Package 12.4.2021
Turhal Temizer
Mac OS/X Removing CUDA 12.4.2021
Burak Selim Şenyurt
Tie Fighter Değil, Project Tye! 12.4.2021
Burak Selim Şenyurt
Stackoverflow Sevgi Anketinde Yıllardır Bir Numara Çıkan Programlama Dili Rust Kimdir? 12.4.2021
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
C# Programlama Rehberi - 4
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
Geçen gece evdeki bilgisayarımda elektronik kitaplarımı karıştırırken rastlantı eseri gözüme takılan ve okuduğumda çok hoşuma giden bir rehber oldu. Rehberde C# ile nesne yönelimli yazılım geliştirirken hem tasarım hem de uygulama aşamasında bizlere çok yardımcı olacak tavsiyeler bulunmaktaydı. Bu altın değerindeki öğütleri tüm yazılımcı arkadaşlarla paylaşmak istedim. Hatta okurken kendi kendime yaptığım yorumları da Çevirmenin Notu şeklinde sizlere aktarmayı uygun gördüm.

Rehberde altmışın üzerinde madde olmakla birlikte bunların yarıya yakını sistem analizi ve tasarımı ile ilgilidir. Diğer kalan ksımı ise sistemin uygulanması(implementasyonu) konusunu kapsamaktadır. Bu makalenin başlangıcı olan yazıları aşağıdaki bağlantılara tıklayarak okuyabilirsiniz

C# Programlama Rehberi - 1

C# Programlama Rehberi - 2
C# Programlama Rehberi - 3

Bu belge Thinking In C# (Larry O’Brien & Bruce Eckel ) kitabının sonundaki EK C’den Türkçe’ye çevrilmiştir.

Bu dökümanda; yazılım geliştirirken alt seviye tasarım ve kod yazma hususunda biz programcılara yardım edecek, rehber olacak, bir takım öneriler bulunmaktadır. Burda yazılanlar birer öneri olup birer kural olarak algılanmamalıdır. Dökümanda bahsedilenler önceki deneyimlere dayanarak ortaya çıkan parlak fikirler olarak da görülebilir.

Implementasyon(Uygulama-Gerçekleştirme) - 2

47.Derleme zamanı hatalarını çalışma zamanı hatarına tercih ediniz: Bir hatayı yakalarken mümkün olduğu kadar meydana geldiği kısma yakın bir yerde yakalayın. Hataları çözmeye çalışırken oluştukları yerlere yakın kısımlarda arayın. İstisnayi durumları, hata hakkında en çok bilgi verecek yerlerde yakalamaya gayret edin. Eğer hata mesajından bir ipucu yakalayamıyorsanız hatanın içindeki hatalara bakın.

Çevirmenin Notu: InnerExection’lara bakmanızı tavsiye ediyorlar.

48. Şişman metotlara dikkat edin: Metotlar kısa, öz ve anlamlı olmalıdır. Eğer bir metot çok uzun ve karmaşık ise onun bakımını yapmak güç olur ve büyük ihitmalle birden fazla işi tek başına yapıyordur. Bu tür metotların alt metotlara bölünmesi tavsiye edilidiği gibi siz onu ayrı bir sınıf olarak da implemente etmeyi bir düşünün. Ayrıca küçük metotlar sınıf içinde kodun tekrar kullanımına da (code reuse) imkan verecektir. Fakat, bazen uzun metotlar vardır ama onlar yine de tek bir iş yapmakla yükümlü olmalıdırlar.

49. Olabildiğince herşeyi gizli tutmaya çalışın: Bir sınıf kütüphanenizin belirli bir kısmının kodunu başkalarına açmanız tavsiye edilmez. Çünkü bu başkalarının kodunu baştan tasarlamasına ve yazmasına yolaçacaktır. Eğer sadece sınıfların arayüzlerini yayımlarsanız, başkalarının kodunu değiştirmeden kendi sınıflarınızın içsel çalışmasını zamanla geliştirirsiniz. Bu durumda sizin implementasyon değişikliklerinizden başkalarının etkilenmesini minimum derecede etkiler.

50. Hiç çekinmeden bol bol yorum satırları ve Xml yorum söz dizimini kullanınn: Fakat yorum satırlarınız sadece kodun ne yaptığını sözlü anlatan sıkıcı eklentiler olarak kod içinde barınmasınlar. Daha çok neyi yapmak istediğinizi ve önemli noktaları yorum olarak yazınız. Ayrıca sınıfınızın içindeki metotların amaçları .NET sınıf kütüphanesinde sık kullanılan metotlar ile örtüşüyor ise onların isimlerini .NET kütüphanesindeki isimlerden seçiniz.

Çevirmenin Notu: Eğer kendinize has bir container sınıfı geliştiriyorsanız ve eleman sayısını dönderen bir özelliğiniz varsa onun ismini Count seçmeniz. uygun olacaktır. Ya da ayın container nesnenizin içinde bir elemanın olup olmadığı dönderen metot ismini IsExist() yerine Contains() olarak verirseniz;sınıfınız kullananlar kolayca sizin sınıfınıza adapte olabilirler.

51. “Sihirli numaralar” kullanmayınız: Kod içinde bir takım sabit sayılar kullanmak gerekebilir. Kodun bakımını yaparken bunları değiştirmek gerektiğinde neyin ne olduğu açık olarak belirtilmemişse işler karışabilir. Mesela kod içinde geçen bir “100” sayısı ne acaba? Bir dizinin kapasitesi mi? Yoksa bambaşka bir şey mi? Onun yerine ismi açıklayıcı olan sabit(constant) tanımlamak daha mantıklıdır. Çünkü; sabitin ne işe yaradığını anlamak ve dolayısıyla bakımını yapmak çok kolaylaşır.

52. Yapılandırıcıları yazarken istisnai durumları düşünün: En mükemmel senaryoda bir yapılandırıcının istisnai durumlara açık olmaması dolayısıyla hata oluşma ihitimalinin sıfırlanmasıdır. Mükemmel bir senaryoda ise sınıfımızın tutarlı sınıflardan oluşması ve/veya türemesiyle istisnai durumlarda temizleme işlemine gerek kalmamasıdır. Yoksa temizliği yapılandırıcı içindeki finally deyimi kod bloğu içinde yapmak zorunda kalırsınız. En azından herhangi bir yapılandırıcıda istisnai durumda hatayı fırlatmalıyız ki; bu sınıfı oluşturan koda bildirmeliyiz. Öteki türlü sınıfımız oluşturmak için çağıran kod hiç bir şey olmamış gibi yolunda devam etmesin.

53. Eğer sınıfız herhangi bir temizle işlemi gerektiriyorsa, sınıfın bir örneği ile çalışma bitince/ömrü sonlanınca, sınıfınızın IDisposable arayüzünü implement etmelidir.

54. Eğer sabit sayıda nesneler alan bir container’ sahip olacaksanız onu dizi olarak hazırlayın: Özellikle bir metot bu şekilde bir container dönderecekse bu tür bir strateji izleyiniz. Böyle bir yaklaşım size bazı yararlar sağlayacaktır. Bunlardan başında .NET’in dizilerdeki derleme zamanı tip kontrolü ve bu diziyi kullanacak metodun dizinin elemanlarını uygun tür dönüşümüne tabi tutması gelir.

55. Soyut sınıflar( abstract classes )’dan önce arayüzleri(interfaces) kullanmayı düşünün: Eğer herhangi bir sınıf başka sınıflara temel/ana sınıf olabilecekse o sınıfı arayüz olarak implemente etmeye çalışın. Eğer metot tanımlarını ve değişkenlerinizi ilerde değiştirmek zorunda kalacağınıza inanıyorsanız bu sınıfı soyut sınıf olarak geliştirin. Bir arayüz sınıfları kullananlarla iletişim içindedir. İletişimin amacı ise sınıfı kullanan kodun ne yapmak istediğine odaklıdır. Arayüzü kullanan sınıf(lar) ise gerekli işlevlerin nasıl yapılacağı üzerine yoğunlaşırlar.

56. Yapılandırıcılar içinde sadece sınıfın örneğinin( nesnenin ) gerekli duruma getirme işini yapın: Özellikle yapılandırıcı içinde diğer metotları çağırmaktan çekinin. Çünkü sizin sınıfınızı kullanarak türetilen başka bir sınıf içinde sizin ilgili yapılandırıcınıza aşırı yükenilmiş olunabilir. Bu tür durumlar ise istenmeyen sonuçların doğmasına davetiye çıkarabilir. Küçük ve basit yapılandırıcılar istisnai durumların veya başka bir takım sorunların çıkmasını önleyecektir.

57. Yanlışlıkla aşırı yükleme yapılmasına engel olun: Eğer türeyen sınıfta ana sınıfın bir metodunun üstüne yazmaya çalışırken, ana sınıfın sanal metodunun( virtual ) ismini doğru yazmamışsanız, üstüne yazma yerine( override ) yeni bir metot üretmiş olabilirsiniz. Bu durumda kodunuz büyük ihtimal çalışacaktır. Ama doğru çalışmama ihtimali yüksektir!

Çevirmenin Notu: Aşağıdaki örneği bir inceleyiniz:
class YanlisUstuneYazmak
{
    public static void Main()
    {
        YanlisUstuneYazmak yanlis = new YanlisUstuneYazmak();


        Console.WriteLine( yanlis.ToString() );
        Console.WriteLine( yanlis.ToString( DateTime.Now ) );
    }


    // Ana sınıfın (object) ToString() metodunun üstüne yazıyoruz:
    public override string ToString()
    {
        return ("Ana sınıfın ToString() metodunun üstüne yazdık... ");
    }


    // Ana sınıfın (object) ToString() metodunun üstüne yazmak yerine yeni bir metot yazıyoruz:
    public string ToString( DateTime zaman )
    {
        return ("Yanlışlıkla yeni metot yazdık" + zaman.ToString() );
    }
}


58. Program kodları yazıldığından çok daha kısa sürede okunduğunu unutmayınız: Temiz bir kodun anlaşılması kolaydır. Fakat yorumlar, detaylı açıklamalar ve hatta örnekler kodunuzu mükemmelleştirir. Bu tür güzellikler size ve başkalarına kodunuz okurken veya anlamaya çalışırken çok yardımcı olacaktır. Eğer bu güzellikler yoksa kodunuzu anlayama çalışanın vay haline!

Son Söz

Bir makalenin ve makale dizisinin sonuna daha geldik. Umarım dizideki bu makale ve öncekiler sizin için faydalı olmuştur veya olacaktır. Herkese zevkli programlamalar...

Makale:
C# Programlama Rehberi - 4 C#, Visual C# ve .NET Ahmet Faruk Nacaroğlu
  • Yazılan Yorumlar
  • Yorum Yaz
Bu konu hakkında yayınlanan yorum bulunmamaktadır.
"Yorum Yaz" tabını kullanarak sizde yorumlarınızı yazabilirsiniz.
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • Eklenen Son 10
  • Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor