چگونه Code Snippet هاي اختصاصي توليد كنيم؟
گروه: .NET C# Visual Basic
تاریخ ثبت: ۸۶/۲/۲۹
نویسنده: ابوالفضل حسن الدين

در مقاله دوم سري تسهيل كدنويسي د

در مقاله دوم سري تسهيل كدنويسي در ويژوال استوديو، در ارتباط با  Code Snippet ها مفصلا صحبت كرديم.كساني كه با Code Snippetها آشنايي ندارند مي توانند مقاله مربوطه را مطالعه كنند. در اين مقاله روش ايجاد  Code Snippetهاي اختصاصي را توضيح مي دهيم.

 

مديريت كد  Snippet هاي موجود

براي اينكه بتوانيد Code Snippet هاي موجود را مديريت كنيد، از منوي Tools گزينه Code Snippets Manager را انتخاب كنيد.

 

 تا پنجره اي مانند شكل ظاهر شود:

 

همانطور كه در شكل مي بينيد، در بخش Code Snippet Manager مي توانيد زبان مورد نظر خود را انتخاب، گروه هاي Code Snippet را مديريت كنيد، گزينه جديدي به ليست Code Snippet ها اضافه و يا برخي از آن ها را در صورت تمايل حذف نماييد.

 

ساختار Code Snippet ها

Code Snippet ها ساختار XMLي دارند. (با پسوند snippet) به نمونه از Code Snippet موجود در ويژوال استوديو كه براي ايجاد class  به كار مي رود، توجه كنيد:

 

همانطور كه مشاده مي كنيد، تعريف Code Snippet شامل تگ هاي مشخصي است.براي نوشتن Code Snippet هاي اختصاصي نيازي نيست كه به طور كامل با ساختار XML آشنا باشيد.در ادامه تگ هاي ساختار Code Snippet را شرح مي دهيم.

 

تگ هاي Code Snippet ها

فايل هاي نگهدارنده Code Snippet شماي ( schema ) تعريف شده و استانداردي دارند كه تگ مربوطه مي بايست در ابتداي تعريف فايل Code Snippet به آن اضافه شود به صورت زير:

<CodeSnippets  xmlns = "http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">

</CodeSnippets>

پس از اضافه كردن شما ( schema ) تگ Code Snippet با ذكر فرمت آن ( به صورت اختياري ) قرار مي گيرد.

<CodeSnippet Format="1.0.0">

</CodeSnippet>

تگ Code Snippet خود شامل دو زيرتگ اصلي است :

<Header>

</Header>

<Snippet>

</Snippet>

جدول زير، تگ هاي تشكيل دهنده Header را نشان مي دهد :

Child Elements of Header Element

Element

Description

Author

Optional element.

The name of the person or company that authored the code snippet. There may be zero or one Author elements in a Header element.

Description

Optional element.

A description of the code snippet. There may be zero or one Description elements in a Header element.

HelpURL

Optional element.

A URL that contains more information about the code snippet. There may be zero or one HelpURL elements in a Header element.

Keywords

Optional element.

Groups Keyword elements. There may be zero or one Keywords elements in a Header element.

Shortcut

Optional element.

Specifies the shortcut text that can be used to insert the snippet. There may be zero or one Shortcut elements in a Header element.

SnippetTypes

Optional element.

Groups SnippetType elements. There may be zero or one SnippetTypes elements in a Header element. If there are no SnippetTypes elements, the code snippet is always valid.

Title

Required element.

The friendly name of the code snippet. There must be exactly one Title element in a Header element.

 

در بين تگ هاي ذكر شده در بالا تگ SnippetTypes نوع Code Snippet  را مشخص مي كند كه مي تواند يكي از مقادير زير را اختيار كند:

                 SurroundsWith: allows the code snippet to be placed around a selected piece of code.

                 Expansion: allows the code snippet to be inserted at the cursor.

                 Refactoring: specifies that the code snippet is used during Visual C# refactoring. Refactoring cannot be used in custom code snippets.

جدول زير نيز  زيرتگ هاي Snippet  را نشان مي دهد:

Child Elements  of Snippet Element

Element

Description

Code

Required element.

Specifies the code that you want to insert into a documentation file. There must be exactly one Code element in a Snippet element.

Declarations

Optional element.

Specifies the literals and objects that make up the parts of a code snippet that you can edit. There may be zero or one Declarations elements in a Snippet element.

Imports

Optional element.

Groups individual Import elements. There may be zero or one Imports elements in a Snippet element.

References

Optional element.

Groups individual Reference elements. There may be zero or one References elements in a Snippet element.

 

تك Declarations يكي از تگ هاي مهم اختياري است كه زيرتگ هاي آن در اين جدول نشان داده شده اند:

Child Elements of Declarations

Element

Description

Literal

Optional element.

