Yusefnejad

یوسف نژاد

Yusefnejad

یوسف نژاد

تا اینجا (1 و 2 و 3) بحثهای مقدماتی و نحوه نامگذاری اسمبلی آورده شد. در این قسمت نامگذاری فضای نام شرح داده میشه.
علاوه بر تمامی قواعدی که تا الان بهشون اشاره شده، نام فضاهای نام باید طوری انتخاب بشه تا به روشنی به توسعه دهندگان نشون بده که حاوی چه محتواییه.
- نام‌گذاری فضای نام باید از قاعده زیر پیروی کنه:

<Company>.<Technology|Produt|Project>[.<Feature>][.<SubNamespace>]
( < > : اجباری        [ ] : اختیاری ) 
مثال:
Microsoft.VisualStudio
Kara.Lottery.Services.Domain
Kara.Lottery.WinUI.Forms

- باید از روش Pascal Casing استفاده بشه. البته برای برندهای خاص که از casing دیگه ای استفاده میشه، باید از اون پیروی بشه و از روش استاندارد نامگذاری فضای نام تخطی بشه تا اصالت صاحب کتابخونه حفظ بشه!

- باید برای جلوگیری از یکی شدن نام کتابخونه های تولید شده توسط شرکتهای مختلف، نام شرکت به عنوان پیشوند به ابتدای نام فضاهای نام اضافه بشه. برای مثال اجزای مختلف کتابخونه های مرتبط با Microsoft Office تولید شده توسط مایکروسافت در دات نت در فضای نام Microsoft.Office و زیرمجموعه هاش قرار دارند.

در انتخاب نام شرکت برای پیشوند فضای نام باید از نام رسمی شرکت استفاده بشه تا از اختلافات و سردرگمی های احتمالی در آینده جلوگیری بشه. مثلا اگر به جای Microsfot از MS در نامگذاری فضاهای نام اشاره شده استفاده میشد، این احتمال وجود داره که در شرکت دیگه ای که از واژه MS برای اختصار عبارتی دیگر استفاده میشه، اختلالات و کانفلیکتهایی پیش بیاد.

- در تعریف فضاهای نام باید به وابستگی بین اونا توجه بشه. به عنوان نمونه، اشیای درون یک فضای نام نباید به اشیای درون فضای نام یکی از زیر مجموعه هاش (فضاهای نام فرزند) وابسته باشه. مثلا نباید در فضای نام System اشیایی وجود داشته باشه که به اشیای درون فضای نام System.UI وابسته باشن.

- بهتره از نام‌های جمع برای فضای نام استفاده بشه. مثلا به جای استفاده از Kara.Pos.Domain.Entity از Kara.Pos.Domain.Entities یا System.Collections به جای System.Collection استفاده بشه. البته برای عناوین مخفف یا برندهای خاص نباید از این قرارداد پیروی کرد. مثلا نباید از نام IOs استفاده بشه.

- بهتره از عنوانی پایدار و مستقل از نسخه محصول برای بخش دوم نام یک فضای نام استفاده بشه. یعنی این عنوان با گذر زمان و تغییر و تحولات در محتوای محصول و یا تولیدکننده نباید تغییر کنه.

رعایت این قاعده به این معنیه که برای نامگذاری فضاهای نام نباید از نامهای باحال و امروزی و نو! که معمولا افراد قسمتهای بازرگانی و تبلیغاتی شرکت اونا رو پیشنهاد میدن استفاده بشه. از این عناوین که معمولا در نامگذاری محصولات و نسخه های مختلف اون زیاد استفاده میشه و بیشتر جنبه بازاریابی دارند، به این دلیل نباید استفاده بشه که نام فضاهای نام در کدهای مشتریان و استفاده کنندگان از کتابخونه تولیدی حک شدند و توسعه دهندگان مختلف با اونا کار کردن و آشنا شدن. بنابراین تغییر اونا به دلایل تبلیغاتی و بازاریابی کاری غیرفنی و اشتباه هست.

مثال:

Microsoft.Reporting.WebForms

در این نمونه قسمت دوم نام (Reporting) به گونه ای انتخاب شده که در آینده با هرگونه تغییر و تحول به وجود آمده، مفهومش مستقل و بدون تغییر می مونه.

- نباید از ساختار اداری و سازمانی شرکت در نامگذاری فضای نام استفاده بشه، چون نام این گروه ها و ساختارها به مرور زمان و تغییرات و تحولات بوجود اومده در شرکت براحتی تغییر میکنن که چنین اتفاقی نباید برای نام فضاهای نام بیفته. بنابراین نامگذاری فضاهای نام رو باید حول تکنولوژی و محتوای موجود در اون مدیریت کرد و لاغیر!

در نسخه های اولیه ASP.NET (نسخه 1.0) یه سری کنترل که برای رندر در دستگاههای موبایل طراحی شده بودن، به دلیل اینکه بخش پیاده ساز این قسمت در گروهی مجزا قرار داشت، در فضای نام System.Web.MobileControls قرار داده شدن. بعدها و با تغییر ساختار شرکت و تغییر و تحولات پس از اون، تصمیم گرفته شد تا این کنترلها در نسخه های بعدی به فضای نام System.Web.Controls انتقال داده بشن. این مثال که به گفته خود توسعه دهندگان دات نت از رخدادنش پشیمون هستن، به خوبی نشون میده که استفاده از ساختار سازمانی شرکت در نامگذاری فضاهای نام کاری اشتباهه.

