Zemin Zemin
bos
         Makalelerde Haberlerde Gruplarda
Arama Göstergesi
Site içi arama Site içi arama
Anasayfam Yap Favorilerime Ekle Bize Ulaşın IE7 Provider
BETA 2.1
IE6.0+, FireFox 2.0'ı destekler
 
   
bos bos bos
bos
Kapat
yorum aykut avci [19.01.2008 18:09:44]
mrb ben sıvas tan aykut ben de bı programcıyım eyvallah...:)
yorum aykut avci [19.01.2008 18:09:36]
mrb ben sıvas tan aykut ben de bı programcıyım eyvallah...:)

Tüm Yorumları Oku

Başlık
Yorum
« Geri Yorumlar Makaleyi Sakla Arkadaşıma Gönder Yazdır

Yazar : Mehmet TAŞKÖPRÜ
Okunma Sayısı : 14889
Tarih : 20.08.2007 10:31:43
Kategori : NetFramework
Konu : Code Snippet
Açıklama : Yazılım geliştirme sürecindeki kodlama aşamasını hızlandıran yapıdır. Geliştirme ortamı içinde kullandığımız kod blokları şablonlar şeklinde belirli bir formatta oluşturulur ve ilgili kısayollarla çağırılarak kod dosyalarına eklenir. Sık kullandığımız kod blokları için her seferinde aynı kodu tekrar yazma yada bir kod dosyasından diğer bir kod dosyasına kopyalama yapma işlemleri yerine Code Snippet özelliği daha hızlı ve kolay bir kullanım sunar.

Code Snippet

Yazılım geliştirme sürecindeki kodlama aşamasını hızlandıran yapıdır. Geliştirme ortamı içinde kullandığımız kod blokları şablonlar şeklinde belirli bir formatta oluşturulur ve ilgili kısayollarla çağırılarak kod dosyalarına eklenir. Sık kullandığımız kod blokları için her seferinde aynı kodu tekrar yazma yada bir kod dosyasından diğer bir kod dosyasına kopyalama yapma işlemleri yerine Code Snippet özelliği daha hızlı ve kolay bir kullanım sunar.

Code Snippet dosyaları .snippet uzantısını kullanır. Visual Studio 2005 geliştirme ortamı kurulumu ile varsayılan hazır snippet dosyaları gelmektedir.
Bu dosyalar kurulum sırasında seçilen dillerin bulunduğu klasör altındaki Snippets klasörü içinde yer alır.

Örneğin
C# için : C:\Program Files\Microsoft Visual Studio 8\VC#\Snippets\1033
Visual Basic .Net için : C:\Program Files\Microsoft Visual Studio 8\VB\Snippets\1033

Snippets dizinleri içinde bulunan SnippetsIndex.xml içerisinde Snippet dosyalarının bulunduğu klasör konum listesi yer almaktadır.

Snippet Dosyalarının Kod İçerisine Eklenmesi

1 -) Edit ->IntelliSence menüsünden yada Ctrl K + X : Insert Snippet kısayolu ile
2 -) Edit ->IntelliSence menüsünden yada
Ctrl K + S : Surround With kısayolu ile
3 -) Snippet kısayolu +
Tab tuşu ile
4 -) Code View penceresinde mouse sağ click ile açılan menüden Insert Snippet yada Surround With komutları ile

Yukarıdaki resimlerde bir snippet'ın Code View penceresi içerisine eklenmesi gösterilmiştir. Ekleme sonucu aşağıdaki şekildeki görüntü ile kaşılaşılır.

Burda yeşil kutularla renklendirilmiş alanlar kullanıcının değiştirebileceği parametreleri göstermektedir. Tab tuşu aracılığı ile bu parametreler üzerinde gezilebilir.
Code Snippet'lar sembolü ile simgelenir. Kısayol özelliklerini destekler. Code View penceresinde

girişi sonrasında aşağıdaki görüntü elde edilir.


