سلام
دوستان حرفه ای در لاراول یک سوال داشتم خدمتتون. دچطور میشه تشخیص داد که یک کد حرفه ای هست یا نه؟ چه المانهایی وجود داره برای جواب به این سوال؟ اگر یک کد به شما بدن بخواین بررسیش کنید چه چیزهایی رو چک میکنید؟
مثلا خود من یک سایت نوشتم که همه چیز داره و خوب هم کار میکنه. ولی یه ایراد بارز که خودم بخوام بگم این هست که همه چیز رو تو کنترلر نوشتم و مثلا توی مدلها هیچ اسکوپی وجود نداره.
ممنونم
نگاه کنید در نهایت چیزی که ما میخواهیم این هست که کد کار بکنه. و اگر کد کار بکنه شما نصف راه را رفتید.
حالا اینکه میفرمایید چجوری بفهمیم کد حرفه ای هست یا نه. پارامتر های مختلفی وجود داره و خیلی هاش بستگی داره به اون culture و فرهنگی که توی تیم یا شرکت شما برقرار هست. و یا ترجیح های شخصی.
مثلا من خودم به شخصه چند وقت هست که یکی از پارامتر های بزرگم توی برنامه نویسی برای اینکه ببینم کار طرف حرفه ای هست یا نه تست نویسی هست. کدی که تست نداشته باشه به نظر من حرفه ای نیست.
مسئله دوم بحث کد کثیف هست. کلاس های خیلی بزرگ و درهم جدا نکردن لاجیک های کد از یکدیگر و کد های تکراری و نامنظم یکی از نشانه های کد غیر حرفه ای هست که خود منم حتی زیاد دارم. ولی خوب سعی میکنم با استفاده از TDD که یکی از مراحلش همیشه ریفکتورینگ هست هی با ریفکتورینگ کدم بهتر کنم.
مسئله سوم نام گذاری کلاس ها و متغیر ها و توابع هست. کدی حرفه ای هست که شما بدون خواندن کامنت ها یا داکیومنت فقط از روی structure اون بفهمی که این کد چی هست و چیکار میکنه.
انتخاب نام با معنی برای کلاس ها و متد ها و باز مهم تر از همه متغیر ها خیلی خیلی به حرفه ای تر شدن کد و همینطور خوانایی و در آینده نگهداری آسان تر کمک می کنه.
مسئله چهارم hard code هست که به شدت کار غیر حرفه ای هست. متغیر های پرکاربرد و ثابت ها باید به صورت متغیر محیطی یا متغیر گلوبال و... تعریف بشه تا بشه بسته به نیاز و شرایط مختلف سریع با مقدار دیگه جایگزین بشه. حالا میخواد api_key باشه یا آدرس وب سرویسی که میخواد کال بشه یا تنظیمات کلی سیستم و....
دیگه از موارد دیگه که تاثیر میذاره استفاده از دیزاین پترن ها و قوانین کد نویسی هست که وجود داره. البته من خودم به شخصه خیلی پایبند نیستم و معتقدم همیشه همه اینها اونجور که باید کارا نیستند. ولی به صورت کلی استفاده ازشون توی جاهای مختلف میتونه به بهبود کد کمک کنه.
و خیلی چیزهای دیگه که به مرور دستتون میاد
@s.aerospace سعی کنید همیشه سرچ کنید.
تست نویسی چندین روش و حوزه داره از unit test که هر واحد نرم افزاری را تست میکنه تا مثلا feature test که یک فیچر کامل تست میکنه و...
ولی در کل تست نویسی چی هست. شما توی تست نویسی میایید مشخص میکنید که برنامتون چجوری باید عمل بکنه. مثل یک امتحان میمونه. یکسری سوال شما طرح میکنید. بعد کد شما اگر درست اجرا بشه باید تمام تست های شما pass بشه یا به عبارتی باید تمام سوالاتی که نوشتید را برنامه بتونه به درستی جواب بده.
مثلا شما یک تابع جمع میخواهید بنویسید. تستش چجوری میشه ؟
اینجوری که شما به عنوان تست میایید دو عدد بهش میدید مثلا 6 و 5 توقع دارید که تابع جمع به شما عدد 11 را برگردانه
این میشه یک تست برای تابع جمع حالا اگر تابعی که طراحی کردید درست کار کنه وقتی تست اجرا کنید اگر عدد 11 را برگردونه یعنی تابع داره درست کار میکنه و تست شما pass میشه ولی اگر این عدد را درست برنگردونه یعنی تابع ایراد داره و تست fail میشه.
یا مثلا توی فرانت اند میتونید تست بنویسید که چک کنه آیا فلان المنت با فلان محتوا توی این کامپوننت وجود داره و درست رندر شده یا نه.
و...
حالا شاید بخواهید بگید خوب تست نویسی چه کاری هست اینجوری که تایم بیشتری باید صرف کنیم و یکبار تست بنویسیم و بعد باز یکبار خود برنامه را بنویسیم.
مسئله ای که وجود داره این هست که اگر شما تست جامع بنویسید که تمام خطا ها و حالات احتمالی تا حد امکان پوشش بده. بعد موقع نگهداری یا ریفکتور و خطایابی خیلی کارتون راحت تر میشه.
چون برنامه نویسی مثل پازل حل کردن هست. شما میایید یک گوشه نرم افزار دست میزنید به هر دلیلی ریفکتور میکنید بعد دستی تست میکنید میبینید داره درست کار میکنه اما همه حالات نمیتونید تست کنید و بعد مسئله دیگه ای که هست شاید اون تیکه کد به تنهایی درست کار کنه ولی ترکیبش با یک بخش دیگه درست کار نکنه اینجا هست که تست ها به کمک شما میان و وقتی یک تغییری بدید داخل برنامه اگر تست هاتون جامع باشه و همش pass بشه.با اطمینان خیلی خیلی بیشتری میتونید بگید که چون تست ها pass شده پس برنامه هم داره به درستی کار میکنه. در حالیکه بدون تست خیلی نمیشه با اطمینان گفت که حتما برنامه کار میکنه.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