- نباید از عناوینی یکسان برای فضای نام و اشیای درون آن استفاده بشه. مثلا نباید کلاسی با عنوان Settings در فضای نام Kara.Pos.Settings وجود داشته باشه.

- نباید از عناوین یکسان برای اشیای درون فضاهای نام متفاوت در یک برنامه استفاده بشه. مثلا نباید دو کلاس با نام Package در فضاهای نام Kara.Pos.Domain و Kara.Pos.Core وجود داشته باشه.


ناسازگاری نام نوع (Type)ها و فضای نام

همونور که قبلا هم توضیح داده شد، از فضای نام برای دسته بندی منطقی اجزای یک برنامه استفاده میشه. علاوه بر این کاربرد مهم، فضاهای نام برای از بین بردن مشکل یکسان بودن نام انواع (Types)، که در صورت استفاده از کتابخونه های مختلف احتمال بوجود اومدنش هست، نیز بکار میرن.
البته این ویژگی نباید باعث بشه تا برای نامگذاری اجزای مختلف یک کتابخونه در حال توسعه، عناوینی مشابه و یکسان بکار بره. درواقع برنامه نویسا نباید برای استفاده از اجزای کتابخونه نیاز به بررسی و تایید نام اونا و یا استفاده از نام کاملشون (نام فضای نام به همراه نام نوع) داشته باشن و باید تنها با استفاده از نام بتونن به نوع موردنظرشون دسترسی داشته باشن.
برای جلوگیری از بوجود اومدن این نوع ناسازگاری ها قواعد مشخصی برای انواع مختلف فضاهای نام وجود داره. براین اساس فضاهای نام به دسته های زیر گروهبندی میشن:
- فضای نام اپلیکیشن مدل (Application model)
- فضای نام زیربنایی (Infrastructure)
- فضای نام هسته یا پایه (Core)
- فضاهای نام تکنولوژیکی (Technology)

فضای نام اپلیکشن مدل (Application model namespace)
فضاهای نامی که متعلق به یک برنامه خاصن، عموما به همراه هم استفاده میشن، اما به ندرت به همراه فضاهای نام سایر برنامه ها بکار میرن. مثلا فضای نام System.Windows.Forms تقریبا اصلا به همراه فضای نام System.Web.UI استفاده نمیشه. گروه های زیر نمونه های مناسبی برای این نوع از فضاهای نام هستن:
System.Windows*
System.Web.UI*
- همونطور که قبلا هم اشاره شد، برای نامگذاری اجزای موجود در فضاهای نام اپلیکیشن مدل (چون زیاد با هم استفاده میشن)، نباید از نام های یکسانی استفاده بشه.

فضای نام زیربنایی (Infrastructure namespace)
این گروه از فضاهای نام شامل مواردی میشن که در طول توسعه اپلیکیشن کمتر مورد استفاده قرار میگیرن. مثلا فضاهای نامی که به عبارت Design. ختم میشن معمولا برای تولید ابزارهای توسعه بکار میرن. پرهیز از ناسازگاریهای اشاره شده تو این فضاهای نام چندان ضروری نیست. مثل System.Windows.Forms.Design.

فضای نام هسته یا پایه (Core namespace)
فضاهای نام هسته (مثلا تمامی فضاهای نام پایه ای System)، شامل پیاده سازی های اصلی و پایه ای کتابخونه ها هستن و تقریبا شامل همه فضاهای نام به غیر از فضاهای نام اپلیکیشن مدل و زیربنایی هستن. مثل System, System.IO, System.Xml, System.Net.
- نباید از نامهایی یکسان با نام اجزای فضاهای نام هسته در نامگذاری سایر اجزای برنامه استفاده بشه. مثلا نباید کلاسی با نام Stream تولید بشه، چون با نام کلاس System.IO.Stream که بسیار هم رایجه، ناسازگاره.

فضای نام تکنولوژی (Technology namespace)
این گروه شامل فضاهایی نامی میشن که دو قسمت اول نامشون (<Component>.<Technology>) یکسان باشه، مثل Microsoft.Build.Utilities و Microsoft.Build.Task. یکسان نبودن نام اجزایی که متعلق به یک فضای نام تکنولوژی هستن بسیار مهمه.
- نباید در نامگذاری اجزای موجود در فضاهای نام زیرمجموعه یک فضای نام تکنولوژی از عناوینی یکسان استفاده بشه.
- نباید از نامهای یکسان برای اجزای فضاهای نام تکنولوژی و اپلیکیشن مدل استفاده بشه، مگر اینکه فضای نام تکنولوژی قرار نباشه در فضای نام اپلیکیشن مدل موردنظر استفاده بشه.
برای مثال نباید نوعی با نام Binding در فضای نام Microsoft.CSharp تولید بشه، چون این نام در فضای نام System.Windows.Forms استفاده شده.

.: در ادامه نامگذاری «نوع» (Type) بحث میشه.

:.
  • یوسف نژاد

NET Framework.

NET.

نامگذاری

Naming

نظرات  (۱)

بخش‌هایی از این نظر که با * مشخص شده، توسط مدیر سایت حذف شده است

سلام. بسیار عالی. ***** ******* * ********* **** ***** **** ***** ******** **** ****** **** **** ***** ** **** **** ****** ****** ** ****** * **** **** ******** ** **** ***** ******* *** **** ***** **** **** * **** ****** * ***** *** ** **** ** *** ** ******* ** **** ********** ******* ***** **** *** *** ** **** ***** **** ***** **** ********* ** **** *******

پاسخ:
مرسی.

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی
آخرین نظرات