Burda <Shortcut>...</Shortcut> tagları arasında tanımlanan kısayolların kullanımı örneklendirilmiştir.

Surround With Snippet'lar

Kod satırları üzerinde blok olarak işlem yapmak için kullanılan snippet türüdür. İşlem yapılacak kod bloğu seçili hale getirilerek Surround With komutu çalıştırılır.

Görüldüğü gibi kod bloğu kaplanmış ve ekleme işlemi yapılmıştır. Bu örnekte kullandığımız try yapısı için snippet kayıt dizini altındaki try.snippet dosyasını incelediğinizde
$selected$ tagı ile seçilen kod bloğunun işleme alınmış olduğunu göreceksiniz. Sizde yazacağınız snippet dosyalarında seçilen blok üzerinde işlem yapmak için bu tagı kullanabilirsiniz.

Code Snippet Fonksiyonları

GenerateSwitchCases( EnumerationLiteral ) : Switch yapısında enum tipli üyeleri case ifadeleri şeklinde otomatik olarak oluşturmak için kullanılır.

ClassName() : Snippet dosyasının eklendiği class'ın ismini döndürür.

SimpleTypeName( TypeName ) : Tipleri en sade haliyle işlemek için kullanılır.

Örnek GenerateSwitchCases fonksiyonu

Uygulamalarımız içinde kullandığımız switch case yapısını insert snippet komutu ile kod satırlarımız içerisine ekleyelim.

daha sonra switch_on yazan yere Meyveler enum türünden nesnemizi meyve yazıp enter'a bastığımızda case ifadelerinin otomatik olarak doldurulduğunu görürüz.

Code Snippet Manager

Sistemde yüklü olan snippet'ların yönetildiği yönetim ekranıdır. Tool menüsü altından Code Snippet Manager komutu yada Ctrl + K + B kısayolu ile görüntülenir



Var olan snippet dosyasını geliştirme ortamına eklemek Import klasör eklemek için ise Add komutları kullanılabilir.

Buraya kadar kod dosyalarımıza nasıl snippet ekleyeceğimizi ve nasıl kullanabileceğimizi öğrendik. Kullandıklarımız
.Net Ide kurulumu ile hazır gelen snippet dosyalarıydı. Burdan sonraki bölümde kendi snippet dosyalarımızı nasıl
oluşturacağımızı anlatmaya çalışacağım.

Kendi Code Snippet Dosyalarımızı Oluşturmak

Code snippet dosyaları Xml formatında Element ve Attibute'lerden oluşmaktadır. Genel yapısı aşağıdaki şekildedir.

<CodeSnippets> Root elementtir. Code Snippet'lar bu element altında tanımlanır.
     <CodeSnippet Format="x.x.x">
        <Header>
Başlık Bilgisi
            <Title>... </Title>
Başlık
            <Author>... </Author>
Yazar
            <Description>... </Description>
Açıklama
            <HelpUrl>... </HelpUrl>
Yardım url adresi
              <SnippetTypes>
Snippet türü
                <SnippetType>Expansion</SnippetType>
                <SnippetType>SurroundWith</SnippetType>
              </SnippetTypes>
              <Keywords>
Anahtar kelimeler
                <Keyword>... </Keyword>
              </Keywords>
            <Shortcut>... </Shortcut>
Kısayol
        </Header>
        <Snippet>
            <References>
                <Reference>
Referans dosyası ekleme
                    <Assembly>... </Assembly>
                    <Url>... </Url>
                </Reference>
            </References>
            <Imports>
                <Import>
                    <Namespace>... </Namespace>
Assembly içindeki namespace'lerin eklenmesi
                </Import>
            </Imports>
            <Declarations>
Renkli (yeşil) kutucuklar içindeki parametreler burada tanımlanır
                <Literal Editable="true/false">
Text özellikli parametreler
                    <ID>... </ID>
                    <ToolTip>... </ToolTip>
                    <Default>... </Default>
                    <Function>... </Function>
                </Literal>
                <Object Editable="true/false">
