خوش آمدید به رمان ۹۸ | بهترین انجمن رمان نویسی

رمان ۹۸ با هدف ترویج فرهنگ کتاب خوانی و تقویت قلم عزیزان ایجاد شده است.
هدف ما همواره ایجاد محیطی گرم و صمیمی و دوستانه بوده
برای مطالعه کامل رمان‌ها و استفاده از امکانات انجمن
به ما بپیوندید و یا وارد انجمن شوید.

*KhatKhati*

مدیر بازنشسته رمان ۹۸
کاربر رمان ۹۸
  
عضویت
16/7/20
ارسال ها
2,693
امتیاز واکنش
9,215
امتیاز
233
محل سکونت
گلنمکستان
زمان حضور
63 روز 21 ساعت 58 دقیقه
نویسنده این موضوع
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: همواره در حال یادگیری موضوعات جدید باشید


زندگی ما در عصر تکنولوژی بسیار هیجان انگیز و جالب است. فناوری ها به سرعت در حال رشد هستند و هر روز اخباری از ابتکارات و دستاوردهای جدید در عرصه ی علم و تکنولوژی منتشر می شود. از سوی دیگر، شاهد آن هستیم که رشد تکنولوژی تأثیر زیادی هم در فرآیندهای یادگیری داشته است؛ به طور مثال اینترنت بسـ*ـتری را فراهم کرده است که کاربران را قادر می سازد به شبکه ی عظیمی از اطلاعات دسترسی پیدا کنند و با نوآوری های جدید آشنا شوند.

این سرعت بالای رشد علمی و دسترسی آسان تر به منابع علمی سبب افزایش تعداد رقبای شغلی به ویژه در میان برنامه نویسان شده است. آن چه بیش از هر چیز دیگر اهمیت دارد آن است که ما متوجه این تغییرات و پیشرفت ها باشیم و بدانیم برای ادامه ی کار و رقابت با دیگر برنامه نویسانی که در بازار برنامه نویسی مشغول به فعالیت هستند، لازم است که دانسته های خود را دائماً به روز کنیم که در غیر این صورت روزی دانش ما آن قدر قدیمی می شود که عملاً در هیچ جا کاربرد نخواهد داشت.

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

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

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

- اگر واقعاً می خواهید با یک تکنولوژی جدید آشنا شوید، دست خود را به آن آلوده کنید! شروع به کدنویسی کنید. تلاش کنید با امتحان کردن نرم افزارهای جدید به آن ها مسلط شوید.

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

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

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

- زمانی که اشتباهی انجام می دهید، به باگی در میان کدهای خود برخورد می کنید، یا با مشکلی در کدنویسی برنامه ی خود مواجه می شوید سعی کنید بفهیمد واقعاً چه اتفاقی افتاده است. ممکن است قبل از شما کسی با چنین مشکلی رو به رو شده باشد و بعد از یافتن راه حل، آن را روی فضای اینترنت به اشتراک گذاشته باشد. در این موارد جستجو در گوگل -و همچنین جستجو در سایت Stack Overflow- به شما کمک زیادی خواهد کرد. به علاوه سعی کنید شما هم یافته های خود را در اختیار دیگران قرار دهید.

- به گفته ی یک طنزپردازی: "کسانی که بر موضوعی تسلط کامل دارند از آن استفاده می کنند و با آن کار می کنند و کسانی که چیزی از آن نمی دانند همان موضوع را درس می دهند!" واقعیت این است که یکی از راه های یادگیری یک موضوع تدریس آن و صحبت کردن در مورد آن موضوع است. وقتی قرار باشد عده ای مخاطب شما باشند و از شما در مورد مطلبی سؤال بپرسند، انگیزه ی زیادی را برای یادگیری در شما ایجاد خواهد کرد. سعی کنید در مورد موضوعات و تکنولوژی های جدید اطلاعات به دست آورید و این اطلاعات را در جمع دوستان و همکاران به دیگران منتقل کنید.

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

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

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

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

- این روزها همه می دانند که صرف یادگیری زبان های برنامه نویسی یا دانش استفاده ازتکنولوژی های جدید برای شما مزیت رقابتی ایجاد نخواهد کرد. شما باید با حوزه ای که در آن کار می کنید آشنایی کامل داشته باشید تا بتوانید نیازهای مشتریان خود را بشناسید. آگاهی از این که چه طور کارکرد مؤثرتر و نقش سازنده تری در محیط کاری داشته باشید نیز مفید خواهد بود. برای مثال این روزها بیش تر شرکت ها به دنبال برنامه نویسانی هستند که در کنار مهارت های کدنویسی با روش های Agile یا چابک نیز آشنایی داشته باشند.

- اگر شما هم جزء کسانی باشید که بخش زیادی از زمان خود را در رفت و آمد و ترافیک شهری از دست می دهند، می توانید با گوش کردن به فایل های صوتی و پادکست های آموزشی که به وفور روی اینترنت قابل دسترسی هستند این زمان های تلف شده را تبدیل به فرصت مناسبی برای یادگیری و کسب اطلاعات جدید نمایید.

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

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


برنامه نویسی چیست؟

 
  • تشکر
Reactions: SAEEDEH.T و Saghár✿

*KhatKhati*

مدیر بازنشسته رمان ۹۸
کاربر رمان ۹۸
  
عضویت
16/7/20
ارسال ها
2,693
امتیاز واکنش
9,215
امتیاز
233
محل سکونت
گلنمکستان
زمان حضور
63 روز 21 ساعت 58 دقیقه
نویسنده این موضوع
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: از کدهای قبلی خود در شرایط مناسب مجدداً استفاده کنید


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

آیا استفاده ی مجدد از کدها همواره و تحت هر شرایطی مورد تأیید است؟ برای پاسخ به این سؤال باید از مزایا و معایب چنین کاری اطلاع پیدا کنیم و آن گاه با سبک و سنگین کردن شرایط، بین استفاده مجدد از کدهای از قبل نوشته شده و نوشتن کدهای جدید یکی را انتخاب کنیم. از این رو در این آموزش قصد داریم در مورد مزایا و معایب استفاده ی مجدد از کدها صحبت کنیم.

مزایا
استفاده ی مجدد از کدها زمان کدنویسی را کاهش می دهد، که این امر موجب کاهش هزینه های یک پروژه ی برنامه نویسی خواهد شد. فرض کنید پیش از این خود شما یا تیم برنامه نویسی دیگری روی یک مسئله کار کرده و پاسخ بهینه ای برای آن یافته اید و اکنون این پاسخ در دسترس شما است. بنابراین دلیلی وجود ندارد که شما بخواهید مجدداً به دنبال جواب برای یک مسئله ی حل شده باشید.

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

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

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

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

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

اگر شما از کدهایی استفاده کنید که قبلاً توسط برنامه نویسان دیگر نوشته شده باشند مسائل مربوط به امنیت و میزان قابل اعتماد بودن آن ها و مسائل مربوط به مجوزهای استفاده مطرح می شود. به علاوه ارزیابی این کدها معمولاً زمان بر است و این امکان وجود دارد که شما بعد از گذشت یک زمان طولانی متوجه ضعف در طراحی و باگ های آن کدها شوید.

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


برنامه نویسی چیست؟

 
  • تشکر
Reactions: SAEEDEH.T و Saghár✿

*KhatKhati*

مدیر بازنشسته رمان ۹۸
کاربر رمان ۹۸
  
عضویت
16/7/20
ارسال ها
2,693
امتیاز واکنش
9,215
امتیاز
233
محل سکونت
گلنمکستان
زمان حضور
63 روز 21 ساعت 58 دقیقه
نویسنده این موضوع
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: تنها توضیحاتی را بنویسید که کدهایتان قادر به شرح آنها نباشند!


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

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

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

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

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


برنامه نویسی چیست؟

 
  • تشکر
Reactions: SAEEDEH.T و Saghár✿

*KhatKhati*

مدیر بازنشسته رمان ۹۸
کاربر رمان ۹۸
  
عضویت
16/7/20
ارسال ها
2,693
امتیاز واکنش
9,215
امتیاز
233
محل سکونت
گلنمکستان
زمان حضور
63 روز 21 ساعت 58 دقیقه
نویسنده این موضوع
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: کامنت‌گذاری را فراموش نکنید


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

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

