PDA

View Full Version : حرفه ای: تعداد خطوط را ما تعیین نکنیم



hsnm8869
پنج شنبه 30 اردیبهشت 1389, 20:26 عصر
می خراهم برنامه بنویسم که چندین خط(که تعداد آن را ما نمی دانیم) را از کاربر بگیرد اما نمیدانم چگون ه در یک برنامه تعدادی رشته را در خط های جداگانه بگیرم در حالی که تعداد خطوط را ندانم.

ztx4
پنج شنبه 30 اردیبهشت 1389, 22:23 عصر
دوست عزیز برای ذخیره کردن یک رشته که از نوع String باید استفاده کنی.
اگر تعداد خط ها مشخص نیست شما 2 راه دارید:

1- یک آرایه خیلی بزرگ از این String ها بسازی مصلا یک آرایه ی 2000 تایی و دا کنی که کاربر بیشتر از این خط ننویسه!
این روش ایرادش اینه که حافظه ی بی هوده حدر می ده!!!

2- از لینک لیست ها استفاده کنی.
در این روش هر باز که کاربر یک خط جدید ایجاد می کنه ، یک گره به لیستت ایجاد می شه.

روش دوم هم اصولیه هم فنی اما اولی نه!

eshpilen
پنج شنبه 30 اردیبهشت 1389, 23:36 عصر
بنظر من برای برنامه های ساده و محدود اشکالی نداره از روشهای ساده استفاده کنیم.
به روشی که مثلا حتی صد کیلوبایت حافظه رو هدر بده امروزه فقط به این خاطر نمیشه گفت غیراصولی.
الان دیگه مثل گذشته منابعی مثل حافظه محدود و جیره بندی و گران قیمت نیستن.
روشهای پیچیده احتمال باگ رو هم بنحو قابل توجهی بالا میبرن؛ گذشته از وقت و انرژی برنامه نویس که خیلی مهم هست.
البته منظور من استفادهء غیراصولی از روشهای ساده نیست. اگر روش ساده بکار میبریم باید سعی کنیم تاحد امکان Defensive Programming رو داشته باشیم. یعنی مثلا جلوگیری از سرریز شدن و پیام خطای مناسب جزو ضروریات هستن (بدون اینها امنیت برنامه هم بشدت خدشه دار میشه).

درمورد برنامه های غیرساده و محدود روشهای پیچیده تر و دقیق تر رو بکار میبریم.
مثلا برنامهء ما ممکنه خودش یک کتابخانهء عمومی dll باشه، ممکنه یک دیتابیس باشه، ممکنه یک سرویس دهنده باشه، ممکنه یک برنامهء کاربردی تجاری عمومی باشه.

از طرف دیگه الان فریمورک ها که خودشون امکانات آرایه های دینامیک دارن و نیازی نیست برنامه نویس جزییات سطح پایین برای لیست پیوندی و ایجاد آرایه های دینامیک بنویسه. پس شاید این حرفها خیلی هم ضرورت نداشته باشه. البته مسلما این امکانات خودشون پردازش و حافظه های اضافه ای مصرف میکنن.
بهرحال انتخاب الگوریتم برای برنامه یک تعادل خردمندانه هست بین پارامترهای فنی و غیرفنی زیادی.

نظر شما چیه؟
بقول اون دوستمون در یک تاپیک دیگه، Technical challenge به خودی خودش اصلا چیز بدی نیست که مفید هم هست. البته یه وقتی هم هست اصلا دو طرف منظور همدیگر رو نفهمیدن (که بازم با بحث روشن میشن).