چه معیارهایی برای سنجش کیفیت یک کد وجود داره؟

سلام به دوستان عزیزم. خیلی خوشحالم که مجددا دارم برای شما عزیزان مینویسم و میتونم دانش اندک خودم رو با شما به اشتراک بذارم. خب همونطور که در پست قبلی گفتم اولین قدم برای تبدیل شدن به یک برنامه نویس با ارزش و حرفه ای که شرکت ها آرزوشون رو دارن، داشتن دانش عمیق در مورد، ساختمان داده و الگوریتم هست. من هم از امروز قصد دارم برای شما در مورد این موضوعات بنویسم. البته باید بگم که این دانش رو نمیخوام صرفا تجربیش کنم و بنویسم بلکه قصد دارم مطالب رو از یک کتاب خوب که به زبان ساده ای هم نوشته شده به علاوه‌ی تجربه‌ی خودم بنویسم. امیدوارم از این سری پست های آموزشی در مورد ساختمان داده و الگوریتم خوشتون بیاد و به من با لایک و کامنت های زیباتون در ویرگول انرژی بدید. اگر سوالی هم دارید میتونید به راحتی بپرسید، اگر بلد باشم خوشحال میشم راهنماییتون کنم و اگر هم بلد نباشم قطعا میرم و جستجو میکنم و با جواب برمیگردم پیش شما و اگر هم به جواب نرسیدم میگم بلد نیستم ?. چون همونطور که قبلا گفتم قرار هست باهم و درکنار هم یادبگیریم و رشد کنیم ?.خب هیمن اول بگیم مطالب قرار هست از چه کتابی نوشته بشه:کتاب مدنظر ما کتاب 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(): number = 2 while number <= 100: # If number is even, print it: if number % 2 == 0: print(number) number += 1قطعه کد دوم:def print_numbers_version_one(): number = 2 while number <= 100: print(number) # Increase number by 2, which, by definition, is the next even number number += 2فکر می کنید کدوم یکی از قطعه کدهای بالا سریعتر اجرا میشه؟ اگر قطعه کد دوم رو بگید، درست گفتید. اما به چه دلیل؟ چون قطعه کد اول حلقه اش بعد از 100 بار پیمایش به پایان میرسه اما قطعه کد دوم بعد از 50 بار پیمایش. با این حساب قطعه کد اول دو برابر قطعه کد دوم، گام برمیداره. این کتاب و پست های آموزشی ما در مورد نوشتن کدهایی با کارایی بالا هست. برای اینکه تبدیل یک برنامه نویس بهتر یا مهندس نرم افزار بهتر بشیم، باید توانایی نوشتن کدهایی با سرعت اجرای بالا رو بدست بیاریم. این خیلیی مهمه!اما اولین گام برای نوشتن کدهای سریع چی هست؟ احتمالا بازم درست حدس زدید :). و اون اینکه بدونیم ساختمان داده ها چیا هستند و ساختمان داده های متفاوت چه تأثیری میتونن روی سرعت اجرای کد ما داشته باشن. خب در اینجا بخش اول به پایان میرسه. امیدوارم از بخش اول خوشتون اومده باشه و متوجه شده باشید که چه معیارهایی برای سنجش کیفیت یک کد وجود داره ? و چرا ساختمان داده مهم هست. در بخش دوم میریم که بیشتر در ساختمان داده ها عمیق بشیم و با اولین ساختمان داده آشنا بشیم.