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

saalek110

Well-Known Member
با سلام.

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

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

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

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

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

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

saalek110

Well-Known Member
نکته سرچی
هر چیزی ما سرچ می کنیم در گوگل این جستجوگر معمولا از هر سایت یک نمونه می دهد و می رود سایت بعدی.
فرض کنید تمام مطالب مربوط به رشته ای در یک سایت متمرکز باشد. مثلا هزار نکته در یک سایت باشد و فقط ده نکته در ده سایت دیگر. گوگل یک نکته از سایت اول را نشان می دهد و ده سایت بعدی را معرفی می کند. شما کلا یازده نکته را مطالعه کرده اید و 999 نکته را در سایت اولی از دست داده اید. پس بهتر است برای سرچ دقیق تر سایتها را هم با گوگل سرچ کنید.

با این روش:
کد:
indy site:http://www.majidonline.com
 

saalek110

Well-Known Member
نکته سرچی

من خیلی اوقات کلمات tutorial و learn را به سرچ خود اضافه می کنم.
مثلا:
کد:
delphi+tutorial+indy

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

saalek110

Well-Known Member
نکته سرچی
خیلی اوقات بهتره کدها را سرچ کنید نه موضوع را.
چون سریع تر به جواب می رسید.
یا می توانید ترکیبی کار کنید.

اگر مثلا textbox را سرچ کنید خیلی فرق داره با سرچ textbox1 . خیلی ها اسم textbox1 را به کار می برند.
فرض کنید می خواهید ببینید چه چیزهایی می شود add کرد به لیست باکس. میشه نوشت:
کد:
ListBox1.items.add(
و این جوری خیلی سریع کدهایی خواهید یافت که خیلی هاشان درست است و می توانید سریع تست و استفاده کنید.
 

saalek110

Well-Known Member
نکته برنامه نویسان سی

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

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

وی سی 6 خیلی کم تفاوت دارد با توربوسی 3 و زود میشه تفاوتها را پیدا کرد و تغییر داد.
 

saalek110

Well-Known Member
نکته برنامه نویسی کلی

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

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

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

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

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

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

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

saalek110

Well-Known Member
نکته برنامه نویسی کلی

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

saalek110

Well-Known Member
نکته برنامه نویسی کلی
افراد عادی فقط ظاهر برنامه شما را می بینند نه میزان زحمتی که برای حل فلان مشکل کشیده اید.
کدها پشت اینترفیس است کسی آنها را نمی بیند. انتظار نداشته باشید چیزی را که کسی نمی بیند تشویق کند.
 

saalek110

Well-Known Member
نکته برنامه نویسی کلی

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

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

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

saalek110

Well-Known Member
نکته برنامه نویسی کلی

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

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

saalek110

Well-Known Member
نکته برنامه نویسی
رزولوشن مونیتور همه یکی نیست. چه سایت ساخته شده توسط شما چه برنامه دسکتاپی می تواند در کامپیوتر فرد دیگر ابعادش به هم بریزد.
باید این نکته را توجه داشت.
نمیشه اینجا کد نویسی اش را بحث کرد. فقط جهت یادآوری گفتم.
 

saalek110

Well-Known Member
آپشن برنامه
تا می توانید به کاربر اختیارات بدهید تا از برنامه شما لذت ببرد.
تا آنجا که می شود متغیرهای برنامه خود را قابل تغییر در آپشن کنید.
این کار این سود را هم دارد که گاهی با تغییر این متغیرها می شود بعضی باگ ها را هم رفع کرد.

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

undo
یکی از این موارد undo است. باید کاربر بتواند اشتباهات خود را بی اثر کند.
البته جزو آپشن شاید نشه گفت ولی گفتم شاید دیگه یادم نیاد الان نوشتم.
 

saalek110

Well-Known Member
رعایت حقوق کاربر
برنامه شما نباید بی اجازه کاری را انجام دهد.
مثلا قرار گرفتن در استارت آپ ویندوز باید قابل انتخاب باشد.
یا برنامه شما باید همه کارها را قبلش اجازه بگیرد مگر در آپشن خود کاربر بگوید بعد این اجازه لازم نیست.
 

saalek110

Well-Known Member
نام متغیرها
من قانون خاصی ندارم برای نام گذاری متغیرها. ولی فعلا چند تا عادت دارم که می نویسم. شاید هم عادات خوبی نباشد. فقط مطرح می کنم.

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

saalek110

Well-Known Member
متغیر گلوبال باشد یا محلی
من قانون اینها را درست نمی دانم.
ولی نظرم را می گویم .

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

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

saalek110

Well-Known Member
بسته تر بهتر است

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

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

saalek110

Well-Known Member
سرچ در سایتهای فارسی یا انگلیسی

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

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

saalek110

Well-Known Member
استفاده از سورس یا نوشتن برنامه توسط خودتان

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

Sampro

Member
نامگذاری متغیر ها

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

در مورد نامگذاری متغیر ها اون چیزی که من روش تحقیق کردم و دارم باهاش کار می کنم.
به نظرم گذاشتن آندرلاین (آندراسکور) یه کم کار پر زحمتیه . (البته به نظرم)
برای راحتی بیشتر می تونید حرف اول کلماتی که تو متغیر استفاده می کنید رو بزرگ بزارید
مثلا : 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 هم استفاده کنین)

این نوع نامگذاری رو فکر کنم نامگذاری مجارستانی می گن
 

saalek110

Well-Known Member
یک camp (چادر) داخل فرم 2

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

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

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

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

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

جدیدترین ارسال ها

بالا