نکات کلی برنامه نویسی و سرچی

شروع موضوع توسط saalek110 ‏11 آوریل 2008 در انجمن منطق و الگوریتم برنامه‌نویسی

  1. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,765
    تشکر شده:
    1,381
    امتیاز دستاورد:
    113
    با سلام.

    این تاپیک را باز کردم تا خودم و دیگران(چه حرفه ای چه مبتدی یا متوسطه) تجارب کار عملی برنامه نویسی خود یا مهارتهای سرچ خود را بنویسیم.

    ما همه ایرانی هستیم و پیشرفت هم میهنان ما باعث پیشرفت ما هم خواهد بود.

    خیلی ها سالها تجربه دارند و چه خوبه تجربیات خود را در اختیار دیگران قرار دهند تا بقیه دردسرهای آنها را نکشند و سریع تر به بازدهی بیشتر برسند.

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

    من هر وقت نکته ای یادم بیاد اینجا می نویسم شما هم هر نکته ای به ذهنتان رسید بنویسید.

    قوانین این تاپیک:
    برای اینکه بستر مناسبی در این تاپیک برای تبادل تجربیات محیا شود نکات زیر را رعایت کنید:
    مطلب کسی را داخل نقل قول در پست خود نقل نکنید. چون ممکنه فرد بعدا بخواهد نظرش را اصلاح یا تکمیل یا کلا ویرایش کند.
    اگر نظر بهتری یا راه بهتری دارید بدون اشاره به مطالب اشخاص قبلی فقط نظر خودتان را بنویسید. خوانندگان همه قدرت قضاوت دارند و با مقایسه مطالب مختلف راه بهتر را شناخته و انتخاب و عمل می کنند.
    در صورت رعایت نکردن نکات بالا پست حذف می شود.
     
    نوشته شده توسط saalek110 در ‏11 آوریل 2008
    bitaroos و rahpoyan.ir از این پست تشکر کرده اند.
  2. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,765
    تشکر شده:
    1,381
    امتیاز دستاورد:
    113
    نکته سرچی
    هر چیزی ما سرچ می کنیم در گوگل این جستجوگر معمولا از هر سایت یک نمونه می دهد و می رود سایت بعدی.
    فرض کنید تمام مطالب مربوط به رشته ای در یک سایت متمرکز باشد. مثلا هزار نکته در یک سایت باشد و فقط ده نکته در ده سایت دیگر. گوگل یک نکته از سایت اول را نشان می دهد و ده سایت بعدی را معرفی می کند. شما کلا یازده نکته را مطالعه کرده اید و 999 نکته را در سایت اولی از دست داده اید. پس بهتر است برای سرچ دقیق تر سایتها را هم با گوگل سرچ کنید.

    با این روش:
    کد (Text):
    indy site:http://www.majidonline.com
     
    نوشته شده توسط saalek110 در ‏11 آوریل 2008
    bitaroos و rahpoyan.ir از این پست تشکر کرده اند.
  3. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,765
    تشکر شده:
    1,381
    امتیاز دستاورد:
    113
    نکته سرچی

    من خیلی اوقات کلمات tutorial و learn را به سرچ خود اضافه می کنم.
    مثلا:
    کد (Text):
    delphi+tutorial+indy
    این به خاطر این است که می خواهم سایتهای آموزشی بیاید. چون خیلی تاپیکهای بی جواب ممکنه بی نوشتن این دو کلمه بیاید و باعث اتلاف وقت بشود.
     
    نوشته شده توسط saalek110 در ‏11 آوریل 2008
    rahpoyan.ir از این پست تشکر کرده است.
  4. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,765
    تشکر شده:
    1,381
    امتیاز دستاورد:
    113
    نکته سرچی
    خیلی اوقات بهتره کدها را سرچ کنید نه موضوع را.
    چون سریع تر به جواب می رسید.
    یا می توانید ترکیبی کار کنید.

    اگر مثلا textbox را سرچ کنید خیلی فرق داره با سرچ textbox1 . خیلی ها اسم textbox1 را به کار می برند.
    فرض کنید می خواهید ببینید چه چیزهایی می شود add کرد به لیست باکس. میشه نوشت:
    کد (Text):
    ListBox1.items.add(
    و این جوری خیلی سریع کدهایی خواهید یافت که خیلی هاشان درست است و می توانید سریع تست و استفاده کنید.
     
    نوشته شده توسط saalek110 در ‏11 آوریل 2008
    bitaroos و rahpoyan.ir از این پست تشکر کرده اند.
  5. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,765
    تشکر شده:
    1,381
    امتیاز دستاورد:
    113
    نکته برنامه نویسان سی

    ممکنه شما مجبور باشید با توربو سی 3 کار کنید ولی دلیل ندارد همه کارها را در توربو سی 3 انجام دهید.
    می توانید مثلا در ویژوال سی 6 در حالت کنسولی همه کارهای خود را بکنید و بعد تست آخری را در توربو سی 3 بکنید.
    یا توربو سی 4.5

    به این خاطر این را می گویم که کار در حالت داسی سخته. چون مثلا کلیک راست برای کات پیست ندارید و غیره

    وی سی 6 خیلی کم تفاوت دارد با توربوسی 3 و زود میشه تفاوتها را پیدا کرد و تغییر داد.
     
    نوشته شده توسط saalek110 در ‏11 آوریل 2008
  6. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,765
    تشکر شده:
    1,381
    امتیاز دستاورد:
    113
    نکته برنامه نویسی کلی

    هر وقت دیدید برنامه برای شما گنگ شده تا می توانید پرینت بگیرید.
    هر متغیری را در برنامه پرینت کنید.
    حتی اگر شده یک خط در میان دستورات پرینت را بگذارید.
    بعد با مقایسه نتایج خیلی سریع می توانید اشکال برنامه را پیدا کنید.

    اگر ویژوالی کار می کنید مثلا دلفی یا وی بی یا سی شارپ یک فرم را اختصاص بدهید به نمایش برای خودتان.
    و آخر کار آن فرم را دیلت می کنید. و بعد برنامه با اررور هایش به شما خودش می گوید کجای کدهای شما اشاره شده به آن فرم و آن کدها را حذف می کنید.

    چندین لیست باکس می توانید روی این فرم کمکی بگذارید و در هر مرحله برنامه در یکی از لیست باکس ها همه چیز را لیست کنید.

    و کلا همه اطلاعات برنامه را پرینت کنید. در آخر کار همه را حذف می کنید.

    فراموش نکنید رفاه برنامه نویس اولین اصله.
    چون با فشار بر او میزان خطا بالا می رود و سرعت پیشرفت پایین می آید.

    اول برنامه را به سرانجام برسانید و بعد به فکر بهینه کردن برنامه باشید.
    لازم نیست متغیر را کوچک بگیرید یا سایز آرایه را کوچک بگیرید. بعد تکمیل هم می شود اینها را سریع در چند دقیقه کوچک کرد.

    کلا به فکر افزایش خوانایی و افزایش رفاه خود باشید و بعدا به فکر سرعت و زیبایی و هر چیز دیگری باشید
    چون فشارها همه چیز را نابود خواهد کرد.
     
    نوشته شده توسط saalek110 در ‏11 آوریل 2008
    bitaroos و Sampro از این پست تشکر کرده اند.
  7. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,765
    تشکر شده:
    1,381
    امتیاز دستاورد:
    113
    نکته برنامه نویسی کلی

    هر چند دقیقه مثلا هر نیم ساعت از پای کامپیوتر بلند شوید. زیرا ایده هایی که دور از کامپیوتر به ذهن شما می رسد هیچ گاه در حین تماشای کدها یا تغییر کدها به ذهن شما نمی رسد.
     
    نوشته شده توسط saalek110 در ‏11 آوریل 2008
    bitaroos از این پست تشکر کرده است.
  8. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,765
    تشکر شده:
    1,381
    امتیاز دستاورد:
    113
    نکته برنامه نویسی کلی
    افراد عادی فقط ظاهر برنامه شما را می بینند نه میزان زحمتی که برای حل فلان مشکل کشیده اید.
    کدها پشت اینترفیس است کسی آنها را نمی بیند. انتظار نداشته باشید چیزی را که کسی نمی بیند تشویق کند.
     
    نوشته شده توسط saalek110 در ‏11 آوریل 2008
    bitaroos و S.H.M از این پست تشکر کرده اند.
  9. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,765
    تشکر شده:
    1,381
    امتیاز دستاورد:
    113
    نکته برنامه نویسی کلی

    ابزارهای ما چیست؟
    =کتاب
    =سایتها
    =ور رفتن
    = هلپ کامپایلرها
    و موارد دیگر

    لیست منابع خود را همیشه در ذهن داشته باشید و ببینید الان کدام موثرتر است.

    البته این لیست تا این حد فیزیکی نیست خیلی ابزارها هم هست که نمی شود اینجا بیان کرد. منظورم کارهایی است که باعث به حرکت افتادن ذهن شما می شود. هر چیزی می تواند این اثر را داشته باشد. مثلا استراحت فکری - برخورد مثبت - کمک گیری از دیگران و خیلی چیزهای دیگر که در هر فرد ممکنه بسیار متنوع باشد و خود فرد باید آنها را لیست کند. مثلا ممکن است در فردی موزیک باعث افزایش کارایی شود و در فردی برعکس و ... غیره.
     
    نوشته شده توسط saalek110 در ‏11 آوریل 2008
  10. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,765
    تشکر شده:
    1,381
    امتیاز دستاورد:
    113
    نکته برنامه نویسی کلی

    هر سورس کد معرف خیلی چیزهاست.
    مثلا میزان مطالعه و مهارت وی.
    یا نوع شخصیت وی.

    از سورس ها فقط نمونه کد را یاد نگیرید. بلکه نگاه کنید ببینید نویسنده آن چطور بر مشکلات غلبه کرده و راه او چه بوده. خیلی اوقات راه او برای شما بهترین نیست چون شما شخصیت متفاوتی دارید. مثلا بعضی از سادگی خوششان می آید و بعضی از پیچیدگی. و الگوریتمها را می شود ساده نوشت یا پیچیده. و خیلی صفات دیگر.
    کلا می خواهم مهارتهای او را فرا بگیرید ولی عادات او اجباری نیست. البته منظورم کدهایی نیست که راه مشخصی دارد. منظورم برنامه هایی است که فرد با ذوق و ابتکار خویش نوشته. این بحث مفصله بعدا شاید ادامه دادم.
     
    نوشته شده توسط saalek110 در ‏11 آوریل 2008
    Saeed Shahabi و Sampro از این پست تشکر کرده اند.
  11. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,765
    تشکر شده:
    1,381
    امتیاز دستاورد:
    113
    نکته برنامه نویسی
    رزولوشن مونیتور همه یکی نیست. چه سایت ساخته شده توسط شما چه برنامه دسکتاپی می تواند در کامپیوتر فرد دیگر ابعادش به هم بریزد.
    باید این نکته را توجه داشت.
    نمیشه اینجا کد نویسی اش را بحث کرد. فقط جهت یادآوری گفتم.
     
    نوشته شده توسط saalek110 در ‏11 آوریل 2008
    bitaroos از این پست تشکر کرده است.
  12. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,765
    تشکر شده:
    1,381
    امتیاز دستاورد:
    113
    آپشن برنامه
    تا می توانید به کاربر اختیارات بدهید تا از برنامه شما لذت ببرد.
    تا آنجا که می شود متغیرهای برنامه خود را قابل تغییر در آپشن کنید.
    این کار این سود را هم دارد که گاهی با تغییر این متغیرها می شود بعضی باگ ها را هم رفع کرد.

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

    undo
    یکی از این موارد undo است. باید کاربر بتواند اشتباهات خود را بی اثر کند.
    البته جزو آپشن شاید نشه گفت ولی گفتم شاید دیگه یادم نیاد الان نوشتم.
     
    نوشته شده توسط saalek110 در ‏11 آوریل 2008
    bitaroos از این پست تشکر کرده است.
  13. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,765
    تشکر شده:
    1,381
    امتیاز دستاورد:
    113
    رعایت حقوق کاربر
    برنامه شما نباید بی اجازه کاری را انجام دهد.
    مثلا قرار گرفتن در استارت آپ ویندوز باید قابل انتخاب باشد.
    یا برنامه شما باید همه کارها را قبلش اجازه بگیرد مگر در آپشن خود کاربر بگوید بعد این اجازه لازم نیست.
     
    نوشته شده توسط saalek110 در ‏11 آوریل 2008
  14. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,765
    تشکر شده:
    1,381
    امتیاز دستاورد:
    113
    نام متغیرها
    من قانون خاصی ندارم برای نام گذاری متغیرها. ولی فعلا چند تا عادت دارم که می نویسم. شاید هم عادات خوبی نباشد. فقط مطرح می کنم.

    من از آندرلاین بین اجزای نام استفاده می کنم چون فکر می کنم در همه زبانها آندرلاین پذیرفته است مثلا my_int و نه myint چون اولی را ساده تر و سریع تر میشه خواند. البته نام باید با مسما باشد ولی این نوع نام ها را برای مواقعی به کار می برم که چند دقیقه فقط برای یک تست نیاز بهش داشته باشم. بعدا ممکنه بشه loop_counter یا کمی با مسما تر تا با اسامی جاهای دیگر اشتباه نشود.
     
    نوشته شده توسط saalek110 در ‏11 آوریل 2008
  15. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,765
    تشکر شده:
    1,381
    امتیاز دستاورد:
    113
    متغیر گلوبال باشد یا محلی
    من قانون اینها را درست نمی دانم.
    ولی نظرم را می گویم .

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

    در مورد متغیرهای گلوبال به نظر من آنهایی باید گلوبال بشوند که قراره حکم رابط را بین چند قسمت برنامه داشته باشند و آنقدر پر کاربر هستند که ما وجود آنها را فراموش نمی کنیم.
    بهتره اگر متغیری زیاد پر کاربرد نیست با روشهای دیگری جابجا بشود. یعنی روشهایی با کنترل بالا. مثلا ارسال به عنوان ورودی یک تابع و غیره.
    البته خودم قضیه برام شفاف نیست فعلا و کلی گفتم. فعلا قانون مشخصی ندارم.
     
    نوشته شده توسط saalek110 در ‏11 آوریل 2008
  16. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,765
    تشکر شده:
    1,381
    امتیاز دستاورد:
    113
    بسته تر بهتر است

    = متدی که قرار نیست مورد استفاده فرم های دیگر باشد بهتره private باشد تا اشتباها صدا زده نشه.
    = متغیری که قراره از یک تا 5 را فقط قبول کنه را جوری تعریف کنید که بیشترش را نتواند قبول کند. مثلا با استفاده از انوم.

    = در وی بی بهتره option explicit را حتما بالای کدها بنویسید تا اشتباها به جای mychar متغیر mychr ساخته نشود و مورد استفاده قرار نگیرد. در بقیه زبانها چنین اتفاقی نمی افتد البته.
     
    نوشته شده توسط saalek110 در ‏11 آوریل 2008
  17. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,765
    تشکر شده:
    1,381
    امتیاز دستاورد:
    113
    سرچ در سایتهای فارسی یا انگلیسی

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

    مسلما سایتهای انگلیسی خیلی غنی ترند ولی اگر ندانید چه کلمه ای را سرچ کنید جستجو بی فایده است.
     
    نوشته شده توسط saalek110 در ‏11 آوریل 2008
  18. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,765
    تشکر شده:
    1,381
    امتیاز دستاورد:
    113
    استفاده از سورس یا نوشتن برنامه توسط خودتان

    در مواردی هست که نوشتن از پایه با استفاده از آموزشها خیلی سریعتر ما را به نتیجه می رساند تا بررسی یک سورس پیچیده.
     
    نوشته شده توسط saalek110 در ‏11 آوریل 2008
  19. Sampro

    Sampro Member

    ارسال‌ها:
    254
    تشکر شده:
    201
    امتیاز دستاورد:
    16
    نامگذاری متغیر ها

    ممنون سالک جان به خاطر زدن این تاپیک عالی

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

    البته تو دانشکده استادمون می گفت که بهتره مخفف نوع داده ای (همون str اول متغیری که مثال زدم) رو آخر بزارید.
    که من به چند دلیل اول می زارم . دلیلش اینه که اگه اول باشه بهتر تو دیده و نیز وقتی شما Ctrl+Space (تو دلفی) می زنید با نوشتن نوع متغیر به سرعت اون رو پیدا می کنین .

    نکته ی دیگه : این نوع نامگزاری رو می تونید برا کنترل ها (وی بی)و کمپوننت ها (دلفی) هم استفاده کنید .
    مثلا : btnOk که در این مثال ما یه دکمه رو نامگذاری کردیم .

    حالا من یک سری مخفف هایی که بیشتر استفاده می شن رو هم برای متغیر ها و هم برا کمپوننت ها و کنترل ها اینجا می نویسم :
    int=Integer
    str:String
    bol=Boolean
    flt=Float
    و برای کنترل ها و کمپوننت ها (دلفی و وی بی) :
    btn=Button
    cmd=Command Button
    lbl=Label
    txt=Text
    edt=Edit
    lst=ListBox
    pnl=Panel
    frm=Form
    chk=CheckBox
    rdt=radioButton
    (فعلا همینا تو ذهنم بود)

    نکته ی آخر : با استفاده از این نوع نامگذاری شما می تونید متغیر هایی همنام داشته باشین که چون اولشون یه مخفف گذاشتین از هم متمایز داده می شن .
    مثلا :
    frmStuff نام یک فرم با نام کالا و
    strStuff نام یک متغیر برای درج نام کالا (می تونید از strStuffName هم استفاده کنین)

    این نوع نامگذاری رو فکر کنم نامگذاری مجارستانی می گن
     
    نوشته شده توسط Sampro در ‏11 آوریل 2008
    ITengineer و saalek110 از این پست تشکر کرده اند.
  20. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,765
    تشکر شده:
    1,381
    امتیاز دستاورد:
    113
    یک camp (چادر) داخل فرم 2

    در برنامه نویسی ویژوالی مثلا دلفی

    هنگامی که فرم یک می خواهد فرم 2 را نمایش دهد

    می توانید راه من را امتحان کنید. البته از جایی نخواندم و ابتکاری است و شاید بعدا معلوم بشود راه خوبی نیست ولی فعلا در میان می گذارم

    فرم یک ابتدا تابعی که عضو کلاس فرم 2 است را فرا می خواند تا کدهای آن تابع اجرا شود .
    بعد یا فرم 1 می آید فرم 2 را show می کند یا در انتهای آن تابع خودش فرم 2 را show می کند.

    فوائد این روش: چون آن تابع به همه قسمتهای فرم 2 دسترسی دارد و جزئی از خود فرم 2 است خوانایی بهتر است.
    در طراحی زمان اجرا یعنی ساختن کنترلها درست قبل نمایش درآمدن فرم 2 شاید این روش خیلی مفید باشد.
     
    نوشته شده توسط saalek110 در ‏11 آوریل 2008
    ITengineer و Sampro از این پست تشکر کرده اند.

به اشتراک بگذارید