مشخصات مقاله
چگونه کد تمیز بنویسیم؟
چگونه کد های تمیز بنویسیم؟
ممکن است برای شما هم اتفاق افتاده باشد که به قطعه ای از کد های قدیمی خود نگاه کنید و مدت زمان زیادی را صرف خواندن و فهم آنها کنید. و یا اینکه با تیم بزرگی کار کنید و هر روز مجبور باشید کد های نامرتب و طولانی را بخوانید.
در این مقاله ما چند نکته کوتاه و مفید را به شما معرفی میکنیم که با رعایت آنها میتوانید کد های تمیزتر و خوانا تری بنویسید.
مشخصات یک کد تمیز:
- سادگی و زیبایی- کد تمیز باید خوانا و قابل فهم باشد.
- متمرکز - هر تابع ، هر کلاس و هر ماژول باید با هدف مشخصی ایجاد شده باشد و فقط برای یک هدف مورد استفاده قرار بگیرد.
- کد تمیز باید با دقت و توجه فراوان نوشته میشود و بار ها اصلاح میشود تا به بهترین و ساده ترین شکل ممکن تبدیل شود. توجه به جزئیات نیز از اهمیت بسیار بالایی برخوردار است.
- تمامی تست ها بر آن اجرا شده است.
- بخش تکراری ندارد.
- کلاس ها، متد ها، توابع و بقیه اجزا در کمترین تعداد ممکن استفاده شده است.
اما چگونه کد های تمیز بنویسیم؟
نام های با معنی
از نام هایی استفاده کنید که هدف اصلی شما را نمایش دهند. ممکن است نام گذاری صحیح کمی وقت گیر به نظر بیاید، اما در واقع از هدر رفتن وقت شما جلوگیری میکند. نام متغیر ها، توابع، و یا کلاس ها باید به گونه ای انتخاب شود که به یک سوال مهم پاسخ دهد، " هدف از ساخت آنها چه بوده است؟ ". معمولا اگر مجبور شوید یک نام را در comment توضیح دهید، نام مناسبی انتخاب نکرده اید.
نام گذاری کلاس ها
توصیه میشود نام انتخابی شما برای کلاس ها و یا اشیا، یک اسم و یا یک عبارت اسمی باشد؛ مانند Account، AdressParser و یا Customer. از نام هایی مانند Data، Info ویا Processor برای کلاس ها اجتناب کنید. همچنین بهتر است از افعال برای نام گذاری کلاس ها استفاده نکنید.
نام گذاری متد ها
متد ها باید با استفاده از افعال و یا عبارات فعلی نام گذاری شوند؛ مانند postPayment، deletePage و یا Save . Accessor ها، mutator ها و predicate ها باید با توجه به مقدار آنها و با استفاده از پیشوند get و set نام گذاری شوند.
برای هر مفهوم از نامی مشخص استفاده کنید
برای هر مفهوم انتزاعی، یک نام مشخص انتخاب کرده و همواره از همان نام استفاده کنید. مثلا استفاده از get، fetch و retrive و یا استفاده از manage ، drive و controller در یک کد، اما برای کلاس های متفاوت، بسیار گیج کنند است. بهتر است برای هر یک از این مفاهیم، یک نام انتخاب کرده و در تمامی کلاس های خود از آن استفاده کنید.
توابع
اولین قانون نوشتن توابع کوتاه بودن آنهاست. تمامی خطوط در یک عبارت if، else و یا While باید به کوتاه ترین شکل ممکن و در یک خط نوشته شود که احتمالا هم این یک خط, تنها فراخوانی یک تابع خواهد بود. با این کار نه تنها توابع مورد استفاده بسیار کوتاه و مختصر خواهند بود، بلکه انتخاب نام با معنی نیز برای این توابع بسیار ساده است.
هر تابع ( و همچنین کلاس )باید با یک هدف نوشته شده و تنها یک علمکرد خاص داشته باشد. این قانون، Single Responsibility Principle(SRP) و یا "اصل تک وظیفه" نام دارد. طبق این اصل، هر تابع و یا کلاس باید تنها یک عملکرد داشته باشد.
برای اینکه از اعمال این اصل بر کد های خود اطمینان حاصل کنید، میتوانید از نام انتخابی خود برای تابع و یا کلاس کمک بگیرید. اگر تابع شما عملکردی بیش از آنچه در نام آن مشخص شده داشته باشد، احتمالا باید آن تابع را به دو یا چند تابع کوچکتر تقسیم کنید.
آرگومان های تابع
توابع شما نباید بیش از سه آرگومان داشته باشند. اگر لازم است برای تابعی بیش از دو و یا سه آرگومان درنظر بگیرید، احتمالا باید برخی از آن آرگومان ها را در کلاس جداگانه ای قرار دهید. کاهش تعداد آرگومان ها از طریق ایجاد اشیا، ممکن است راه خوبی به نظر نیاید، اما این طور نیست.
با نام گذاری درست و کاهش اندازه توابع تا حد ممکن، منطق کد واضح خواهد بود و رفع خطا ها و ویرایش کد به فرآیندی بسیار ساده تبدیل خواهد شد.
Comment ها
با استفاده از comment ها میتوانید بخش های پیچیده و توابع و محاسبات را در کد خود توضیح دهید تا در صورت مراجعه دوباره به کد، و یا مطالعه کد های شما توسط برنامه نویسان دیگر، منطق کد قابل فهم و ساده باشد. اما دقت کنید که در استفاده از comment ها زیاده روی نکنید در واقع در بهترین حالت ممکن، کد شما نباید به هیچ comment ای احتیاج داشته باشد. اکثر زبان های جدید بسیار شبیه به زبان انگلیسی اند و نیاز چندانی به توضیحات ندارند. با استفاده از توابع کوتاه و نام گذاری صحیح نیز میتوانید حجم comment های خود را به حداقل ممکن برسانید.
البته comment های قانونی که مربوط به copywrite و license ها هستند ضروری اند و حتما باید در کد قرار بگیرند.
از یک سبک کد نویسی استفاده کنید
اگر از قوانین مشخص و واضحی استفاده نکنید ممکن است کد شما نا هماهنگ و گیج کنند به نظر بیاید. استفاده از سبک یکسان در کار گروهی نیز از ارزش بسیار بالایی برخوردار است زیرا افراد متفاوت در یک گروه باید با قوانین مشخصی کد نویسی کنند تا بخش های مختلف کد، که توسط افراد متفاوتی نوشته شده است، برای همه قابل فهم و خوانا باشد. به همین علت توصیه میشود که از سبک های کد نویسی استاندارد استفاده کنید.
یکی از مهمترین مزیت های کد نویسی استاندارد، استفاده از قرارداد های نام گذاری است. مثلا در سبک PEP8 در زبان پایتون، نام گذاری کلاس ها با حروف بزرگ در ابتدای کلمه (MyClass) و نام گذاری توابع با حروف کوچک و با استفاده از زیر خط انجام میشود (my_function).
نظر نهایی
به خاطر داشته باشید که در مرحله ای میتوانید خوانایی کد خود را افزایش دهید. اگر در ابتدای کار، تمیز نوشتن کد برایتان مشکل است، میتوانید پس از اتمام کد هایتان، آنها را ویرایش کنید.