در مقاله
دوم سري تسهيل كدنويسي در ويژوال استوديو، در ارتباط با
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 مي توانيد از آن استفاده كنيد:
