PDA

View Full Version : راهی برای کاهش حجم کدها نیست؟



Salar.Shayegan
سه شنبه 11 تیر 1392, 16:25 عصر
سلام
دوستان راهی برای کاهش حجم کدها در ویژوال بیسیک وجود دارد؟
مثلا" میشه رویداد ها رو توی یه ماژول جدا ریخت؟
(البته فانکشن ها و سابهای فرعی رو میدونم که میشه توی ماژول ریخت و بعدن آنها را فراخوانی کرد... اما در مورد رویداد ها چی؟)

ممنون

mehran901
سه شنبه 11 تیر 1392, 22:35 عصر
سلام
دوستان راهی برای کاهش حجم کدها در ویژوال بیسیک وجود دارد؟
مثلا" میشه رویداد ها رو توی یه ماژول جدا ریخت؟
(البته فانکشن ها و سابهای فرعی رو میدونم که میشه توی ماژول ریخت و بعدن آنها را فراخوانی کرد... اما در مورد رویداد ها چی؟)

ممنون

همه کاری میشه کرد ! حجم کد ؟ فرقی میکنه مگه اونوقت ؟ فقط پخش کردین تو ی سری ماژول ... ولی اگه حجم محصول نهایی هدفت باشه ... استفاده از پکر ها راه حلشه

Salar.Shayegan
چهارشنبه 12 تیر 1392, 13:37 عصر
آره یعنی اینهمه کد توی ماژول فرم اصلی باشه خیلی زیاد میشه و کار کردن باهاش سخت میشه... چون دستور ها رو با هم قاطی میکنی و ...
رویداد ها رو هم که نمیشه توی ماژول های جدا ریخت!

راه دیگه ای نیست؟

(چون دارم نرم افزار بزرگی میسازم که دستوراش خیلی زیاده...)

just4froum
چهارشنبه 12 تیر 1392, 14:58 عصر
با سلام :

ببین هر چقدر هم که برنامت بزرگ باشه باید یاد بگیری که با اسم گذاری مناسب متغیر ها و ساب ها فانکشنها و توضیحات راجع به ورودی و خروجی هر ساب و فانکشن و این جور چیز ها و برنامه نویسی روی اصول ( که مال منم زیاد روی اصول نیست :افسرده:) این مشکل رو حل کنی.

SlowCode
چهارشنبه 12 تیر 1392, 15:22 عصر
همونطور که دوستان گفتن سعی کن از توابع و ماجول و کلاس درست استفاده کنی.
فقط یه نکنه بگم زیاد سعی نکن حجم کدهات رو کم کنی! چون کوتاه ترین راه همیشه بهترین راه نیست.
مثلا اگه میزان پردازش شما و تعداد حلقه هات زیاد هستن نباید به حجم کدها زیاد توجه کنی و بهتره بیشتر رو performance تمرکز کنی و در این صورت حجم کد بیشتر میشه.
ولی اگه پردازش آنچنانی نداری حجم کدهات رو هرچقدر میتونی کم کن.:لبخندساده:

mehran901
چهارشنبه 12 تیر 1392, 15:22 عصر
رویداد ها رو هم که نمیشه توی ماژول های جدا ریخت!



این یعنی چی ؟! رویداد منظورت مثلا اونت باتنت هست ؟! که میگی نمیشه تو ماژول ریخت؟! ببین تو هررویدادیت ی سری کد استفاده شده ! خب؟ این کد ها رو میتونه بجای اینکه تو فرم استانداردت بنویسی منتقل کنی تو ماژول ها ... نمیدونم چرا میگی نمیشه تو ماژول جدا ریخت آخه ...
مثلا من میخوام برنامم وسط صفحه قراربگیره خب؟ یا میام تو فرم لودم اینو مینویسم یا میام تو ماژول مینویسم !

توماژول :

Public Function scrn(a As Form)
a.Top = (Screen.Height - a.Height) / 2
a.Left = (Screen.Width - a.Width) / 2
End Function

تو فرملودت :

scrn me


خب این ی رویداد بود که اکشن هاش منتقل شد تو ی ماژول !

محسن واژدی
چهارشنبه 12 تیر 1392, 21:52 عصر
آره يعني اينهمه کد توي ماژول فرم اصلي باشه خيلي زياد ميشه و کار کردن باهاش سخت ميشه... چون دستور ها رو با هم قاطي ميکني و ...

سلام عليکم
کدها را گروه بندي کنيد، يعني تعدادي از توابع که کارمشابه اي انجام ميدهند را در يک ماژول يا کلاس (بسته به نياز) و مابقي هم به همين صورت، گاهي اوقات ممکن است تعداد خطوط برنامه نويسي يک ماژول به 20000 يا بيشتر خط هم برسه، البته افزايش تعداد روال ها در يک ماژول کار يافتن روال ها را سخت تر نميکند چون عنوان تمامي روال هاي ايجاد شده در combo-box بالا-گوشه سمت راست ماژول (Declarations) ليست ميشه، همیشه لازم نیست بدنبال یک روال کل ماژول را جستجو کنیم
همينطور سعي کنيد براي هر روالي که مينويسيد مستند سازي کنيد به اينصورت که توضيحاتي را درباره روال ايجاد شده در بالاي هر روال بنويسيد توضيحاتي که اگر بعد از گذشت مدت زمان طولاني در صورت مطالعه دوباره پروژه براي يادآوري عملکرد هر روال مجبور مطالعه دوباره پروژه از ابتدا نباشيد


