برای یادگیری این مهارت دو بخش وجود دارد؛ دانش عالی و کار. دانش، الگوها و اصول، شیوهها و اکتشافاتی را به شما میآموزد که شما را در حرفه خود برتر میکند. اما این دانش با تمرین مداوم و سخت کار کردن به دست میآید.
بنابراین به طور خلاصه، یادگیری نوشتن کد تمیز کار سختی است. شما باید برای آن عرق بریزید. باید تمرین کنید، شکست بخورید و پیروز شوید و این مراحل را دوباره و دوباره تکرار کنید تا اینکه مهارت کافی را به دست آورید. هیچ راه ساده و یا ترفندی برای انجام این کار وجود ندارد.
در اینجا راههایی وجود دارد که میتوانید از هنر نوشتن کد تمیز و زیبا لذت ببرید.
"چه چیزی در یک نام نهفته است"
نامها در همه جای نرمافزار هستند. ما برای توابع، کلاسها، آرگومانها، پکیجها و غیره نام میگذاریم. ما فایلهای منبع، پوشهها و هر چیزی که درون آن است را نامگذاری میکنیم. پس ما از اسامی به طور مداوم استفاده میکنیم، بنابراین آنها مهمترین بخش در کدنویسی تمیز هستند.
نام شما باید هدف را آشکار سازد. انتخاب نامهای خوب زمانبر است، اما موجب صرفهجویی وقت در طول برنامه و توسعه آن میشود. بنابراین وقتی اسامی بهتری پیدا کردید، اسامی قبلی را تغییر دهید. قطعا هر کسی کد شما را بخواند از آن لذت خواهد برد.
همیشه به خاطر بسپارید، نام هر متغیر، تابع یا کلاس باید به سه سوال بزرگ پاسخ دهد؛ چرا وجود دارد، چه کاری انجام میدهد و چگونه استفاده میشود.
این کار نه تنها نیاز به مهارت توصیفی خوب دارد بلکه یک زمینه فرهنگی مشترک است که از مرزها فراتر میرود و هیچ کس بهتر از خودتان نمیتواند این کار را به شما آموزش دهد.
"توابع باید یک کار را انجام دهند"
هر سیستمی از یک زبان مخصوص ساخته شده است که توسط برنامهنویسان طراحی شده تا آن را به درستی توصیف کنند. توابع افعال زبان هستند و کلاسها اسامی میباشند. توابع معمولا اولین خط سازمان در هر زبان برنامهنویسی هستند و خوب نوشتن آنها، ماهیت نوشتن کد خوب است.
فقط دو قانون طلایی برای نوشتن توابع تمیز وجود دارد:
آنها باید کوچک باشند.
آنها باید فقط یک کار را انجام داده و آن کار را به خوبی انجام دهند.
بنابراین این امر به این معناست که تابع شما نباید به آنقدر بزرگ باشد تا بتواند ساختارهای تو در تویی را نگه دارد. پس سطح تورفتگی یک تابع نباید بزرگتر از یک یا دو سطح باشد. این کار روش خواندن و درک کد را آسانتر میکند. علاوهّبراین باید مطمئن شوید که بیانیههای موجود در تابع، همه در یک سطح از انتزاع هستند.
مخلوط کردن سطوح انتزاع در یک تابع همیشه گیجکننده است و سرانجام کد را غیرقابل کنترل میسازد. برنامهنویسان ماهر از امکانات زبان برنامهنویسی انتخابی خود برای بخشهای کدنویس غنی، واضح و تمیز استفاده میکنند که میتواند مانند یک روایتگر خوب عمل کند.
"در استفاده از کامنتها مراقب باشید"
کامنتها همانند یک چاقوی دو سر هستند. هیچ چیز نمیتواند مفیدتر از یک کامنت در جای خوب باشد. از طرف دیگر هیچ چیز نمیتواند بیش از یک کامنت بیفایده و بیمعنی که فضا را میگیرد، باعث آشفتگی و درهمریختگی کد شود، و هیچ چیز نمیتواند بیش از کامنتهایی که اطلاعات غلط را گسترش میدهند مضر باشد.
بنابراین در بهترین حالت، کامنتها یک ضرورت مضر هستند. البته نه همیشه ولی بیشتر اوقات اینگونه است. از کامنتهای قدیمیتر، سختتر میتوان نگهداری کرد و اکثر برنامهنویسان در این مسیر شهرت خوبی نداشتهاند چرا که آنها نمیتوانند از کامنتها همراستا با کدشان حفاظت کنند. کد پیش میرود و تکامل میِیابد و مشکل میتوان کامنتها را با آنها تغییر داد.
همیشه به خاطر داشته باشید که کد روشن و واضح با چند کامنت، به مراتب بهتر از کدهای پیچیده با تعداد زیادی کامنت است.
"قالبّبندی کد همیشه یک الویت است"
شاید این مورد نمیتواند دست کم گرفته شود و یکی از مهمترین ویژگیهای یک توسعهدهنده واقعا حرفهای باشد.
قالببندی کد پنجرهای برای ذهن شماست. ما میخواهیم مردم تحت تاثیر نظم، توجه به جزئیات و وضوح اندیشه قرار گیرند. اما اگر آنها به کد نگاه کنند و با یک توده کد درهم و آشفته که هیچ شروع و پایان مشخصی ندارند و به سختی میتوان آنها را شناسایی کرد مواجه شوند، فورا به میزان حرفهایی بودن ما شک میکنند.
سبک برنامهنویسی و قابلیت خواندن همچنان بر قابلیت نگهداری کد تاثیر میگذارد. همیشه به خاطر داشته باشید که سبک و نظم شما به توسعه برنامه کمک خواهد کرد. بنابراین باید مراقب باشید که کد خود را به سادگی قالببندی کنید تا توسط قوانین ساده توسط تمام اعضای تیم قابل درک باشد.
"از try-catch-finally استفاده کنید"
مدیریت خطا کاری است که تمام برنامهنویسان انجام میدهند. ورودیها میتوانند نادرست باشند و دستگاهها میتوانند در اجرای بخشی از کد شکست بخورند. به عنوان توسعهدهنده، ما انتظار داریم تا مطمئن شویم کد آنچه را که انتظار میرود انجام دهد. با این حال مساله مدیریت خطا نیست، مساله این است که خطاها با یک روش تمیز و خوانا مدیریت شوند.
یکی از راههای انجام این کار، توسط ضمائم مناسب و گرفتن تمام خطاها در بلوکهای try-catch است. این بلوکها به نوعی حوزه کد شما را تعیین میکنند و به شما کمک میکند آنچه را که کاربر از کد انتظار دارد را تعریف کنید.
همیشه به خاطر داشته باشید هر exceptionای که باز میگردانید باید دارای محتوای کافی برای مشخص کردن منبع و موقعیت خطا باشد. پیامهای خطا حاوی اطلاعات مفید بعد از اینکه نوشتن کد به اتمام میرسد و برنامهنویسان سازماندهی را خاتمه میدهند، بسیار سودمند هستند.
آوردن تمام این شیوهها در کنار هم
به گفته Robert Martin، "نوشتن کد تمیز نیاز به استفاده منظم از تکنیکهای کوچک بیشماری دارد که از طریق حسی حاصل از "تمیزی" به دست میآید. برخی از ما با آنها متولد میشویم و برخی از آنها باید از طریق تمرین و پشتکار به دست آیند. این حس کد تمیز نه تنها به ما کمک میکند بین کد خوب و بد تمایز قائل شویم، بلکه به ما در ساخت استراتژیهایی برای تبدیل کد بد به کد خوب کمک میکند.
به طور کلی یک برنامهنویس با رعایت این اصول میتواند یک صفحه خالی را به یک کار هنری زیبا تبدیل کند که در سالهای آینده نیز واضح و شفاف است.
نظرات کاربران در رابطه با این دوره