<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های محمد حسن عاطفت</title><link>https://virgool.ir/feed/@atefatcoding</link><description>Backend Developer (PHP/Larvel)</description><language>fa</language><pubDate>2026-11-12 01:25:21</pubDate><image><url>https://files.virgool.ir/upload/users/1169813/avatar/5cFCX2.jpeg</url><title>محمد حسن عاطفت</title><link>https://virgool.ir/@atefatcoding</link></image><item><title>چه معیارهایی برای سنجش کیفیت یک کد وجود داره؟</title><link>https://virgool.ir/@atefatcoding/what-are-the-criteria-for-measuring-the-quality-of-a-code-ab2qzcsxc3fd</link><description>سلام به دوستان عزیزم. خیلی خوشحالم که مجددا دارم برای شما عزیزان مینویسم و میتونم دانش اندک خودم رو با شما به اشتراک بذارم. خب همونطور که در پست قبلی گفتم اولین قدم برای تبدیل شدن به یک برنامه نویس با ارزش و حرفه ای که شرکت ها آرزوشون رو دارن، داشتن دانش عمیق در مورد، ساختمان داده و الگوریتم هست. من هم از امروز قصد دارم برای شما در مورد این موضوعات بنویسم. البته باید بگم که این دانش رو نمیخوام صرفا تجربیش کنم و بنویسم بلکه قصد دارم مطالب رو از یک کتاب خوب که به زبان ساده ای هم نوشته شده به علاوه‌ی تجربه‌ی خودم بنویسم. امیدوارم از این سری پست های آموزشی در مورد ساختمان داده و الگوریتم خوشتون بیاد و به من با لایک و کامنت های زیباتون در ویرگول انرژی بدید. اگر سوالی هم دارید میتونید به راحتی بپرسید، اگر بلد باشم خوشحال میشم راهنماییتون کنم و اگر هم بلد نباشم قطعا میرم و جستجو میکنم و با جواب برمیگردم پیش شما و اگر هم به جواب نرسیدم میگم بلد نیستم ?. چون همونطور که قبلا گفتم قرار هست باهم و درکنار هم یادبگیریم و رشد کنیم ?.خب هیمن اول بگیم مطالب قرار هست از چه کتابی نوشته بشه:کتاب مدنظر ما کتاب A Common Sense Guide to Data Structures and Algorithms نوشته ی آقای Jay Wengrow از انتشارات The Pragramatic Programmers هست (البته چاپ دومش).خب بریم سراغ کتاب: فصل اول - چرا ساختمان داده مهم هست؟ (بخش اول)برای پاسخ به این سؤال بزارید اینطوری شروع کنم: همه ی ما وقتی اولین بار شروع کردیم به یادگیری کدنویسی فقط و فقط برامون مهم این بود که کدمون کار بکنه و تنها معیار برای سنجش کیفیت یک تیکه کد همین بود که آیا کدی که نوشتیم واقعا کار میکنه یا نه؟اما وقتی که تجربمون به مرور زمان افزایش پیدا میکنه شروع میکنیم به یادگیری در مورد افزایش کیفیت کدهایی که مینویسیم و در همین حین هم با لایه ها و ظرافت های بیشتر راجع به کیفیت کد آشنا میشیم. به مرور یاد میگیریم که ممکنه 2 قطعه کد در اختیارمون قرار بگیره و با اینکه کار یکسانی هم انجام میدهند ولی یکیشون میتونه بهتر از دیگری باشه و عمل کنه.خب برای اینکه کیفیت کدهامون بررسی کنیم معیارهای متعددی وجود داره. یکی از این معیارها قابلیت نگهداری کد یا همان Maintainability هست و همین Maintainability شامل چند بُعد میشه. این ابعاد عبارتند از: خوانایی کد یا Readability، سازماندهی کد یا Organization و ماژولار بودن کد یا Modularity.اما یک بُعد دیگر هم برای سنجش کیفیت یک کد وجود دارد و آن کارایی یا همان Efficiency کد هست. برای درک کارایی کد دو قطعه کد زیر رو مدنظر قرار بدید. هر دو قطعه کد یک هدف دارن و اون هدف چاپ اعداد زوج بین عدد 2 تا 100 هست اما یکی از این دو قطعه کد سریعتر از دیگری هست. دقت کنید ??:قطعه کد اول:def print_numbers_version_one(): &#xA;    number = 2 &#xA;    while number &lt;= 100: &#xA;        # If number is even, print it: &#xA;        if number % 2 == 0: &#xA;            print(number) &#xA;        number += 1قطعه کد دوم:def print_numbers_version_one(): &#xA;    number = 2 &#xA;    while number &lt;= 100: &#xA;        print(number)&#xA;&#xA;        # Increase number by 2, which, by definition, is the next even number&#xA;        number += 2فکر می کنید کدوم یکی از قطعه کدهای بالا سریعتر اجرا میشه؟ اگر قطعه کد دوم رو بگید، درست گفتید. اما به چه دلیل؟ چون قطعه کد اول حلقه اش بعد از 100 بار پیمایش به پایان میرسه اما قطعه کد دوم بعد از 50 بار پیمایش. با این حساب قطعه کد اول دو برابر قطعه کد دوم، گام برمیداره. این کتاب و پست های آموزشی ما در مورد نوشتن کدهایی با کارایی بالا هست. برای اینکه تبدیل یک برنامه نویس بهتر یا مهندس نرم افزار بهتر بشیم، باید توانایی نوشتن کدهایی با سرعت اجرای بالا رو بدست بیاریم. این خیلیی مهمه!اما اولین گام برای نوشتن کدهای سریع چی هست؟ احتمالا بازم درست حدس زدید :). و اون اینکه بدونیم ساختمان داده ها چیا هستند و ساختمان داده های متفاوت چه تأثیری میتونن روی سرعت اجرای کد ما داشته باشن. خب در اینجا بخش اول به پایان میرسه. امیدوارم از بخش اول خوشتون اومده باشه و متوجه شده باشید که چه معیارهایی برای سنجش کیفیت یک کد وجود داره ? و چرا ساختمان داده مهم هست. در بخش دوم میریم که بیشتر در ساختمان داده ها عمیق بشیم و با اولین ساختمان داده آشنا بشیم.  </description><category>محمد حسن عاطفت</category><author>محمد حسن عاطفت</author><pubDate>Tue, 14 Sep 2021 01:18:34 +0430</pubDate></item><item><title>تجربه من از شروع برنامه نویسی و چالش های این مسیر!</title><link>https://virgool.ir/@atefatcoding/my-experience-in-programming-tutorial-and-that-challenge-ewwwssrlilks</link><description>سلام به دوستان عزیزم. دوستانی که مثل من عاشق برنامه نویسی هستن و میخوان در این مسیر پیشرفت کنند. چند سالی هست که در حوزه ی برنامه نویسی وب با زبان PHP فعالیت میکنم و با وردپرس و لاراول هم کار کردم (چه شرکتی و چه شخصی) ولی تو این سال ها با خیلی از مشکلات دست و پنجه نرم کردم تو دنیای برنامه نویسی و همینم سرآغاز مشکلات من شد و باعث شد که حتی یه مدت کوتاه برنامه نویسی رو  رها کنم و برم سراغ حوزه های دیگه مثل دیجیتال مارکتینگ و یا کلا مدتی از کد دور بودم به فعالیت های دیگه میرسیدم ?‍♂️ (حدود 2 سال از عمرم بدون کد تلف شد متاسفانه). اما چرا؟ چرا این مشکلات بوجود اومد و من رو از کد خسته کرد و حتی اجازه نداد من اونطوری که باید در مسیرم رشد کنم؟ چون برنامه نویسی رو اصولی و مهندسی یاد نگرفته بودم بلکه کد نویسی رو یادگرفته بودم. صرفا بلد بودم کدی بنویسم که کار کنه و ذوق میکردم که به به، عجب برنامه ای نوشتم ?ولی دوباره مشکل از جایی شروع میشد که قرار بود برنامه رو توسعه بدم و یک ویژگی جدید به سیستم اضافه کنم؟ یا اینکه منابع سیستم کم میومد درصورتی که منابع سیستم واقعا خوب بود برای میزبانی از اون نرم افزار. یا اینکه یه فرد دیگه میومد نرم افزار رو توسعه بده ولی نرم افزار انقدر بد نوشته شده بود که دیگه اون فرد به این راحتی نمیتونست توسعه نرم افزار رو انجام بده و اگرم موفق میشد که توسعه بده بالاخره یک جایی به نتیجه میرسید که سیستم دیگه قابل نگه داری نیست و باید از نو سیستم رو بنویسن و توسعه بدن و این مستلزم این هست که کارفرما هزینه و سرمایه گذاری مجدد انجام بده و وای به اون روزی که اون فرد جدید هم یک کدنویس باشه و نه یک برنامه نویس که دیگه خدا به داد برسه میشه قوز بالای قوز. اینجاست که من به عنوان یک کدنویس، نه  برنامه نویس، بیشترین ضربه رو به اون شرکت یا اون فرد زدم چون من بنیان اون برنامه رو اشتباه چیدم و این میشه حق الناس که من روش به شدت حساسم ?. بگذریم، دید که چقدر مشکلات بوجود اومد فقط به واسطه ی اینکه من مسیر آموزشیم رو اشتباه رفتم. من اول زبان PHP یادگرفتم. بعدش شی گرایی بصورت سطحی و نه عمقی (مثل هزاران آموزش سطحی شی گرایی در سطح وب)، بعد یه دوره آموزش طراحی قالب و افزونه وردپرس دیدم. بعد برای خودم چندتا قالب و افزونه وردپرس درست کردم و اینجا بود گفتم من خدای توسعه وردپرسم. بعد رفتم سراغ لاراول و آموزش لاراول دیدم و همزمان یه فروشگاه اینترنتی هم نوشتم و اینجا بود که گفتم تبریک به تو تبریک به من و تبریک به همه، محمد حسن تو الان شدی یک برنامه نویس تاپِ لاراول. تا اینکه رفتم مصاحبه و قبول شدم و روز اول خوشحال رفتم سرکار و کد رو به من دادن برای مطالعه (شرکتش هم قوی بود انصافا و برنامه نویس داشتن نه کد نویس) و اینجا من هنگ شدم ? چرا؟ چون چیزهایی رو دیدم که اصلا تا اون روز ندیده بودم! اصلا کدها و ارتباطاتشون نمیفهمیدم? اون کدا پُر بود از دیزاین پترن ها و الگوریتم ها و ساختمان داده ها و معماری های قشنگ و ... که من فقط اسمشون شنیده بودم و هیچ وقت به سراغشون نرفته بودم. خلاصه آقا من فقط چند ماه تو اون شرکت دَووم آوردم و از شرکت بصورت دو طرفه خداحافظی کردم ?. البته علت خروجم از شرکت فقط دانش کم فنیم نبود و مسائل دیگه هم بود مثل راه دور و ....خلاصه اومدم بیرون از اون شرکت و بعدش فهمیدم که اَی دل غافل ?‍♂️ خیلی چیزای مهم تر برای برنامه نویس شدن وجود داره و اصلا عیار یه برنامه نویس به همون چیزاس که من اصلا اونها رو نداشتم و بهشون بها نمیدادم. خلاصه نشستم و شروع کردم به خوندن در مورد اونها ولی بصورت سطحی ولی بعضی از اونها رو بطور عمیق مطالعه کردم، خودم فهمیدم کدهایی که میزنم نسبت به گذشته بهتر شده بود. به همین دلیل دوباره وارد کار شدم و کار کردم و در کنار افراد با تجربه بیشتر یادگرفتم. خلاصه تجربه های چالش برانگیز زیاد داشتم و چندتا پروژه فریلنسری انجام دادم که خوب بود واقعا. دیگه الان هم جایی مشغول به کار نیستم چون به زودی قرار هست که برم به خدمت مقدس سربازی ?‍♂️. ولی بعد از همه‌ی این تجربه ها تصمیم گرفتم خیلی خیلی عمیق شروع کنم به مطالعه‌ی اصول مهندسی نرم افزار و مطالبی که یک برنامه نویس باید بلد باشه تا بتونه هم رشد کنه و هم از چالش های کاریش لذت ببره?.الان هم که این داستان برای شما میتوسم یک پروژه در دست دارم که یک سیستم آزمون آنلاین هوانوردی است برای افرادی که در صنعت هوانوردی مشغول به فعالیت هستند و شکر خدا ازش استفاده هم میشه و بدون مشکل داره کار میکنه ? و همزمان هم در حال توسعه‌ش هستم و هم در حال ریفکتورینگ. حالا چرا ریفکتورینگ؟ چون هر روز دارم بواسطه مطالعه و یادگیری هام کدهایی که نوشتم رو بهتر و اصولی تر و خوانا تر و از همه مهمتر، قابل نگهداری تر میکنم که مهمترین ویژگی یک نرم افزار هست.حالا همه ی اینهارو گفتم که این مشکلات برای دوستانی که میخوان وارد حوزه‌ی برنامه نویسی بشن دیگه بوجود نیاد و تجربه من رو که احتمالا برای خیلی ها بوجود میاد، تجربه نکنن و بدونن در کنار ابزارها و فریم ورک هایی که یاد میگیرن باید چه مطالبی و عنوان هایی رو مطالعه کنن که واقعا تبدیل به یک برنامه نویس یا مهندس نرم افزار بشن تا اینکه صرفا فردی باشن که فقط بلده مثلا با لاراول کد بزنه ولی از پشت پرده و مباحث اصلی کاملا بی اطلاع هست که این واقعا میتونه در آینده به ضرر افراد بشه. و اگرم تجربش میکنن بدونن که باید چه کاری برای برطرف کردنش انجام بدن. من خودم خیلی خیلی دنبال رفع این مشکلاتم بودم و همچنان هم هستم و براش واقعا هزینه میکنم (البته هزینه برای کلاسای درست نه کلاسای الکی) چون برام مهمه که رشد کنم و در نهایت تبدیل بشم به یک مهندس نرم افزار واقعی که واقعا دوستش دارم. مثلا همین الان که دارم این تجربه رو برای شما عزیزان مینویسم همزمان در کلاس الگوهای طراحی آکادمی سون لرن هم شرکت کردم تا در این موضوع هم پیشرفت کنم و یکبار برای همیشه پرونده دیزاین پترن هارو ببندم و واقعا پیشنهاد میکنم در کلاس های اساتید خوب مثل استاد کیوان علی محمدی شرکت کنید چون ارزشش رو داره. من خودم بسیار از ایشون یادگرفتم و تا ابد شاگرد ایشون هستم.اما دوستان دیزاین پترن ها تنها قدم برای تبدیل شدن به یک مهندس نرم افزار نیست و ما باید قدم های دیگری هم برداریم. اما قدم اول برای تبدیل شدن به یک مهندس نرم افزار چی هست؟ مطالعه عمیق و کاربردی ساختمان داده و الگوریتمساختمان داده و الگوریتماز امروز سعی دارم کتاب ها و مقالاتی که میخونم و یا قبلا خوندم رو با شما دوستان عزیز به اشتراک بزارم تا باهم و در کنار هم رشد کنیم تا انشاءالله تبدیل به یک برنامه نویس با ارزش بشیم و از کار و زندگیمون لذت ببریم.امیدوارم سرتون درد نیومده باشه ???. دیگه بریم آماده بشیم برای اولین مطلب آموزشیمون که در مورد ساختمان داده و الگوریتم هست و قطعا چندین بخش هم داره ? و قراره چند جلسه‌ای رو از محضرش فیض ببریم??.</description><category>محمد حسن عاطفت</category><author>محمد حسن عاطفت</author><pubDate>Sat, 11 Sep 2021 16:34:55 +0430</pubDate></item></channel></rss>