PDA

View Full Version : نظر سنجی راجع به پراپرتی ها در #C



bsng110
سه شنبه 05 آذر 1387, 21:54 عصر
هوالحیکم
ضمن عرض سلام و خسته نباشید خدمت مهندسین و برنامه نویسان سایت برنامه نویس
حقیقتش بنده یک تحقیق مهندسی نرم افزار دارم راجع به نحوه به مقایسه مشخصه ها(Properties) در #C و معادل آنها در ++C(یعنی توابع get و set جدا جهت هر صفت) و باید تحلیل کنم که به نظر برنامه نویسان، کدام روش مورد پسند برنامه نویسان می باشد و جهت این منظور قصد داشتم از شما بزرگواران کمک بگیرم.
شرایط سوال:
1- در ++C و زبان های مشابه، جهت دسترسی به یک صفت، تابعی با اعلان ()attributeType getAttribute می نوشتند و جهت مقدار دهی به آن صفت نیز تابعی با امضای (void setAttribute(attributeType variableName می نوشتند(مثلاً جهت فیلد ساعت کلاس زمان، تابع ()int getHour و (void setHour(int Hour را می نوشتند). البته از این روش در #C هم می توان استفاده کرد.
2- در #C جهت این منظور، از مشخصه ها(Properties) استفاده می شود یعنی یک مشخصه تعریف کرده و برای آن set و get را پیاده سازی می کنند:


int Hour
{
get { return hour}
set { hour = value;
}

صورت سوال:
به نظر شما کدام روش بهتر است، چرا؟ هزینه کدام روش بیشتر است؟ کدامیک کاربر پسندانه تر(User friendly) است؟ در نهایت، با توجه به هزینه و user friendly بودن، کدام روش به نظر شما بهتر است؟
ممنون می شوم هر چه سریع تر جواب دهید چرا که باید تا آخر همین هفته نتیجه آن را گزارش دهم. در ضمن، هر چه جامع آماری بیشتر باشد(تعداد پاسخ دهندگان)، گزارش من دقیق تر خواهد بود، پس لطفاً از این سوال به سادگی نگذرید!!!
***ویرایش شده توسط مدیر***
یا علی
حق نگهدارتان

Mehdi Asgari
سه شنبه 05 آذر 1387, 22:31 عصر
سوال اولت اشتباهه. بهتر از نظر چی ؟ اینجور سوالا همیشه جنگ راه میندازه.
اونی که با سی شارپ فکر می کنه میخواد بگه پراپرتی بهتره و یکی دیگه بگه بدتر.
کاربر پسند ؟!
من فکر می کنم پراپرتی ها خوانایی بالاتری دارن (البته اگه با IDE و naming convention پشتیبانی بشن ، وگرنه با فیلد فرقی نخواهند داشت از نظر ظاهر کد)
هزینۀ چندان بالایی نداره پراپرتی (فقط یه فراخوانی متد. که اگه برنامۀ مورد نظر انقدر به پرفورمنس بالا نیاز داره که همین یه فراخوانی می تونه مشکل ساز بشه ، بهتره اصلا به محیط های managed فکر نکنید)

تو اینترنت هم قبلا همچین پست هایی بوده که کافیه سرچ بزنی.
مثلا : http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=130429
http://www.codinghorror.com/blog/archives/000654.html

bsng110
پنج شنبه 07 آذر 1387, 05:36 صبح
هوالحکیم
سلام و خسته نباشید خدمت کاربران عزیز سایت
mehdi311ggg عزیز، سوال اول اشتباه نبود. بیشتر به سلیقه و نظر شخصی افراد بر می گشت. مثل وقتی که شما به مهمانی می روید و از بین سیب و پرتقال روی میز، پرتقال را برداشته و میل می کنید، آیا این کار شما جنگ بر انگیز است؟ خیر، فقط شما از پرتقال بیشتر خوشتان می آید تا سیب! در ضمن، اصلاً قصد راه اندازی جنگ و جدل ندارم، می خواهم به تحقیق مهندسی نرم افزارم پاسخ دهم و نیاز به یک جامعه آماری دارم! همچنین این تاپیک در قسمت #C نوشته شده، پس اکثراً #C کار می کنند و نظرم این بود که ببینم، از بین افرادی که از این ویژگی استفاده کرده اند(و بالطبع به زبان های دیگر مانند ++C یا (نسخه های بدون پراپرتی)VB نیز آشنایی دارند)، کدامیک را می پسندند.
در مورد یکسان بودن پراپرتی با فیلد، از شما که حرفه ای هستید، این حرف بعید است! یک پراپرتی می تواند به همراه قوانین جامعیت باشد و همچنین کپسوله بودن شیء را تظمین می کند اما چنانچه فیلد را مستقیماً دست کاربر بدهیم، کاربر می تواند مقادیر غیر مجاز نیز، داخل آن بریزد و باعث ناسازگاری در حالت شیء بشود بنابراین پراپرتی چنانچه به صورت صحیح استفاده شود، اصلاً با فیلد برابر نیست. در ضمن بهتر بود من در این موارد توضیح نمی دادم تا ذهن کاربران به سمت به خصوصی نرود ولی حالا که بحث به اینجا کشید، بد نیست خاطر نشان کنم که قبلاً این جامعیت توسط متدهای get , set که گفتم و به سبک قدیمی انجام می شد و از وقتی که پراپرتی ها آمدند، این کار توسط متدهای get , set پراپرتی ها انجام می شود.
از نظر هزینه هم من نمی توانم مقایسه ای بکنم چرا که تا آنجایی که من اطلاع دارم، چه روش قدیم و چه روش پراپرتی، هر دو دارای فراخوانی تابع می باشند و به ظاهر هزینه یکسانی دارند و این به شما دوستان بر می گردد که تجربه بیشتری دارید. شما باید بگویید کدام یک پر هزینه تر، یا کم هزینه تر هستند یا اینکه هر دو دارای هزینه یکسان می باشند؟
بابت لینک های خوبی هم که معرفی نموده اید، بسیار بسیار متشکرم. حتماً مطالعه می کنم.
در ضمن، نمی دانم چرا هر مرتبه که به این سایت می آیم، رفتار بدی با من می شود؟ حداقل مدیر این قسمت، به عنوان یک انسان(نه یک برنامه نویس، نه یک دانشجو، نه یک محقق، نه یک ...) به بنده بگوید که چرا لینک مرا پاک نموده است!!! مخالف با کدام قانون شرعی، مدنی .... بود!!! لااقل یک لینکی به قانون مربوطه، یک پیام خصوصی، یک هشداری...!!!
یا علی
حق نگهدارتان

Mehdi Asgari
پنج شنبه 07 آذر 1387, 11:34 صبح
اصولا بحث های برنامه نویسی ، بحث های پرتقال و سیب نیست. بحث مذهبیه


در مورد یکسان بودن پراپرتی با فیلد، از شما که حرفه ای هستید، این حرف بعید است!
گفتم اگه IDE نباشه و مثلا بخوایم با Notepad کد رو بخونیم (از نظر ظاهر)

linux
پنج شنبه 07 آذر 1387, 13:54 عصر
شما اگر مستندات استاندارد کردن C# را بخوانید آنجا کاملا توضیح داده شده است.
http://www.ecma-international.org/publications/standards/Ecma-334.htm

esshahab
جمعه 08 آذر 1387, 14:32 عصر
با سلام
از نظر هزینه که انگار فرقی ندارند(هزینه فراخوانی)
پس پراپرتی که ما را در هنگام استفاده درگیر get و set نمی کند راحتر است.