PDA

View Full Version : نام گذاری اصولی



saed2006
دوشنبه 30 فروردین 1389, 09:49 صبح
چند تا کلاس دارم که هر کدوم واسه خودش یک مفهموم a رو به عنوان یک peroperty داره
یعنی کلاس X یه Peroperty داره از نوع a با مشخصه های خاص خودش
همینطور دیگر کلاس ها
یه روش نامگذاری اینه که اول نام هر Peroperty نام کلاس مربوطه رو هم بزارم
و روشی دیگه اینکه تمام کلاس ها دارای Peroperty
a باشن روش درست کدومه؟

Rejnev
دوشنبه 30 فروردین 1389, 10:05 صبح
من دومی رو انتخاب میکنم.
در طراحی دات نت هم همین کار رو کردن.
وقتی اسم کلاس پشت خصوصیت هست(قبل از نقطه) دیگه نیازی نیست که دوباره اسم کلاس رو پشت خصوصیت ذکر کنید.

saed2006
دوشنبه 30 فروردین 1389, 10:11 صبح
جای تعریف a توی خود کلاس X هست یا یک کلاس مجزا برای تعریف مفاهیم a تمام کلاس ها

Rejnev
دوشنبه 30 فروردین 1389, 10:22 صبح
حالا متوجه شدم.
شما میخواید از x ارث بری کنید.
باز هم فرقی نمیکنه. اگه مشترک هستند که بهتره در کلاس پایه تعریف بشه و در فرزندان از x ارث بری کنید.
یعنی شد x با پروپرتی a و فرزندان با همین پروپرتی به صورت ارث بری شده.

saed2006
دوشنبه 30 فروردین 1389, 10:28 صبح
منظور من چیز دیگری هست
کلاس ها تشکیل شدن از یک سری peroperty struct enum
راه اصولی تعریف تمام اینها در کلاسی به نام structS هست یا نه
هر کلاس peroperty struct enum های خاص خود رو داشته باشه

Rejnev
دوشنبه 30 فروردین 1389, 10:38 صبح
گفتم که اگه مشترکن و توی همه کلاسها یکسان هستند بهتره توی همون به قول خودتون کلاس strucS تعریف بشن تا از تکرار کد جلوگیری بشه.
مثلا اگه یک کلاس به نام a و کلاس دیگه به نام b دارید و این دو کلاس در یک خصوصیت مثل name با هم مشترک هستند یعنی name از یک نوع و با یک هدف ایجاد شده، بهتره یک کلاس پایه تعریف کنید که name رو داره و a و b رو از اون ارث بری کنید.
کجاش رو سوال دارید؟

saed2006
دوشنبه 30 فروردین 1389, 10:46 صبح
تا اینجا اوکی
جواب سوال اولم رو گرفتم
سوال:
کلاس X دارای یک struct یک enum و یک کلاس a هست
کلاس Y دارای دو struct دو enum و یک کلاس b هست

اگر یک کلاس Z تعریف کنم و تمام :
struct enum و a کلاس X
و struct enum و b کلاس Y
در اون تعریف کنم اصولیست یا خیر؟
کلاس z اینطوری دارای 3 enum 3 struct و دو کلاس خواهد بود

saed2006
دوشنبه 30 فروردین 1389, 11:10 صبح
علاوه بر توضیحات دوستان و برای جمع‌بندی:
انواع شمارشی (enumerated types) از مجموعه‌ای از ثابتهای عددی تشکیل شده‌اند و بهتر است به آنها property (خاصیت) نگوییم.
۱) enum را در یک فضای نام اختصاصی ایجاد کنید:


namespace EnumType1
{
enum EnumType1
{
First,
Last
};
}
namespace EnumType2
{
enum EnumType2
{
First,
Last
};
}
برای دسترسی به اعضای آن:


EnumType1::First
EnumType1::Last
EnumType2::First
EnumType2::Last
۲) روش دیگر همان است که خودتان نیز گفتید، نام آن را در کنار اعضای آن بنویسید:


enum EnumType1
{
EnumType1_First,
EnumType1_Last
};
enum EnumType2
{
EnumType2_First,
EnumType2_Last
};
برای دسترسی به اعضای آن:


EnumType1_First
EnumType1_Last
EnumType2_First
EnumType2_Last
۳) روش دیگر این است که از قابلیت استاندارد جدید ++C (معروف به C++‎‎‎0x) استفاده کنید:


enum class EnumType1
{
First,
Last
};
enum class EnumType2
{
First,
Last
};
برای دسترسی به اعضای آن:


EnumType1::First
EnumType1::Last
EnumType2::First
EnumType2::Last
بنابراین با تعریف نوع بصورت enum class، اعضای انواع enum با هم تداخل نخواهد داشت.


با این توضیحات مشخص شد که تمام enum ها داخل یک کلاس مخصوص enum ذخیره بشن اوکی
اما ایا این قانون برای مشخصه های دیگر جز enum هم صادق هست؟
مثلا برای struct ها
یا کلاس هایی که فقط peroperty دارن و متد یا سازنده ای در انها نیست

Rejnev
دوشنبه 30 فروردین 1389, 11:15 صبح
کلاس a که داخل X وجود داره ارث بری شده یا یک فیلد است؟



class x:a
----or
class x
{
Public A a=new A();
}

saed2006
دوشنبه 30 فروردین 1389, 11:23 صبح
کلاس a که داخل X وجود داره ارث بری شده یا یک فیلد است؟



class x:a
----or
class x
{
Public A a=new A();
}




اصلا فرض بر اینه که مفاهیم جدا هستند و ارث بری هم نشدن

PC2st
دوشنبه 30 فروردین 1389, 11:35 صبح
با این توضیحات مشخص شد که تمام enum ها داخل یک کلاس مخصوص enum ذخیره بشن اوکی
اما ایا این قانون برای مشخصه های دیگر جز enum هم صادق هست؟
مثلا برای struct ها
یا کلاس هایی که فقط peroperty دارن و متد یا سازنده ای در انها نیست این حالت برای زبان ++C/C و فقط برای enum ها صادق است.
متاسفانه بعد از ارسال مطلب متوجه به بی‌ربط بودن آن شدم و شما هم آن را نقل قول کردید، پس دیگر راه فراری نیست :لبخند::لبخند:

saed2006
دوشنبه 30 فروردین 1389, 11:40 صبح
این حالت برای زبان ++C/C و فقط برای enum ها صادق است.
متاسفانه بعد از ارسال مطلب متوجه به بی‌ربط بودن آن شدم و شما هم آن را نقل قول کردید، پس دیگر راه فراری نیست :لبخند::لبخند:

من بعضی از کامپونت های معروف مثل REALDWG رو دیدم که تمام enum ها رو جدا کرده پس این روش اصولی هست؟؟؟