Header Comments یا توضیحات سرآمد:
هر برنامه باید با یک توضیح آغازین همراه باشد که به آن "توضیحات سرآمد" می گوییم. این توضیحات باید حاوی اطلاعاتی از این قبیل باشند: نام برنامه نویس، تاریخ، نام فایلی که برنامه در آن ذخیره می شود، توضیحی در مورد برنامه و نحوه ی اجرا و استفاده از آن. یکی از بهترین استراتژی ها برای نوشتن برنامه های بزرگ و پیچیده تقسیم کردن کدهای آن در مجموعه فایل های جداگانه ای به نام ماژول است که این کار بررسی و توسعه ی کدها را راحت تر می کند (به طور مثال، سکان آکادمی از ماژول های Application, Tutorial, Blog, Wiki, Jobs, Forum و ... تشکیل شده است.) در این صورت هر فایل نیاز به توضیحات سرآمد دارد که شامل این اطلاعات می شود: نام برنامه نویس، تاریخ، نام فایلی که کدها در آن ذخیره می شوند. هم چنین در این توضیحات باید نام فایل های دیگری که کدهای ماژول کنونی به آن ها وابسته هستند، مثلاً کلاسی را از فایل دیگری به ارث می برند را هم بیاورید.

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

Inline Comments یا توضیحات بین خطوط:
به غیر از توضیحات سرآمد، لازم است که کامنت هایی را هم در بدنه ی کدهای خود وارد کنید تا به توسعه دهندگان دیگر امکان تصحیح خطاها یا توسعه ی کدها را در آینده بدهند. این گونه توضیحات به دو گروه تقسیم می شوند: توضیحات خطی که در کنار یک خط از سورس کد می آیند و توضیحاتی در مورد آن خط از کد می دهند -مثلاً در یک خط متغیری از جنس عددی تعریف می شود و در توضیح آن، دامنه ای که می تواند اختیار کند را می آوریم- و یا کامنت های بلوکی که شبیه به توضیحات سرآمد، به طور کامل کاری را که یک بخش یا بلوک از کدهای برنامه انجام می دهد را توضیح می دهند.

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


برنامه نویسی چیست؟

 
  • تشکر
Reactions: SAEEDEH.T و Saghár✿

*KhatKhati*

مدیر بازنشسته رمان ۹۸
کاربر رمان ۹۸
  
عضویت
16/7/20
ارسال ها
2,693
امتیاز واکنش
9,215
امتیاز
233
محل سکونت
گلنمکستان
زمان حضور
63 روز 21 ساعت 58 دقیقه
نویسنده این موضوع
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: نقد و بررسی کدها


یکی از توصیه های مهمی که همواره به تیم های برنامه نویسی می شود برگزاری جلسات نقد و بررسی کدها است. بسیاری از سازمان ها و شرکت های نرم افزاری روی این موضوع تأکید ویژه ای دارند و برگزاری جلساتی از این دست در آیین نامه های فرآیند توسعه ی نرم افزاری آن ها آمده است و تبدیل به یک فرآیند رسمی اداری شده است، که تیم برنامه نویسی آن ها را ملزم به انجام این کار می کند. چنین تأکیدی دلالت بر اهمیت و کارایی این جلسات دارد. با این وجود، بیش تر تیم های برنامه نویسی به دلیل برخی مسائل تمایل زیادی به شرکت در این جلسات ندارند. در این آموزش قصد داریم به بررسی این مشکلات بپردازیم و راه کارهایی را برای برگزاری بهتر این جلسات ارائه دهیم. برنامه نویسانی که تجربه ی قبلی بدی در این زمینه داشته اند غالباً مسائلی از این دست را مطرح می کنند که:

- برخی انتقادات و نظرات در مورد کدها این احساس را در برنامه نویس ایجاد می کند که منتقد تنها قصد خراب کردن وجهه ی او را دارد و فرصتی را پیدا کرده است تا به شخصیت او حمله کند و کار او را به باد انتقاد بگیرد.

- برخی منتقدان به جای بررسی مسائل مهم و اساسی تنها روی ساختار و چیدمان کدها مثل نحوه ی تورفتگی ها تأکید می کنند.

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

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

- در برخی مواقع، تیم بررسی کدها را تا زمانی که بخش اصلی کدها کامل شود به تأخیر می اندازد و پس از آن به دلیل حجم زیاد اطلاعات، مرور کدها دیگر نه امکان پذیر است و نه اثربخش خواهد بود.