رويداد ها رو هم که نميشه توي ماژول هاي جدا ريخت!

بله چون ماژول شي نيست، دستور Event را بجز اشياء بصري تنها ميتوان در کلاس ها بکار برد

موفق باشيد

vbhamed
پنج شنبه 13 تیر 1392, 02:00 صبح
رویداد ها رو هم که نمیشه توی ماژول های جدا ریخت!

سلام
خود رويداد رو نميشه تو ماژول نوشت اما دستورات داخلش رو مي‌توني بنويسي

به عنوان مثال رويداد Form_Resize (البته دستورات داخل رويداد براي مثال هستند و منظور همون كدهاي طولاني شماست)
Private Sub Form_Resize()

If Me.Width > 5000 Then Me.Width = 5000
If Me.Width > 5000 Then Me.Width = 5000
If Me.Width > 5000 Then Me.Width = 5000
If Me.Width > 5000 Then Me.Width = 5000
If Me.Width > 5000 Then Me.Width = 5000
If Me.Width > 5000 Then Me.Width = 5000
If Me.Width > 5000 Then Me.Width = 5000
If Me.Width > 5000 Then Me.Width = 5000
If Me.Width > 5000 Then Me.Width = 5000
If Me.Width > 5000 Then Me.Width = 5000
If Me.Width > 5000 Then Me.Width = 5000
If Me.Width > 5000 Then Me.Width = 5000
If Me.Width > 5000 Then Me.Width = 5000

End Sub
درون ماژول يك متد مي‌نويسيم و دستورات رو داخل اون منتقل مي‌كنيم و داخل رويداد Form_Resize از خود فرم اين متد رو فراخواني مي‌كنيم اينطوري هر رويداد تقريبا 3 خط كد ميشه

مثلا كد بالا بعد از تبديل اين ميشه

كد ماژول :
Public Sub FormResize(frm As Form)

If frm.Width > 5000 Then frm.Width = 5000
If frm.Width > 5000 Then frm.Width = 5000
If frm.Width > 5000 Then frm.Width = 5000
If frm.Width > 5000 Then frm.Width = 5000
If frm.Width > 5000 Then frm.Width = 5000
If frm.Width > 5000 Then frm.Width = 5000
If frm.Width > 5000 Then frm.Width = 5000
If frm.Width > 5000 Then frm.Width = 5000
If frm.Width > 5000 Then frm.Width = 5000
If frm.Width > 5000 Then frm.Width = 5000
If frm.Width > 5000 Then frm.Width = 5000
If frm.Width > 5000 Then frm.Width = 5000
If frm.Width > 5000 Then frm.Width = 5000

End Sub


كد فرم :
Private Sub Form_Resize()

FormResize Me

End Sub

program2vb
پنج شنبه 13 تیر 1392, 11:10 صبح
سلام . زیاد سعی نکن از فرم اصلی خارج شی و کدها رو با استفاده از توابع بنویسی چون اگه داخل خود روال اصلی بنویسی فقط یک پردازش انجام میگیره اما بیای داخل روال اصلی بک روال دیگه یا تابع دیگه رو صدا کنی در واقع دو پردارش انجام میشه . سرعت برنامه میاد پاایین ... همیشه کم شدن کد باعث نمیشه برنامت خوب بشه گاهی باعث میشه برنامه کندتر بشه .... و نکته دوم اینکه اگه میخوای داخل کدهای برنامه قاطی نشی بهتره براشون توضیح بنویسی جداگانه ...... و ....

موفق و پیروز باشی در پناه خدا .... یا علی ..

Salar.Shayegan
پنج شنبه 13 تیر 1392, 13:57 عصر
سلام عليکم
بله چون ماژول شي نيست، دستور Event را بجز اشياء بصري تنها ميتوان در کلاس ها بکار برد
موفق باشيد
فرق کلاس با ماژول چیست؟
آیا نمیتوان ایونت ها رو هم داخل یه کلاس ریخت و اون رو فراخوانی کرد؟


برای مثال من دارم برنامه ی گرافیکی میسازم، حدود 100 خطش فقط مربوط میشه به رسم مثلث... بعد از طرفی همش با مثلا" رسم دایره و رسم مستطیل قاطی میشه و بعد تشخیصش دشوار میشه و ماژول فرم اصلی نامنظم میشه... هیچ راهی برای اینکه کدهای رسم مثلث رو توی یک ماژول جدا بریزم و بعد همه ی اون رو یکجا فراخوانی کنم نیست؟


از دوستان بابت راهنمایی هاشون ممنونم...

vbhamed
پنج شنبه 13 تیر 1392, 18:25 عصر
سلام

براي چي دستورات قاطي بشه
شما قاعدتا براي رسم دايره و مثلث و ... سابروتين هاي جداگانه مي‌نويسيد، اگر نام سابروتين ها رو هم متناسب بزاريد ديگه چه دليلي وجود داره كه قاطي بشه