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

چگونه در برنامه نویسی کد های بهتری بنویسیم؟ : در این مقاله به بررسی موضوع clean code در برنامه نویسی و بهینه کد زدن میپردازیم . شاید کلمه elegant یا clean را شنیده باشید که برنامه نویس های حرفه ای در کار هایشان شاید بکار ببرند و یا اگر به کار نبرند کد هایشان تمیز و کاملا حرفه ای است .به طوری که اگر پروژه را ۲ سال یا هرچند سال هم متوقف کنند بعد از بازگشتن به پروژه خواندن کد های خودشان عجیب و غریب و یا غیر ممکن نیست . چراکه بهینه و تمیز و با اصول کد زده اند .و یا هر کس دیگری که بخواهد در پروژه مشارکت کند براحتی میتواند کد ها را بفهمد . ما در این مقاله به بررسی چند نکته برای تمیز تر کد زدن و منابعی برای دنبال کردن clean code میپردازیم .چگونه در برنامه نویسی کد های بهتری بنویسیم؟بهتر است مقاله را با یک جمله معروف شروع کنیم :“Any fool can write code that a computer can understand. Good programmers write code that humans can understand.”هر کسی (احم…) میتواند کدی بنویسد که کامیپوتر بفهمد , برنامه نویس خوب کدی مینویسد که انسان ها بتوانند بفهمند .-Martin Fowlerمنظور چیست؟منظور این است که هر کسی میتواند کدی بنویسد که کامپیوتر قادر به کامپایل و یا تفسیر و اجرای آن باشد و کامپیوتر برایش فرقی ندارد که کد شما تمیز است تمیز نیست قابل نگهداری است نیست و…ولی یک برنامه نویس خوب همیشه کدی مینویسد که برنامه نویس های دیگر بتوانند براحتی آن را بخوانند .کد خوب فقط و فقط کار نمیکند , کد خوب ساده است , کد خوب قابل نگهداری است , کد خوب قابل تست و ماژولار است .بگذارید از این نقل قول ها بیرون بیاییم و به چند تا از فواید کد تمیز بپردازیم تا به اهمیت آن پی ببرید و با اشتیاق بیشتر مقاله را دنبال کنید :حل کردن مشکلات و باگ ها بسیار آسان تر میشود .وقت کمتری از شما میگیرد .مشارکت با برنامه نویسان دیگر را آسان تر میکند .کیفیت کد شما بالاتر میرود .آزمایش آسان کد ها .قابل نگهداری : (منظور این است که اگر کد خوبی بنویسید میتوانید دفعات بعد هم از آن استفاده کنید و مجبور به دوباره نوشتن نیستید)ثبات : (مثال : وقتی به یک سوپر مارکت میروید فرض کنید همه اجناس درهم و نا مشخص و نامنظم باشند و بدون نوشته یا دسته بندی کردنی , حتما برای شما پیدا کردن جنس مورد نظر بسیار بسیار سخت خواهد شد)خوشحالی : (باور کنید توسعه دهندگانی که کد تمیز مینویسند خوشحال تر و سرحال ترند تا آن دسته از توسعه دهندگانی که تمیز کد نوشتن و استاندارد هارا رعایت نمیکنند چرا که با تمیز کد نوشتن باگ ها زود تر حل میشوند و مشکلات بهتر و آسان تر خواهند بود)توصیه هااز اسم های با معنا استفاده کنیدمتغیر ها فانکشن ها و کلاس هایی که در برنامه نویسی استفاده میکنیم باید نام هایشان مفهومی و معنا دار باشند . منظورمان چیست؟ برای مثال شما وقتی یک فانکشن دارید که در آن یک بخشی از برنامه را نوشته اید , نام آن فانکشن باید به قدری معنا دار و خوب باشد که اگر برنامه نویس دیگری برای خواندن کد های برنامه شما آمد براحتی از نام آن فانکشن کارایی و عملکردش را بفهمد .اگر آن برنامه نویس مجبور بود که برای فهمیدن کار آن فانکشن محتوای فانکشن را بخواند پس شما اسم مناسبی انتخاب نکرده اید .به این نقل قول بسیار زیبا توجه کنید :“I’m not a great programmer; I’m just a good programmer with great habits.”— Kent Beckمن یک برنامه نویس عالی نیستم , من یک برنامه نویس خوب هستم با عادت های عالی …منظور نقل قول بالا چه بود؟اگر کد تمیز نوشتن را برای خودتان به نوعی یک عادت کنید و برای نوشتن کد بهینه تر وسواس به خرج دهید کم کم جزعی از عادت های شما میشود که هر موقع برای برنامه نویسی پشت کامپیوتر مینشینید تمیز کد میزنید .پس تمیز کد نوشتن را یک عادت کنید .یک مثال دیگر : اسم متغیر یا فانکشن هارا به این صورت نگذارید ‘CalcTan()‘ بجای این طور نوشتن به این صورت بنویسید ‘CalculateTangent()‘به هر کلاس یا فانکشن یک هدف بدهیدیک هدف یا یک کار به هر فانکشن یا کلاس در برنامه هایتان بدهید .تا به حال به فانکشن هایی که هزاران خط کد و یا کار های زیادی میکنند برخورده اید؟؟ در این نوع فانکشن ها که تمیز کد زدن رعایت نشده اصلا نمیشود برنامه را فهمید و قابل خواندن نیست .پس به هر فانکشن و یا کلاسی که در برنامه دارید یک هدف و یا یک کار را وا گذار کنید . یکی از اصل های تمیز کد نوشتن شکستن فانکشن ها و یا کلاس های طولانی در قسمت های کوچک کوچک است . به یاد داشته باشید که هر فانکشن و یا کلاسی یک کار را انجام دهد و هرچه ساده تر تمیز تر …“Programming is breaking one big impossible task into several small possible tasks.”— Jazzwantبرنامه نویسی شکستن یک وظیفه بزرگ و غیر ممکن در چند وظیفه کوچک و ممکن است .منظور چیست؟ منظور نقل قول بالا دقیقا همان شکستن فانکشن ها و تبدیل کردن ان ها به قسمت های کوچک تر است .حذف کد های غیر ضروریاین بخش را با یک مثال بیان میکنیم : تا به حال برایتان پیش آمد که اگر یک قطعه از کد کار نکرد و شما آن را کامنت کردید و پایین آن همان قطعه کد را past کردید و بعد از درست شدن آن قطعه کد کامنت را نیز نگهداشته اید ؟اگر این موقعیت برایتان پیش آمده باید بگویم که شما اشتباه کرده اید چون قسمت ها و قطعه های غیر ضروری برای تمیز تر شدن کد باید حذف شوند .برای نحوه کد نویسی خودتان یک استایل و شیوه داشته باشیدفرض کنید یک بچه بدنیا میآید , بعد از بزرگ شدن در خانواده اش با یک فرهنگ خاص و طرز تفکر خاص و یک شیوه بزرگ میشود . پس اگر تازه کار هستید شما نیز مثل آن بچه باید سعی کنید بهترین شیوه و استایل را انتخاب کنید برای کد نوشتن خودتان.چرا که در اول کار شما به ریشه خود شکل میدهید شما ریشه میکنید . پس باید با روش و شیوه درست کد نویسی آشنا باشید .(استاندارد ها و نحوه های نوشتار صحیح کد نویسی را یاد بگیرید, در هر زبانی به خوبی کد بزنید).کد های دیگران و حرفه ها را بخوانیدجدا از فواید خواندن کد های دیگران باید بگویم که خواندن کد های استاد ها و حرفه ای ها بسیار بسیار برای نوشتن کد های تمیز کمک میکند و بهتر است که با شیوه های نوشتن دیگران و کد های دیگران نیز آشنا شوید .شما با خواندن کد های دیگران با استایل آن ها و شیوه نوشتنشان آشنا خواهید شد و درک بهتری از clean code خواهید داشت . و بهترین منبع برای اینکار نیز پروژه های open source در گیت هاب هستند .کامنت های خوب بنویسیدیکی از قدیمی ترین توصیه های برنامه نویسی نوشتن کامنت های خوب است . شاید در اول کار تازه کار هایی که به برنامه نویسی می آیند و کامنت کردن را یاد میگیرند توجهی به آن نکنند و یا شاید برعکس over-comment – describing کنند (زیاد توضیح دادن با گذاشتن کامنت).ولی کامنت خوب کامنتی است که :کامنت ها برای این بوجود آمده اند که توضیح دهند چرا یک قطعه کد وجود دارد نه برای عملکرد یک قطعه کد و یا … و اگر یک کامنت به خوبی نوشته شده باشد self-explanatory است (خودش به خوبی بیانگر همه چیز هست). و اغلب قبل قطعه کد مورد نظر می آیند .در آخراین توصیه را جدی بگیرید و از همین الان هر برنامه ای که میخواهید بنویسید و یا در حال نوشتن آن هستید را clean code کنید و تمیز تر کد بزنید . شاید وقتتان را برای انتخاب نام مناسب و دقت روی نوشتار صرف کند ولی تلف نمیکند .چرا که در آخر ساخت یک برنامه یا یک پلتفرم اگر با کد تمیز باشد بسیار بسیار بهتر از این است که کدی باشد که قابل خواندن نیست و یا واضح نیست . پس این توصیه را جدی بگیرید و از الان شروع به نوشتن کد تمیز کنید . (شاید سال ها طول بکشد که استایل و شیوه کد نوشتن خود را در یابید شایدم نه ولی تمیز کد نوشتن مستلزم تجربه بالاست پس نا امید نشوید و همچنان در حال سعی کردن باشید).اگر میخواهید تمیز کد زدن را بهتر یاد بگیرید به این کتاب سری بزنید.