- در بعضی موارد چون اعضا با این دید وارد جلسه می شوند که قرار است تنها یک وظیفه ی اداری را به دستور مدیر انجام دهند، توجه چندانی به جریان جلسه ندارند و انرژی کافی را صرف پیش برد آن نمی کنند.

- در برخی جلسات هم افرادی به جلسه دعوت می شوند که هیچ ارتباطی با پروژه ندارند و این موضوع کمی برای توسعه دهندگان نگران کننده است چرا که ممکن است نظرات خامی به زبان آورند!

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

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

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

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

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

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


برنامه نویسی چیست؟

 
  • تشکر
Reactions: SAEEDEH.T و Saghár✿

*KhatKhati*

مدیر بازنشسته رمان ۹۸
کاربر رمان ۹۸
  
عضویت
16/7/20
ارسال ها
2,693
امتیاز واکنش
9,215
امتیاز
233
محل سکونت
گلنمکستان
زمان حضور
63 روز 21 ساعت 58 دقیقه
نویسنده این موضوع
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: به چیدمان کدها توجه کنید!


اگر تجربه ی کدنویسی برنامه های نسبتاً بزرگ را داشته باشید حتماً متوجه شده اید که بیش تر وقت خود را به جای نوشتن کدهای جدید صرف مرور کدهای قبلی کرده اید تا تغییراتی را که لازم است در آن ها اعمال کنید و اشکالات آن ها را رفع نمایید. یکی از فاکتورهای مهمی که سرعت و کارایی شما را در مرور کدها تعیین می کند چیدمان کدها (Code Layout) است. یک چیدمان خوب با تورفتگی های صحیح و قرار دادن میزان فضای سفید مناسب، تفاوت چشمگیری را در مدت زمانی که طول می کشد تا دستورات یک کد را بررسی کنید و منظور آن ها را بفهمید ایجاد می کند. در این آموزش قصد داریم راه کارهایی را برای بهینه سازی نحوه ی چیدمان و آرایش کدها مطرح کنیم.

پویش کدها را ساده تر کنید:
فرض کنید تیم شما برنامه ای نوشته است که چندین کلاس مختلف دارد. در هنگام اجرای کلاس های برنامه، برای کامپایلر تفاوتی ندارد که در بدنه ی کلاس ابتدا عناصر public تعریف شده اند یا عناصر private، یا این که ابتدا ثابت ها تعریف شوند یا فیلدها و یا متد ها؛ به عبارت دیگر، ترتیب قرار گرفتن اجزای یک کلاس برای کامپایلر تفاوتی ندارد، اما برای شما چه طور؟

باید بدانید که افراد غالباً در تطبیق الگوهای بصری خوب هستند، بنابراین یکی از رویکردهایی که می توانید با دنبال کردن آن، مرور کدهای خود را آسان تر کنید این است که الگویی برای قرار دادن عناصر برنامه در کدهای خود تعریف کنید و تمام اعضای تیم در زمان کدنویسی بخش های مختلف برنامه از آن الگو پیروی کنند. به عنوان نمونه، می‌توان زبان برنامه نویسی پی اچ پی را مثال زد. سایتی تحت عنوان php-fig.org استانداردی تحت عنوان PSR که مخفف واژگان PHP Standard Recommendation است را برای برنامه نویسان پی اچ پی طراحی کرده که علاقمندان با استفاده از این استانداردها می توانند از کدهایی برخوردار شوند که سایر برنامه نویسان پی اچ پی با نگاه کردن به کدهای ایشان کمتر دچار سردرگمی شوند (لازم به ذکر است که در کدنویسی سکان آکادمی نیز از این استاندارد استفاده شده است.)

برای روشن تر شدن این مسئله، از سایر زبان های برنامه نویسی هم چند مثال می زنیم. اکثر برنامه نویسان ++C ابتدا تعریف متدهای public را در بدنه ی کدهای خود قرار می دهند و در زیر آن ها متدهای private را، در حالی که این رویه در کدنویسی به زبان #C کاملاً برعکس است. البته توجه کنید که ما این الگوها را به طور تجربی در زمان یادگیری هر زبان از منابع آموزش دهنده دریافت کرده و ناخواسته از آن ها تبعیت می کنیم و پیروی از آن ها باعث می شود سایر برنامه نویسان هم به راحتی کدهای ما را بخوانند، با این حال شما می توانید استاندارد مخصوصی برای خود تعریف کنید تا تمام اعضای تیم از آن تبعیت کنند.

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