Defines the literals of the code snippet that you can edit. There may be zero or more Literal elements in a Declarations element.

Object

Optional element.

Defines the objects of the code snippet that you can edit. There may be zero or more Object elements in a Declarations element.

 

با توجه به مطالب گفته شده، يك Code Snippet مي تواند شامل اين زيرتگ ها � كه اغلب اختياري اند- باشد:

<Header>

  <Title>... </Title>

  <Author>... </Author>

  <Description>... </Description>

  <HelpUrl>... </HelpUrl>

  <SnippetTypes>

    <SnippetType>... </SnippetType>

    <SnippetType>... </SnippetType>

  </SnippetTypes>

  <Keywords>... </Keywords>

  <Shortcut>... </Shortcut>

</Header>

<Snippet>

  <References>

    <Reference>... </Reference>

  </References>

  <Imports>

    <Import>... </Import>

  </Imports>

  <Declarations>

    <Literal>... </Literal>

    <Object>... </Object>

  </Declarations>

  <Code>... </Code>

</Snippet>

 

توليد Code Snippet هاي اختصاصي

حال كه ساختار  Code Snippet را به صورت كامل شرح داديم، نحوه توليد Code Snippet اختصاصي را بيان مي كنيم.براي ايجاد يك Code Snippet از منوي File>New>File� يك فايل XML خالي ايجاد كنيد:

 

پس از ايجاد شدن فايل، شماي (schema) مربوط به Code Snippet را به آن اضافه كنيد:

<CodeSnippets  xmlns = "http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">

</CodeSnippets>

پس از اضافه كردن شما (schema)،  مي توانيد از توانايي هاي auto complete محيط ويژوال استوديو استفاده نماييد.خواهيد ديد كه در هر تگ، با تايپ علامت �<�، auto complete ظاهر مي شود وتنها كافيست كه زيرتگ مورد نظر را انتخاب كنيد مانند شكل زير:

 

زيرتگ هاي header با توجه به نوع  Code Snippet متغير است و بنا به نياز مي توانيد آن ها را اضافه كنيد.

به تگ Snippet كه براي توليد كلاس (class) در ويژوال استوديو تعريف شده است دقت كنيد:

اگر با استفاده از Code Snippet مربوط به class، بخواهيد كد توليد كنيد، خروجي به شكل زير خواهد بود:

براي رزرو كردن نام متغير، از تگ Literal استفاده كنيد.اين تگ شامل اين زيرتگ ها است:

Child Elements of Literal Element

Element

Description

Default

Required element.

Specifies the literal's default value when you insert the code snippet. There must be exactly one Default element in a Literal element.

Function

Optional element.

Specifies a function to execute when the literal receives focus in Visual Studio. There may be zero or one Function elements in a Literal element.

ID

Required element.

Specifies a unique identifier for the literal. There must be exactly one ID element in a Literal element.

Tooltip

Optional element.

Describes the expected value and usage of the literal. There may be zero or one Tooltip elements in a Literal element.

 

دقت كنيد كه در محدوده تعريف كد از دو توكن $selected$ و $end$ استفاده شده است.توكن $selected$ در مواردي به كار مي رود كه شما بخواهيد Code Snippet توليد شده، از نوع SurroundsWith باشد.در مقاله دوم اشاره كرديم كه مي توان با انتخاب كد و كليك راست بر روي آن، قالب آماده را از منوي Surround With� درخواست كرد بطوريكه كد انتخاب شده را دربرگيرد.توجه داشته باشيد كه اگر بخواهيد كد انتخاب شده با احاطه شدن، حذف نشود مي بايست توكن $selected$ به تعريف شما اضافه گردد.در غير اينصورت كد انتخاب شده به هنگام احاطه شدن توسط code snippet انتخابي حذف خواهد شد.توكن $end$ نيز موقعيت مكان نما را بعد از ورود به محدوده Code Snippet مشخص مي كند.

 

نحوه ثبت Code Snippet اختصاصي

پس از اينكه Code Snippet مورد نظر را تعريف كرديد، لازم است آن را ذخيره كنيد.از منوي File، گزينه  Save As�را انتخاب كنيد؛از ديالوگ ذخيره فايل ظاهر شده، پسوند Snippet Files را براي فايل XML خود انتخاب و سپس با وارد كردن نام مورد نظر آن را ذخيره نماييد.

پس ازينكه فايل Code Snippet را ذخيره كرديد دوباره از منوي Tools گزينه Code Snippets Manager را انتخاب كنيد.براي اضافه كردن Code Snippet خود به Code Snippetهاي موجود، روي دكمه Import كليك و مسير فايل Code Snippet ذخيره شده خود را انتخاب كنيد.

 

پس از اضافه كردن Code Snippet مي توانيد از آن استفاده كنيد:

 


Copyright © 2006 - 2011 All Rights Reserved.
Please direct your questions or comments to