Bu kodda ne yanlış var? – 5

Bu sefer bir web uygulaması projesinde görevliyiz. Uygulamanın yönetim panelini YonetimPaneli dizini içerisinde geliştirdik.

Güvenlik açısından önlem almak için web.config dosyasına şu satırları ekledik; <system .web> </system>

Fakat, Proje Lideri bu kodu gördükten sonra yüzü asıldı.

Sizce problem nedir ve nasıl düzeltebiliriz?

C# Event fırlatmak için yeni bir yöntem

C# ile geliştirdiğimiz sınıflardan event yayınlamaya genellikle ihtiyaç duyarız.

Bir sınıftan event yayınlamak için, artık ezberlediğimiz üzere, aşağıdaki yöntemi kullanırız;

public class EventTest { public event EventHandler MyEvent;

public void RaiseEvent()
{
    if(MyEvent != null)
    {
        MyEvent(this, EventArgs.Empty);
    }
} }</pre>

Devlicious‘da gördüğüm makalede, Rob Eisenberg yeni bir yöntem öneriyor.

Makaleye göre, yukarıdaki event yayınlama kodunu aşağıdaki gibi de yazabiliriz;

public class EventTest
{
    public event EventHandler MyEvent = delegate {};

    public void RaiseEvent()
    {
        MyEvent(this, EventArgs.Empty);
    }
}


*Sizce hangisini tercih etmeliyiz?*

C# Veri Tipleri

Uygulamalarımızın olmazsa olmaz unsurları herhalde değişkenlerdir. Orta ölçekli bir uygulamada, kabaca bir tahminle yüzlerce değişken tanımlıyoruzdur.

Kullanım yoğunluğuna bakarak, oluşturduğumuz değişkenlerin tiplerinin doğru belirlenmesinin ne kadar önemli olduğunu anlayabiliriz.

C# ile kullanabileceğimiz değişkenlerin en önemlilerini aşağıda listeledim;

**Veri Tipi****Kapladığı Alan****Değer Aralığı**
**Tam Sayı Veri Tipleri**
[sbyte](http://msdn.microsoft.com/library/system.sbyte)1 byte-128 ve +127
[byte](http://msdn.microsoft.com/library/system.byte)1 byte0 ve +255
[short](http://msdn.microsoft.com/library/ybs77ex4.aspx)2 byte-32768 ve +32767
[ushort](http://msdn.microsoft.com/library/cbf1574z.aspx)2 byte0 ve 65535
[int](http://msdn.microsoft.com/library/5kzh1b5w.aspx)4 byte-2.147.483.648 ve +2.147.483.647
[uint](http://msdn.microsoft.com/library/x0sksh43.aspx)4 byte0 ve 4.294.967.295
[long](http://msdn.microsoft.com/library/ctetwysk.aspx)8 byte-9.223.372.036.854.775.808 ve +9.223.372.036.854.775.807
[ulong](http://msdn.microsoft.com/library/t98873t4.aspx)8 byte0 ve 18,446,744,073,709,551,615
**Noktalı Sayı Veri Tipleri**
[single](http://msdn.microsoft.com/library/system.single)4 byte-3.402823E38 ve +3.402823E38
[double](http://msdn.microsoft.com/library/system.double)8 byte-1.79769313486232E308 ve +1.79769313486232E308
[decimal](http://msdn.microsoft.com/library/system.decimal)16 byte-7.9E1028 ve +7.9E1028
**Diğer Veri Tipleri**
[char](http://msdn.microsoft.com/library/x9h8tsay.aspx)2 byteTek Karakter
[string](http://msdn.microsoft.com/library/system.string)~ (2 byte x harf adedi)Karakter Dizisi
[bool](http://msdn.microsoft.com/library/c8f5xwh7.aspx)4 byteTrue veya False
[DateTime](http://msdn.microsoft.com/library/system.datetime)8 byte1/1/0001 12:00:00 ve 31/12/9999 23:59:59

C# siz olsanız hangisini yazardınız?

İnternette gezerken şöyle bir kod parçasına rastladım;

public void ShowPanelWindow(bool isVisible) { Visibility = isVisible ? Visibility.Visible : Visibility.Collapsed; }

public void ShowBusy(bool isBusy) { BusyIndicator.ShowIsBusy = isBusy; }</pre>

Bu kodu yazan kişi, eğer yukarıdaki kodu şimdi yazsaydım şöyle yazardım demiş ve aşağıdaki kod parçasını yazmış;

public void HidePanelWindow()
{
    Visibility = Visibility.Collapsed;
}

public void ShowPanelWindow()
{
    Visibility = Visibility.Visible;
}

public void LookBusy()
{
    BusyIndicator.ShowIsBusy = true;
}

public void StopLookingBusy()
{
    BusyIndicator.ShowIsBusy = false;
}


Bu iki kodu okuduktan sonra, kendi kendime sordum ve ben de **ikinci tarz yaklaşımı** kullanırdım.

Peki siz olsanız hangi tarz kodu tercih ederdiniz?

Kısa kod mu? Kendini anlatan kod mu?

Sql Server veritabanında en büyük 10 tablo

Sql Server‘da belli bir veritabanında en büyük tabloları bulmak için aşağıdaki sorguyu çalıştırabiliriz;

DECLARE @TabloBoyutlari TABLE (TabloAdi VARCHAR(50), SatirSayisi INT, AyrilmisAlan VARCHAR(50), KullanilanAlan VARCHAR(50), IndexBoyu VARCHAR(50), KullanilmayanAlan VARCHAR(50))

INSERT INTO @TabloBoyutlari EXECUTE sp_MSforeachtable ‘sp_spaceused [?]’

SELECT TOP 10 * FROM @TabloBoyutlari ORDER BY CONVERT(INT, REPLACE(AyrilmisAlan, ‘ KB’, ‘’)) DESC

Bu sorgu sayesinde ilgili veritabanındaki tabloların,

  • Tablo Adı
  • Satır Sayısı
  • MDF dosyasında ilgili tablo için ayrılmış alanın boyutu
  • MDF dosyasında ilgili tablo için ayrılmış alanın kullanılan boyutu
  • MDF dosyasında ilgili tablonun indexleri için ayrılmış alan
  • MDF dosyasında ilgili tablo için kullanılmayan alan bilgilerine ulaşabiliriz.

İlgili tablo için aşağıdaki eşitlik her zaman doğrudur;

Kullanılan Alanı + Index Alanı + Kullanılmayan Alanı = Ayrılmış Alan

Benim bilgisayarımdaki AdventureWorks2008R2 örnek veritabanında yukarıdaki sorguyu çalıştırdığımda, şöyle bir sonuç alıyorum;

Sql Server - Veritabanında en büyük 10 tablo

Engin Polat hakkında

Chief Architect, Microsoft RD, Microsoft MVP

Ada ve Ege'nin babası ;)

Kategoriler

İstatistik

Makale Adedi: 458

Creative Commons Lisansı