چیدمان خود را تا جای ممکن فشرده سازید:
اکثر برنامه نویسان زمانی که در یک محیط توسعه کد می زنند هر کامند یا دستوری را در یک خط جداگانه وارد می کنند، تا جایی که می بینیم بیش تر دستورات حتی تا پایان خط هم ادامه پیدا نمی کنند، بنابراین در پایان کار برنامه ای با خطوط زیادی کد و فضاهای خالی بی شمار دارند. با این حال باید بدانید که بهترین رویکرد این است که چیدمان خود را -تا جایی که به خوانایی کدها لطمه ای نزند- فشرده سازید. مزیت این کار آن است که حرکت میان کدها راحت تر و سریع تر می شود (به خصوص در برنامه های بزرگ)، یا به طور مثال در برنامه های تحت وب حجم داده هایی که از سمت سرور به کلاینت ها ارسال می شود و یا زمان لود شدن صفحات را کاهش می دهد.


برنامه نویسی چیست؟

 
  • تشکر
Reactions: SAEEDEH.T و Saghár✿

*KhatKhati*

مدیر بازنشسته رمان ۹۸
کاربر رمان ۹۸
  
عضویت
16/7/20
ارسال ها
2,693
امتیاز واکنش
9,215
امتیاز
233
محل سکونت
گلنمکستان
زمان حضور
63 روز 21 ساعت 58 دقیقه
نویسنده این موضوع
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: طرح‌های خود را بی‌نقص کنید


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

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

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

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

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

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


برنامه نویسی چیست؟

 
  • تشکر
Reactions: SAEEDEH.T و Saghár✿

*KhatKhati*

مدیر بازنشسته رمان ۹۸
کاربر رمان ۹۸
  
عضویت
16/7/20
ارسال ها
2,693
امتیاز واکنش
9,215
امتیاز
233
محل سکونت
گلنمکستان
زمان حضور
63 روز 21 ساعت 58 دقیقه
نویسنده این موضوع
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: برنامه های خود را به زبان مشتریان بنویسید!

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

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

new_product_name = "Icecream"
// or
new_product_name = "Pen"
در مورد رویه ها نیز به همین ترتیب عمل کنیم. مثلاً این طور نیست که کارکنان انبار تمام اجناس خریداری شده را در یک قسمت نگه داری کنند، بلکه متناسب با نوع محصول، آن ها را در بخش های مختلف انبار می کنند. مواد غذایی فاسد شدنی را در سردخانه، کرم ها را در بخش لوازم بهداشتی، پارچه ها را در بخش منسوجات و . . . وقتی نوبت به شما می رسد تا این رویه را مدل سازی کنید، شاید با خود فکر کنید در این مدل مجازی کنار هم قرار دادن کالاهایی مثل مواد غذایی، لوازم بهداشتی، و غیره تأثیری روی آن ها نمی گذارد. بنابراین به جای آن که با صرف زمان بیش تر و نوشتن کدهای بیش تر، نام این محصولات را در جداول جداگانه ای در دیتابیس قرار دهید، تصمیم می گیرید تمام آن ها را در یک جدول قرار داده تا در زمانی که بخواهید وضعیت یک محصول را بررسی کنید، کدهای برنامه به جای چند جدول دیتابیس، یک جدول را بیش تر در دیتابیس نگردند. شاید این کار برای شما راحت باشد، اما این نکته را در نظر داشته باشید که این برنامه برای صاحب فروشگاه است، نه شما!

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


برنامه نویسی چیست؟

 
  • تشکر
Reactions: SAEEDEH.T و Saghár✿

*KhatKhati*

مدیر بازنشسته رمان ۹۸
کاربر رمان ۹۸
  
عضویت
16/7/20
ارسال ها
2,693
امتیاز واکنش
9,215
امتیاز
233
محل سکونت
گلنمکستان
زمان حضور
63 روز 21 ساعت 58 دقیقه
نویسنده این موضوع
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: انتخاب ابزار مناسب


