Makale Özeti

Birkaç bölümden oluşacak bu yazımda Visual Studio 2005 ile gelen yeni bazı özellikleri anlatacağım.

Makale

Visual Studio 2005 ile gelen yenilikler -1

Birkaç bölümden oluşacak bu yazımda Visual Studio 2005 ile gelen yeni bazı özellikleri anlatacağım. İnceleyeceğim konular arasında benim de merakle beklediğim yeni C# editörü, yeni ASP.Net kontrolleri ve C# dilinin yeni versiyonu yer alacak.

İlk olarak C# editörünü inceliyoruz...

 

C# Editörü, IntelliSense

C# editöründe IntelliSense desteği birkaç güzel eklenti ile devam etmekte. Visual Basic editörünün C# editöründen bir adım önde olmasını sağlayan özellikler artık C# editöründe de var. Herhangi bir anda kod yazmaya başladığınızda üye listesi otomatik olarak açılıyor ve listeden istediğiniz üyeyi seçebiliyorsunuz. Örneğin VB editöründe bir enumerasyona değer vermek istediğinizde “=” operatörünü yazdığınız anda karşınıza enumerasyonun olası değerlerini içeren üye listesi çıkıyordu. Bu özellik nihayet C# editörüne de eklenmiş (Şekil 1).

 

Şekil 1

Şekil 1

 

C# editörüne gelişmiş formatlama seçenekleri de eklenmiş durumda. “{“ sembollerinin yeni satıra mı, aynı satırda mı yazılacağından, metod isimleri ile metod parantezleri arasında boşluk koyulup koyulmayacağına kadar birçok formatlama özelliğini ayarlamamız mümkün (Şekil 2).

 

Şekil 2

 

Refactoring

Refactoring özelliğini, yazıp bitirdiğimiz kodların üzerinde değişiklikler yapmak için kullanıyoruz. Sözünü ettiğimiz değişiklikleri; değişkenleri, sınıfları, isimuzaylarını yeniden isimlendirmek, metodların imzalarını (parametre listesi, parametre veritipleri, parametre isim ve sırası) değiştirmek, mevcut kodlardan yeni metodlar oluşturmak, sınıfların kodlarına dayalı olarak arayüz tanımları oluşturmak ve sınıf değişkenlerini özelliklere (property) dönüştürmek olarak gruplandırabiliriz.

Kısaca refactoring özelliğini örneklerle inceleyelim...

 

Refactoring – Rename

Refactoring içinde gelen Rename yeteneği ile değişkenlerin, metodların, sınıfların, isimuzaylarının isimlerini kolayca değiştirebiliyoruz. Örneğin Musteriler adında bir sınıf yazdık, fakat daha sonra sınıfımızın adını Musteri olarak değiştirmek istedik, bunu standart bul ve değiştir yoluyla da gerçekleştirebiliriz şüphesiz, ancak rename özelliği ile herşey çok daha kolay. Rename özelliği arama ve değiştirme özelliği gibi, isimlendirme işlemini bir metin editörü mantığında gerçekleştirmiyor. İsmini değiştirmek istediğimiz yapının ne olduğunu biliyor ve bütün proje(ler) içinde, ismi değiştirilecek uygun veritiplerini bulup bize gösteriyor. Arama ve değiştirme sırasında yapabileceğimiz olası hatalar minimuma inmiş oluyor. Şekil 3’te yazdığım iki sınıfın kodunu görüyorsunuz. Birincisi Musteriler adını verdiğim sınıf, SqlBileseni adındaki sınıf ise belirtilen müşteri numarasına göre bir MusteriSinifi nesnesi oluşturup döndüren bir metod içeriyor.

Şekil 3

 

Diyelim ki MusteriSinifi nesnesini daha sonra yeniden adlandırmam gerekti. Yapılacak şey MusteriSinifi sınıf tanımında sınıf adına sağ tıklamak ve Refactoring menüsünden Rename’i seçmek (Şekil 4).

 

Şekil 4

 

Bir sonraki adımda MusteriSinifi adındaki sınıfa hangi ismi vermek istediğimi belirtiyorum (Şekil 5).

 

Şekil 5

 

Sınıfın yeni ismini Musteri olarak belirledim. Ayrıca yapılacak değişiklikleri görebilmek için “Preview reference changes” özelliğini aktif bırakıyorum. Bir sonraki adımda yapılacak değişklikleri VStudio bana gösteriyor (Şekil 6).

 

Şekil 6

 

Yukarıdaki pencerede MusteriSinifi’na nerelerde referans gösterildiğini görebiliyorum. Rename tuşu ile isim değiştirme işini tamamlamış oluyorum. Sonuç ise Şekil 7’de...

 

Şekil 7

 

Refactoring – Extract Method

