با سلام
لطفا یکی از عزیزان فرق بین module و calass mudole و Propertyرو توی وی بی شرح بده
و بگه از هر کدوم در کجا باید استفاده کرد
و ایا یک تابع میتونه چند تا ارایه رو به خروجی ببره یا حتما باید اون ارایه ها متغییر عمومی بشند
و استفاده زیاد از متغییر های عمومی جایز است یا خیر
ممنون از همکاریتون
والا این سوالی که پرسیدی خودش یک ترم کامل وی بی هست!
اگر بخوایم واقعا فرقشون رو بگیم باید بیام کاربرد هر کدوم رو گفت بعد روش بحث کرد.
اما من به رقم تجربه چندین ساله وی بی که دارم (و البته بی سوادیم) مهمترین فرق بین ماژول و کلاس کاژول رو در این می دونم:
شما با کلاس ماژول این توانایی رو داری که بخش بزرگی از کد و داده ها رو در هر زمان مورد نظرت درون حافظه برگزاری کنی و هر موقع کارت با اون بخش تموم شد اون قسمت حافظه رو (کلاش ماژول مورد ارجاء) رو ببندی و برنامه رو سبک کنی.
مثلا فرض کنیم برنامموم می خواد یک تصوریر از کاربر بگیره. به جای اینکه بیایم تو کد های مرجع اصلی (ماژول هامون) اون کد دریافت, تجزیه, تحلیل و ذخیره تصویر رو قرار بدیم, میام و از یک کلاس ماژول (حتی آماده) استفاده می کنیم.
هر وقت لازم بود اون کلاس ماژول رو فراخوانی می کنیم و بعد از اتمام کارمون اون رو می بندیم.
اما اگر اون کد مربوط تصویر درون ماژول برنامه باشه درسته که برای همشه در درسترس هست اما برنامه ما باید هزینه حافظه و پروسس اضافه اون رو هم به دوش بکشه.
اما کاربرد اصلی همه این ها برای این هست که شما مدیرت داشته باشی روی کد های برنامت. یعنی اینکه اگر قسمتی از کدت قابلیت این رو داره که کلاس کاژول بشه خوب کلاس ماژولش کن و اون کد ها رو از ماژول ها و یا فرم ها خارج من.
خود کلاس ماژول و یا ماژول برای این هم هست که حجم کد ها کاهش پیدا کنه. شما به جای اینکه بیای یک تایع رو درون هر 10 تا فرم برنامت بنویسی و برای هر فرم یک تابع اختصاصی داشته باشی,
باید بای و یک تایع کلی برای همه فرم ها بنویسی و اون رو درون ماژول یا کلاس ماژول قرار بدی.
Property برای این هست که کاربر برنامه نویس (نه کاربر مستقیم برنامه تولیدی نهایی) بتونه خیلی راحت تر و سریع تر خصوصیات کنترل هایی که می سازیم رو تغییر بده و یا اطلاعات مازاد درباره خود خصوصیت و یا محدوده داده های اون ها دریافت کنه.
" ایا یک تابع میتونه چند تا ارایه رو به خروجی ببره یا حتما باید اون ارایه ها متغییر عمومی بشند"
این سوال هم کمی دشوار هست!
بستگی داره اون تابع در کجا قرار داشته باشه ×در ماژول× ×یا کلاس ماژول× ×یا فرم× ×یا یوز کنترل× مثلا!
باز بستگی داره اون آرایه از نوع دینامیک هست یا ثابت!
باز بستگی داره Type آرایه چی باشه!
و باز به قول شما بستگی داره اون متغییر عمومی باشه یا خصوصی که در شرایط مختلف اینکه تابع ما در کجا قراره استفاده بشه این هم حالات و محدودیت های خاص خودش و خواهد داشت!
راستش یکی دو ماه پیش یک مقاله مفصل در این باره خوندم خیلی خیلی عالی و تخصصی بود که کاملا جواب این سوال شما رو می داد. (خدا کنه وقت کنم ترجمش کنم بزارم روی سایت)
"استفاده زیاد از متغییر های عمومی جایز است یا خیر"
سوالت رو به شکل زیر برداشت کردم:
"استفاده زیاد از متغییر های عمومی درون پروژه جایز است یا خیر"
خوب کاربرد متغییر عمومی چیه؟
- این هست شما بتونید داده هایی رو در سراسر پروژه به اشتراک بزارید.
خوب پس وقتی یک داده (یا به طور مستقیم یک متغییر عمومی) فقط قراره در همین یک ماژول استفاده بشه, پس بهتره من اون رو برای این ماژول خصوصی کنم و دسترسی دیگران رو بهش قطع...
حالا اگر شما داده ها یی رو دارید (متغییر هایی) که باید در دسترس همه باشه (یا مثلا سه یا چهار فرم یا ماژول و کلاس ماژول و ... بهش احتیاج دارند) مصلما باید سراسری و عمومی بشه. حالا می خواد هر تعداد که باشه فرقی نمی کنه.
اما اینکه شما بتونید تعداد متغییر ها رو کنترل کنید, یا مثلا با عبور فقط اون متغییر هایی که داده های خروجی اصلی رو در بر دارند (از یک تایع یا Sub), یا یکی کردن متغییر ها با استفاده از روش های کنترل حافظه, .... این ها همون مدیریت برنامه نویس روی کد و پروژه هست که یک برنامه نویس به مرور زمان باید فرا بگیره و ازشون استفاده کنه تا در پروژهای بزرگ آینده با موفقیت کار رو انجام بده.