Belirli bir türe sahip parametreler string, integer yada referans tipler gibi
                    <ID>... </ID>
                    <Type>... </Type>
                    <ToolTip>... </ToolTip>
                    <Default>... </Default>
                    <Function>... </Function>
                </Object>
            </Declarations>
            <Code Language="Language"
Kullanılacak dil
                Kind="method body/method decl/type decl/page/file/any"
                Delimiter="Delimiter">
                   
... Kod bloğu
            </Code>
        </Snippet>
    </CodeSnippet>
</CodeSnippets>

Örnek Snippet Dosyasının Yazılması

Text tabanlı bir dosyanın tüm satırlarını okuyarak bir kontrolün text özelliğine atama yapan fonksiyonun Snippet dosyası olarak oluşturulması.

<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets  xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
    <CodeSnippet Format="1.0.0">
        <Header>
            <Title>Code Snippet Ornek</Title>
            <Shortcut>RTextFile</Shortcut>
            <Description>Text tabanli dosyadan okuma yapar</Description>
            <Author>Mehmet Taskopru</Author>
            <SnippetTypes>
                <SnippetType>Expansion</SnippetType>
            </SnippetTypes>
        </Header>
        <Snippet>
            <Declarations>
                <Literal>
                    <ID>Konum</ID>
                    <ToolTip>Okunacak dosyanin konumu</ToolTip>
                    <Default>"Konum"</Default>
                </Literal>
                <Literal>
                    <ID>Kontrol</ID>
                    <ToolTip>Okunan bilgilerin atanacagi kontrol</ToolTip>
                    <Default>Kontrol.Text</Default>
                </Literal>
           </Declarations>
          <Code Language="csharp"><![CDATA[
            StreamReader sReader = new StreamReader($Konum$, Encoding.GetEncoding("iso-8859-9"), false);
                StringBuilder objSb = new StringBuilder();
                string input = null;
                while ((input = sReader.ReadLine()) != null)
                {
                    objSb.Append(input + "\n");
                }
                sReader.Close();
                $Kontrol$ = objSb.ToString().Replace("\n", System.Environment.NewLine);
           $end$]]>
            </Code>
        </Snippet>
    </CodeSnippet>
</CodeSnippets>


Snippet dosyasını kaydedin ve daha sonra Code View Penceresinde RTextFile yazarak Tab tuşuna basın. Aşağıdaki görüntü oluşacak. 


Son Olarak Snippet'lar için bazı özel durumlar var bunlardan bahsetmek istiyorum.
Visual Basic .Net ortamında kullanılabilecek ve kurulum ile hazır gelen hazır snippet dosya sayısı C# diline göre daha fazladır.
Surround With snippet türünü Visual Basic .Net desteklemez.
Visual Basic .Net ile Reference ve Import tagları ile belirtilen dll ve namespace'ler Code Snippet dosyasının koda dahil edilmesiyle Solution'a otomatik olarak eklenirken C# dilinde bunlar eklenmez el ile eklemeniz gerekiyor.
Code Snippet desteği Visual Studio 2005 ile gelmektedir. Daha önceki sürümlerde bu özellik mevcut değildir.

Bu yazımda code snippet dosyalarını genel olarak incelemeye çalıştım. Daha fazla örneğe ihtiyac duymanız halinde hazır gelen snippet'ları yada farklı kişiler tarafından yazılıp internet üzerinden paylaşılan örnekleri inceleyebilirsiniz.

Mehmet Taşköprü
mtaskopru@gmail.com
http://mehmettaskopru.blogspot.com

 

 
Şifremi Unuttum
Üye Ol

ASP.NET AJAX
ASP.NET AJAX Kitabı

Röportaj Dr. Arzu Baloğlu ile Türkiye ve Bilişim üzerine keyifli bir röportaj...


isarayan.org
Yenibiriş Logo
 
bos bos bos
bos Hakkımızda