Extract method seçeneği, mevcut kod parçalarından yeni metodlar üretmemizi sağlıyor. Şekil 8 ve 9’da Extract Method’un nasıl çalıştığını görebilirsiniz.

 

Şekil 8

 

SqlBileseni sınıfında şekilde gördüğünüz değişikliği yaptım. MusteriGetir metodu bir Musteri nesnesi oluşturup döndürüyor. Diyelim ki daha sonra belli bir musteri numarasına göre Musteri nesnesi oluşturup bana döndürecek ayrı bir metoda ihtiyacım olduğuna karar veriyorum. Şekilde gördüğünüz gibi kod bloğunu seçip Refactoring menüsünden Extract Method öğesini seçiyorum.

 

Şekil 9

Bir sonraki adımda oluşturulacak metoda isim veriyorum (Şekil 10).

 

Şekil 10

 

Metod ismini de belirttikten sonra VStudio metodu oluşturuyor (Şekil 11).

 

Şekil 11

 

Refactoring – Encapsulate Field

Encapsulate Field ile mevcut sınıf değişkenlerini özelliklere dönüştürebiliyoruz. Yine şekillerle olan biteni görelim...

 

Şekil 12

 

Musteri sınıfına yeni bir değişken ekledim. _Isim adındaki bu değişkeni daha sonra bir özelliğe dönüştürmek istediğimde yapacağım şey değişkeni seçmek ve Refactor menüsünden Encapsule Field’ı seçmek. Bundan sonra aşağıda gördüğünüz pencere karşıma geliyor (Şekil 13).

 

Şekil  13

 

Yeni oluşturmak istediğim özelliğe Isim adını verdim. OK tuşunu tıkladıktan sonra yeni bir pencerede _Isim değişkeninin proje içinde kullanıldığı yerleri görüp istediğim değişiklikleri yapabiliyorum (Şekil 14).

 

Şekil  14

 

“Apply” tuşunu tıkladıktan sonra Musteri sınıfının kodu değiştiriliyor ve daha önce _Isim değişkenini kullandığım kod parçaları da yeni eklenen Isim adındaki özelliği kullanacak şekilde değiştiriliyor (Şekil 15).

 

Şekil   15

 

Refactoring – Extract Interface

Extract Interface Refactor özelliği ile mevcut sınıflardan arayüz kodları üretmeyi hızlı bir şekilde gerçekleştiriyoruz. Örneğin SqlBileseni sınıfının bir de Access veritabanı üzerinde çalışan bir versiyonunu yazmak istiyorum. Fakat ikisinin de ortak bir arayüz sağlamasını garantilemek istiyorum. Ancak arayüz tanımlamayı SqlBileseni’ni yazdıktan sonra gerçekleştirmek istediğimi varsayalım. Yapılacak şey SqlBileseni’ni seçip Refactor menüsünden Extract Interface’i seçmek. Aşağıda SqlBileseni sınıfının kodunu görüyorsunuz. İçinde iki adet public metod ve bir de ConnectionString adında bir özellik var.

 

#region Using directives

 

using System;

using System.Collections.Generic;

using System.Text;

 

#endregion

 

class SqlBileseni {

      public SqlBileseni() {

 

      }

 

      private string _ConnectionString = string.Empty;

      public string ConnectionString {

            get {

                  return _ConnectionString;

            }

 

            set {

                  _ConnectionString = value;

            }

      }

 

 

      public Musteri MusteriGetir(int musteriNo, string kriter) {

            /*

            ..

            ..

            */

            return MusteriOlustur(musteriNo);

      }

 

      public void MusteriSil(int musteriNo) {

            /* Veritabanında müşteriyi bul ve sil

            ..

            ..

            */

      }

      private static Musteri MusteriOlustur(int musteriNo) {

            Musteri mus = new Musteri();

            mus.MusteriID = musteriNo;

            mus.Isim = "Yeni Müþteri";

            return mus;

      }

}

 

 

Şimdi yukarıdaki tanımlara uygun bir arayüz oluşturacağım. Extract Interface’i seçiyorum ve şekildeki pencere ile karşılaşıyorum. Bu pencerede arayüz içinde hangi metod ve özelliklerin yer alacağını belirliyorum (Şekil 16).

 

Şekil   16

 

SqlBileseni içindeki iki metodu ve bir de özelliği seçip “OK” tuşuna tıkladıktan sonra VStudio yeni bir dosya oluşturup, dosyanın içine interface tanımını ekliyor. (Şekil 17).

 

Şekil   17

 

VStudio ile gelen yeniliklerden sadece bir tanesi Refactoring... Devam eden yazılarımda yine kod yazmayı gerçekten hızlandıran Expansion’lar, ASP.Net 2.0, C# 2.0 konularında (Generics, Iterators, Anonymous Methods) bilgi vereceğim.

 

Önsel Akın

onsela@yazgelistir.com