PDA

View Full Version : آیا استفاده از FullName یک کلاس تضادی با Clean Code دارد؟



mmbguide
جمعه 26 مرداد 1403, 20:58 عصر
سلام

در بکارگیری کلاس ها، ثابت ها و... علاقه زیادی دارم تا از نام کامل استفاده کنم و در بیشتر کلاس ها اصلا using ندارم. اگرچه که خطوط کمی طولانی میشن و اجبارا برای خوانایی بهتر خطوط را میشکنم ولی در زمان مرور کدها کمی راحت تر هستم. سوالم اینه که آیا این کار تضادی با کد نویسی تمیز داره یا پیشنهاد میکنید برای خلوت کردن کدها حتما فضای نام را using کنم؟ البته در استفاده از using هم یک مشکل وجود داره. تمام Entityهایی که ساختم دارای Schema هستند و تمامی Modelها نیز در پوشه هایی هم نام با Schema قرار داده شده اند. برای مثال من دو کلاس در مسیرهای زیر دارم (Application = schema):


Models.Output.Application.ActionMethods.ActionMeth od();
Domain.Entities.Application.ActionMethods.ActionMe thod();


اگر فضای نام را using کنم و بخوام در یک متد از هر دو کلاس نمونه سازی کنم خطای زیر صادر میشه (Ambiguous reference):

using Ces.Caspian.Models.Output.Application.ActionMethod s;
using Ces.Caspian.Domain.Entities.Application.ActionMeth ods;

{
var a = new ActionMethod();
var b = new ActionMethod();
}

//'ActionMethod' is an ambiguous reference between 'Ces.Caspian.Domain.Entities.Application.ActionMet hods.ActionMethod' and 'Ces.Caspian.Models.Output.Application.ActionMetho ds.ActionMethod'


مگر آنکه در زمان نمونه سازی از نام کامل استفاده کنم:


var a = new Models.Output.Application.ActionMethods.ActionMeth od();
var b = new Domain.Entities.Application.ActionMethods.ActionMe thod();


تمامی کلاس هایی که در پروژه Model قرار دارند همان نقش DTO را دارند. چه به عنوان ورود اطلاعات و چه به عنوان خروجی. آیا نامگذاری Modelها اشکال دارند؟ در واقع سعی کردم از افزودن پیشوند و پسوند اضافه به نام Modelها پرهیز کنم.

تشکر

ROSTAM2
جمعه 26 مرداد 1403, 21:21 عصر
سلام

در بکارگیری کلاس ها، ثابت ها و... علاقه زیادی دارم تا از نام کامل استفاده کنم و در بیشتر کلاس ها اصلا using ندارم. اگرچه که خطوط کمی طولانی میشن و اجبارا برای خوانایی بهتر خطوط را میشکنم ولی در زمان مرور کدها کمی راحت تر هستم. سوالم اینه که آیا این کار تضادی با کد نویسی تمیز داره یا پیشنهاد میکنید برای خلوت کردن کدها حتما فضای نام را using کنم؟ البته در استفاده از using هم یک مشکل وجود داره. تمام Entityهایی که ساختم دارای Schema هستند و تمامی Modelها نیز در پوشه هایی هم نام با Schema قرار داده شده اند. برای مثال من دو کلاس در مسیرهای زیر دارم (Application = schema):


Models.Output.Application.ActionMethods.ActionMeth od();
Domain.Entities.Application.ActionMethods.ActionMe thod();


اگر فضای نام را using کنم و بخوام در یک متد از هر دو کلاس نمونه سازی کنم خطای زیر صادر میشه (Ambiguous reference):

using Ces.Caspian.Models.Output.Application.ActionMethod s;
using Ces.Caspian.Domain.Entities.Application.ActionMeth ods;

{
var a = new ActionMethod();
var b = new ActionMethod();
}

//'ActionMethod' is an ambiguous reference between 'Ces.Caspian.Domain.Entities.Application.ActionMet hods.ActionMethod' and 'Ces.Caspian.Models.Output.Application.ActionMetho ds.ActionMethod'


مگر آنکه در زمان نمونه سازی از نام کامل استفاده کنم:


var a = new Models.Output.Application.ActionMethods.ActionMeth od();
var b = new Domain.Entities.Application.ActionMethods.ActionMe thod();


تمامی کلاس هایی که در پروژه Model قرار دارند همان نقش DTO را دارند. چه به عنوان ورود اطلاعات و چه به عنوان خروجی. آیا نامگذاری Modelها اشکال دارند؟ در واقع سعی کردم از افزودن پیشوند و پسوند اضافه به نام Modelها پرهیز کنم.

تشکر

سلام به همه می تونی اون NameSpace ها رو نامگذاری کنید. مثلاً:


using sd= System.Diagnostics;


استفاده:


private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
sd.Process.Start("https://aparat.com/vbloverprogrammer/");
}


Namespaces - C#‎ language specification | Microsoft Learn (https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/language-specification/namespaces)

mmbguide
شنبه 27 مرداد 1403, 21:37 عصر
در جایی خواندم که بهتره تمام این usingها بصورت static در یک یا چند فایل یکبار در یکجای برنامه تعریف شود و نیازی نباشد که در هر کلاس تکرار شود چون ممکن است از یک Model در چندین کلاس استفاده شده باشد و نیازی به تعریف using نباشد. اگر در این خصوص توضیح و تجربه ای دارید ممنون میشم به اشتراک بگذارید. تعداد این مدل ها بسیار زیاد هستند.
تشکر

ROSTAM2
یک شنبه 28 مرداد 1403, 06:03 صبح
در جایی خواندم که بهتره تمام این usingها بصورت static در یک یا چند فایل یکبار در یکجای برنامه تعریف شود و نیازی نباشد که در هر کلاس تکرار شود چون ممکن است از یک Model در چندین کلاس استفاده شده باشد و نیازی به تعریف using نباشد. اگر در این خصوص توضیح و تجربه ای دارید ممنون میشم به اشتراک بگذارید. تعداد این مدل ها بسیار زیاد هستند.
تشکر

using directive - C#‎ reference | Microsoft Learn (https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/using-directive)

MSBuild properties for Microsoft.NET.Sdk - .NET | Microsoft Learn (https://learn.microsoft.com/en-us/dotnet/core/project-sdk/msbuild-props#using)