بسیاری از نرم‌افزارها و اپلیکیشن هایی که ما امروزه می‌بینیم و به موفقیت‌های نسبتاً خوبی هم دست پیدا کرده‌اند هرگز کدنویسی آن‌ها از صفر شروع نشده است بلکه این دست نرم‌افزارها با استفاده از ابزارهای موجود -در اینجا منظور از ابزار کامپوننت ها، کتابخانه ها، فریم ورک ها و … است- ساخته شده اند. در همین راستا، زمانی که قصد شروع پروژه ای را داریم حتماً می بایست مناسب‌ترین ابزارها را برای پروژه خود انتخاب کنیم و هرچه پروژه ما بزرگ‌تر باشد، لزوم تحقیق در این زمینه نیز بیشتر خواهد شد.

در ارتباط با دلایلی که چرا برخی از پروژه ها از صفر کدنویسی نمی‌شوند و در آن‌ها از کامپوننت ها و کتابخانه‌های موجود استفاده می شود، می‌توان موارد زیر اشاره کرد:

۱- نرم‌افزارها و اپلیکیشن ها در طول زمان رشد می کنند، پیچیده‌تر می‌شود و در نهایت نسبت به نسخه بتای خود به مراتب حرفه‌ای تر می‌شوند و این در حالی است که زمان اختصاص یافته برای توسعه این دست نرم‌افزارها و اپلیکیشن ها محدود و محدودتر می گردد. منطقی‌تر به نظر می‌رسد اگر برنامه نویسان بیشتر از آن که روی کدنویسی زیرساخت پروژه زمان صرف کنند (که در اکثر پروژه ها این زیرساخت تاحدودی مشابه است)، تمرکز خود را روی کدنویسی بخش‌های اختصاصی پروژه شان متمرکز سازند.

۲- کامپوننت ها و فریم ورک هایی که در سرتاسر دنیا مورد استفاده قرار می‌گیرند به مراتب دارای باگ های کمتری نسبت به کدهایی هستند که یک برنامه نویس فریلنسر در اتاق کارش می نویسد!

۳- بسیاری از فریم ورک های موجود در بازار به صورت رایگان در اختیار توسعه دهندگان قرار می‌گیرد و همین مسأله حاکی از آن است که هزینه‌های مرتبط با توسعه یک پروژه به مراتب کاهش خواهد یافت.

۴- توسعه زیرساخت پروژه در زمینه‌های مختلف مثل امنیت، راندمان و … کاری حساس، دقیق، زمان بر و پرهزینه است اما اگر شما از کامپوننت های متن باز و رایگان استفاده کنید، می توانید از به روزرسانی به هنگام و ساختاری پروژه خود اطمینان حاصل کنید.

به خاطر داشته باشید
توجه داشته باشیم که شرکت فیسبوک ابتدا برای برنامه نویسی این شبکه ی اجتماعی از زبان برنامه نویسی PHP استفاده کرد اما پس از آن که این شبکه جای خود را در میان کاربران باز کرد و به درآمدزایی هنگفتی دست یافت، مدیران این شرکت تصمیم گرفتند زبان اختصاصی این شرکت تحت عنوان Hack را توسعه داده و شبکه ی اجتماعی فیسبوک را روی آن بنا کنند.

آنچه مسلم است این که انتخاب ترکیبی از ابزارهای موجود برای توسعه اپلیکیشن خود کاری حساس بوده و نیازمند برخورداری از تجربه در این زمینه است. برای همین منظور، راه کارهایی را در ادامه برای شما آورده‌ایم که می‌تواند به شما در انتخاب ابزار مد نظرتان کمک شایانی کند:

- هر ابزاری در یک بسـ*ـتر خاص بهترین اثربخشی را خواهد داشت. منظور ما در اینجا از بسـ*ـتر عبارت است از ساختار دیتابیس، پروتوکل های ارتباطی، سرور،‌ وب سرویس، ای پی آی و … پس این احتمال وجود دارد ابزاری که شما انتخاب کرده‌اید با بسـ*ـتر توسعه نرم افزاری تان همخوانی نداشته باشد و همین مسأله منجر به پیچیده‌تر شدن پروژه شما خواهد شد.

- ابزارهایی که امروزه مشاهده می‌کنیم از عمر مشخصی برخوردارند و زمانی که آپدیتی برای آن‌ها به بازار عرضه می‌شود و یا نسخه جدیدی از آن‌ها در دسترس توسعه دهندگان قرار می گیرد، ممکن است -اگر نگوییم حتماً همین‌طور است- شاهد تغییرات بسیاری نسبت به نسخه قدیمی باشیم که گاهی اوقات نسخه های جدید از یک ابزار خاص -مثلا یک فریم ورک برنامه نویسی- دارای تغییرات ساختاری زیادی نسبت به نسخه قبلی است که آن ها را اصلا غیر قابل مقایسه می کند. به طور مثال، فریم ورک برنامه نویسی تحت وب لاراول، در نسخه ۵ خود کاملاً ساختار این فریم ورک را تغییر داده و این در حالی است که اگر شما از نسخه ۴ این فریم ورک استفاده می‌کرده اید و حال قصد مهاجرت به آخرین نسخه را دارید، کل پروژه شما دستخوش تغییر خواهد شد (توجه داشته باشیم که هرچه تعداد فریم ورک ها و ابزارهای استفاده شده در پروژه ما بیشتر باشد، عمق این فاجعه هم بیشتر خواهد شد!)

- برخی از ابزارهای موجود نیازمند کانفیگ یا تنظیم کردن هستند که مسأله تنظیم کردن آن‌ها شاید نیازمند صرف وقت و هزینه قابل توجهی باشد.

- برخی از ابزارهای به اصطلاح رایگان آن طور که باید و شاید Free نیستند. در ابتدا ما تصور می‌کنیم که ابزار مد نظر ما کاملاً رایگان است و شروع به استفاده از آن می‌کنیم اما وقتی پروژه به جاهای حساس خود می‌رسد و نیازمند استفاده از کامپوننت های خاصی است، کاشف به عمل خواهد آمد که می بایست بخشی از سورس کد را از توسعه‌دهنده اصلی خریداری کنیم و همین مسأله می‌تواند آینده نرم‌افزار ما را تحت الشعاع قرار دهد.

- برخی از ابزارها پس از توسعه نرم‌افزار با آن‌ها برای ما محدودیت ایجاد می کنند. به طور مثال، برخی از لایسنس های نرم افزاری هستند که توسعه دهندگانی که از آن‌ها استفاده می‌کنند را ملزم به انتشار نرم افزارشان به علاوه سورس کد آن به صورت کاملا باز و رایگان می‌کنند که چنین محدودیتی مسلما برای خیلی از توسعه دهندگان خوشایند نخواهد بود!

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


برنامه نویسی چیست؟

 
  • تشکر
Reactions: SAEEDEH.T و Saghár✿

*KhatKhati*

مدیر بازنشسته رمان ۹۸
کاربر رمان ۹۸
  
عضویت
16/7/20
ارسال ها
2,693
امتیاز واکنش
9,215
امتیاز
233
محل سکونت
گلنمکستان
زمان حضور
63 روز 21 ساعت 58 دقیقه
نویسنده این موضوع
نود و هفت چیزی که هر برنامه‌نویسی باید بداند: پیش از آن که دیگران را متهم کنید، کد خود را چک کنید!


رفتاری رایج در میان اکثر برنامه نویسان دنیا این است که وقتی اسکریپتی می‌نویسند که کار نمی کند، پیش از هر چیز تقصیر را به گردن کامپایلر، وب سرویس و یا حتی سایر برنامه نویسان می‌اندازند که چنین رویکردی در اکثر مواقع نادرست است. اگرچه گاهی اوقات پیش می‌آید که مثلاً باگی در یک وب سرور مثل آپاچی به وجود می‌آید و همین مسأله منجر به بوجود آمدن مشکلی برای ما می‌شود، اما از آنجا که چنین نرم افزارهایی جهانی هستند و عدم وجود باگ در آن‌ها از اهمیت ویژه ای برخوردار است، توسعه دهندگان چنین نرم افزارهایی در اسرع وقت آن باگ را رفع خواهند کرد. لذا وقتی کد ما کار نمی کند، پیش از هر چیز و هر کس، می بایست انگشت اتهام را به سمت خودمان نگاه داریم …

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


برنامه نویسی چیست؟

 
  • تشکر
Reactions: SAEEDEH.T و Saghár✿
shape1
shape2
shape3
shape4
shape7
shape8
بالا