کدنویسی تمیز راز تبدیل شدن به یک توسعهدهنده افسانهای!
کدنویسی تمیز Clean Code چیست و چه کاربردی دارد؟ بلاگ آسا
اگر یک تابع خیلی طولانی یا پیچیده شد، آن را به توابع کوچکتر و قابل مدیریت تقسیم کنید. کامنتها (Comments) یک راه عالی برای توضیح بخشهای مختلف برنامه هستند. اما فراموش نکنید بهترین برنامه برنامهای است که تعداد کامنتهای آن بسیار کم باشد و در حدی ساده باشد که با یک نگاه بتوان به اجزای مختلف و هدف کلی آن پی برد. به عنوان مثال با نامگذاری صحیح متغیرها (هر چند که نام طولانی انتخاب کنید) دیگر نیازی به استفاده از کامنتهای غیرضروری نخواهید داشت. بهطور کلی در فرآیند کدنویسی نباید عجله کنید بلکه باید دقت و زمان کافی را به انجام این فرآیند اختصاص دهید تا هم خروجی کار باکیفیت باشد و هم کدها به صورت تمیز نوشته شوند.
همیشه سعی کنید توابع را در سادهترین شکل ممکن بنویسید و تاحد ممکن از اضافه کردن پیچیدگیهای بی مورد دوری کنید. الگوهای طراحی (Design Patterns) و استفاده درست از انها یکی از اصول مهندسی نرم افزار است و به شما راه حل های ثابتی برای مشکلات رایج برنامه نویسی میدهد. با مطالعه در این زمینه و استفاده از یک معماری قابل اطمینان بسیاری از مشکلات رایج برنامه نویسی شما مرتفع می گردد. در اصل تسلط داشتن روی دیزاین پترنها بسیاری از مشکلات احتمالی در برنامه نویسی را کاهش میدهد و باعث ارتقا سطح فنی کدها میشود. برای رسیدن به تمیز کدنویسی در زبان فارسی، باید توجه به برخی از نکات مهم داشت.
مارتین (Robert C. Martin)، مهندس نرمافزار و برنامهنویس بزرگ آمریکایی این رفتار را در میان متخصصین رایج میداند و آن را نقد میکند. او اعتقاد دارد که نتیجهی این رویکرد غیرحرفهای میتواند هولناک باشد و آسیب زیادی به افراد و سیستم وارد کند. مارتین در کتاب کدنویس تمیز (The Clean Coder) میکوشد اصول رفتار حرفهای را به برنامهنویسها یاد بدهد و به آنها کمک در تعاملاتشان حرفهایتر به نظر برسند. تسلط بر زبان برنامه نویسی و استفاده صحیح از توابع و امکانات زبان برنامه نویسی در نوشتن کدهای بهینه و تمیز کمک شایانی به شما می کند. عموما برنامه نویس هایی که تسلط کافی و درک کاملی از توابع، استفاده صحیح از ابزارها و امکانات زبان مورد نظر جهت برنامه نویسی ندارند قادر نیستند کدهای تمیز و کاملی را بنویسند.
در این شرایط تیم برنامه نویسی باید زمان زیادی را صرف تحلیل جزئیات برنامه و قطعه کدها کنند تا در نهایت بتوانند تغییرات را اعمال کنند. به همین دلیل اگر از یک برنامه نویس بخواهید که یک پروژه را از ابتدا انجام دهد میپذیرد اما اگر نیاز باشد پروژه فرد دیگری را بازبینی و اصلاح کند آن را رد میکند یا با اکراه میپذیرد. کدنویسی تمیز یا Clean Code به معنی سادهنویسی کدها است؛ به نوعی که حتی برنامه نویسان مبتدی هم با کمی بررسی متوجه شوند که هر قطعه یا خط از کد به چه منظوری نوشته شدهاست. در واقع کدنویسی تمیز یعنی پیادهسازی واضح، قابل فهم، قابل ردیابی و اصولی کدهای برنامه نویسی. در این مقاله علاوه بر پاسخ به سوال کدنویسی تمیز چیست؟ به بررسی اصول کدنویسی تمیز میپردازیم و تعدادی از موارد مؤثر در کدنویسی تمیز را به شما معرفی میکنیم. مارتین از جمله کتابهای کاربردی برای طراحی و توسعه یک پروژه نرمافزاری است و شامل اصول کدنویس صحیح، نامگذاری کاربردی، کامنتنویسی اصولیو چگونگی استفاده صحیح از توابع، نکات رفتاری صحیح و ...
ممکنه هنگام راه رفتن ناگهان یه شئ تیزی داخل پاهاتون فرو بره. یا مثلا برای پیدا کردن یه وسیله باید مدتها زمان صرف کنید. در دنیای برنامهنویسی، یه کد کثیف رو میشه به این اتاق نامرتب تشبیه کرد. احتمالا برای شما هم ممکنه پیش اومده بشه که در حال بازبینی یه کد برنامهنویسی بودین و پیمایش در اون کد مثل راه رفتن در اون اتاق کثیف و نامرتب بوده. در کد قبلی به صراحت معلوم بود تابع چندین کار را تحت یک نام انجام میدهد. حتی در کد اخیر نیز معلوم شد که دو سطح از انتزاع را انجام میدهد اما در تکه کد آخر، شکستن تابع به بخش کوچکتر سخت است.
در کتابراه برای همه سلیقهها از داستان، رمان و شعر تا روانشناسی، تاریخی، علمی، موفقیت و... همچنین در کتابراه هزاران کتاب رایگان نیز قابل دانلود است. اپلیکیشن کتابخوان کتابراه برای اندروید، IOS و ویندوز در دسترس است. حتی کد بد هم میتواند کاربرد داشته باشد، اما کدی که تمیز نیست میتواند یک سازمان را به زانو درآورد! کدنویسی تمیز یکی از مهمترین اصول برنامهنویسان حرفهای است. مارتین (Robert C.Martin) در کتاب کدنویسی تمیز (Clean Cod) تلاش کرده همهی نکات و اصول مهم برای تبدیل شدن به یک برنامهنویس حرفهای را بدون مقدمهچینی و با روشهای ایدهآل به شما آموزش دهد.
در پروژه های تحت وب و سایت های اینترنتی کدنویسی تمیز و بهینه یک اصل مهم است و با رعایت آن سایت هایی سریع، قابل توسعه بالا و قابل درک برای برنامه نویسان دیگر ایجاد می کنید. توسعه یک نرم افزار نیازمند نوشتن کدهایی است که با موفقیت با هدف توسعه دهنده سازگار باشند. استفاده از ساختارهای متناسب و روش های درست نوشتن کدنویسی، می تواند به توسعه دهنده کمک کند تا نرم افزار های موثر تری را با هزینه کمتری توسعه دهد. استفاده از ساختارها و روش های بهینه از جمله طراحی برنامه به شیوه ی ماژولی، تجزیه و تحلیل دقیق کد، نگهداری ساختار پایدار و مدیریت حافظه، می تواند به بهبود عملکرد و بهینه سازی نرم افزار کمک کند. در این مقاله بررسی کردیم که کدنویسی تمیز چیست و چگونه با رعایت چند نکته میتوانید مانند حرفهایها برنامه بنویسید.
بخش اول کتاب، اصول نوشتن کدهای تمیز و الگوها و فعالیتهای مرتبط با آن را شرح میدهد. قسمت اصلی و چالشبرانگیز کتاب تازه از بخش دوم آن آغاز میشود. بهعبارتی باید کدهایی را که با آنها کار میکنید، درک و تحلیل کنید تا در نهایت بتوانید کدهای مشکلدار را به کدهایی با مشکلات کمتر یا حتی به کدهای بدون مشکل، تبدیل کنید. در بخش آخر هم با توجه به لیستی از ابتکارات و ایدههای جمعآوریشده، میتوانید کدهایتان را بررسی کنید و میزان تمیز بودن آنها را بسنجید. توجه داشته باشید که برای استفادهی بهتر از این کتاب و برای ارتقای مهارت کدنویسیتان، بهتر است باحوصله و صبور باشید و از تمرینها و جزئیات موجود در کتاب، خصوصاً در بخش دوم، ساده عبور نکنید. برای دانلود قانونی کتاب کدنویسی تمیز Clean Code و دسترسی به هزاران کتاب و کتاب صوتی دیگر، اپلیکیشن کتابراه را رایگان نصب کنید.
کدنویسی تمیز در برنامه نویسی و توسعه هر نرم افزاری حائز اهمیت است اما در برنامه های تحت وب و وب سایت ها اهمیت کدنویسی تمیز دوچندان خواهد شد. عموما برنامه های تحت وب به تغییرات بیشتری نیاز دارند و ممکن است یک برنامه تحت وب در چرخه حیات خود از چند تیم برنامه نویسی برای ثبت تغییرات و بروزرسانی استفاده نماید. از این رو کدهای تمیز، خوانا و قابل فهم برای تیم توسعه و برنامه نویس از اهمیت بسیار بالایی برخوردار است تا در گذر زمان امکان ثبت تغییرات و توسعه برنامه را فراهم نماید. نویسنده در بخش بعدی به توضیحاتی دربارهی بهینهسازی زودهنگامِ کدها اشاره کرده است. بهینهسازی توابع کد، ویژگیها، برنامهریزی، مقیاسپذیری، طراحی تست و ساخت دنیای شئگرا، بهعنوان مراحل بهینهسازیِ زودهنگام کدها شناخته میشوند.
یکی از برنامهنویسان معروف دنیا که با نام عمو باب شهرت بیشتری دارد، رابرت سی. او که نزدیک به 5 دهه در زمینه برنامهنویسی و کدنویسی فعالیت میکند، بنیانگذار و رییس شرکت Object Mentor است. از طرفی دیگر یک برنامه تحت وب نیاز به افزایش کارایی و سرعت اجرای بالا دارد. بهینه بودن کدها و بهینه سازی مداوم کد عضو جدایی ناپذیر برنامه نویسی تحت وب است. تنها با داشتن کدهای تمیز و بهینه که امکان بهینه سازی کدها را در گذر زمان فراهم می کند می توان به یک برنامه سریع با مصرف کم دست یافت. دقت داشته باشید در برنامه های تحت وب یکی از اهداف برنامه نویس تلاش برای کاهش مصارف (CPU یا حافظه) از جانب کد و سرعت اجرای بالا است.
برخی برنامه نویسان کامنت گذاری زیادی بین کدهای خود دارند و برخی دیگر هم کامنت های سطحی و نامفهومی را بین کدهای خود قرار می دهند. به عبارتی اگر در کد خود کامنتهای زیادی میگذارید احتمالا کدهای شما به حد کافی قابل فهم و واضح نیست. از طرفی اگر کامنت نمی گذارید یا کامنت های شما عملکرد، پارامترها، ترتیب اجرا و چنین مسائلی را مشخص نمی کند، قطعا در اینده برای خود و دیگران سردرگمی ایجاد میکنید. این اصل به KISS معروف است و مخفف عبارت keep it simple stupid است. KISS یک اصل طراحی است که توسط نیروی دریایی ایالات متحده در سال ۱۹۶۰ مورد توجه قرار گرفت که البته به این موضوع کار نداریم. اما به شکل ساده در برنامه نویسی به این معنی است که از پیچیدگی بیش از حد کدها بپرهیزیم و در سادهترین شکل ممکن برنامه نویسی کنیم.
برای دریافت کتاب کدنویس تمیز و دسترسی به هزاران کتاب الکترونیک و کتاب صوتی دیگر و همچنین مطالعه معرفی کتابها و نظرات کاربران درباره کتابها لازم است اپلیکیشن کتابراه را نصب کنید. مارتین (Robert C. Martin Series)، کتابهایی هستند که به اصول اخلاقی و حرفهای در مهندسی نرمافزار میپردازند و مبانی این رشته را یاد میدهند. مارتین، برنامهنویس افسانهای آمریکایی، در این کتابها با زبانی ساده و راحت به برنامهنویسها نکات و دستورالعملهایی را یادآور میشود تا بازدهی خود و مجموعهشان را افزایش دهند. «کد تمیز»، «کدنویس تمیز»، «معماری تمیز»، «چابک تمیز» و «مهارت تمیز» از جمله آثاری هستند که از این سری به چاپ رسیدهاند. برنامه نویس ها لازم است قبل از هر چیز درباره اصول مهندسی نرم افزار و برخی از اصول های پایه برنامه نویسی مطالعه و تحقیق کنند تا به درک کاملی از این مفاهیم برسند.
دومین قاعده توابع این است که باید از این هم کوچکتر باشند. این ادعایی نیست که من بتوانم توجیه کنم و هرگونه مرجع معتبر پژوهشی ارائه دهم که نشان دهد توابع بسیار کوچکتر بهتر هستند. چیزی که من میتوانم بگویم این است که نزدیک به چهار دهه، من کارهای مختلفی را انجام دادهام. آنچه که این تجربه، از طریق آزمایش و خطای طولانی به من آموخته این است که توابع باید بسیار کوچک باشند. اگر ناچار به تغییری ناهمگون شدید، بهتر است علت این ناهماهنگی را در کامنت بنویسید تا خواننده کد، متوجه این موضوع شود. در این مقاله لرنی لایت به بررسی تفاوت های تجربه کاربری و رابط کاربری پرداختیم و به صورت جداگانه هر دو مقوله را بررسی کردیم.
هر برنامهنویسی میداند که لذتبخشترین بخش این کار، لحظهای است که کد بدون هیچ خطا و البته با خروجی صحیح اجرا میشود. بنابراین تلاش بیشتر برنامهنویسها، نوشتن کدی است که در نهایت درست اجرا شود. اما این کار میتواند باعث شود تا سورس کد از یک کد تمیز (Clean Code) به یک کد پیچیده و بهم ریخته تبدیل شود. برنامه نویسان تازهکار و مبتدی معمولا به دلیل عدم آشنایی با اصول صحیح کدنویسی، برنامههایی طولانی با کدها و توابع پیچیده ایجاد میکنند که از نشانههای کدنویسی کثیف است. گاهی نیز برنامه نویسهای حرفهای به دلیل عحله برای تحویل پروژه و اتمام کار این اصول را رعایت نمیکنند و کدنویسی کثیف انجام میدهند.
این نکته ای است که تقریبا در هر مقاله مرتبط با برنامه نویسی وجود دارد و متناسب با این برنامه نویسان اکثرا این موضوع را فراموش می کنند. استفاده از نام های مفهومی در برنامه نویسی به معنی قرار دادن یک راه مناسب برای بروزرسانی و ویرایش کد در آینده است. استفاده از نام های نامربوط برای فایل ها، برگه ها، تابع ها، متغیرها و… تنها برای استفاده از کدهایتان در آینده مشکل به بار می آورد. بنابراین بهتر است برای المان های مختلف از نام های مفهومی و درست استفاده کنید. برنامه نویسی یکی از عناصر مهم برای توسعه برنامه های قدرتمند است. استفاده از متدها در برنامه نویسی یکی از راه های کاربردی است تا برنامه نویسان به سرعت قابلیت های مورد نظرشان را برای برنامه های خود اضافه کنند.
نوشتن Clean code، در حوزه دواپس هم اهمیت زیادی دارد و باعث میشود تا خوانایی کد برای یک مهندس دواپس افزایش پیدا کند. کدنویسی تمیز باعث میشود تا همکاری روی یک پروژه توسعه نرمافزار راحتتر شود و در وقت و انرژی که باید برای بهبود، بهروزرسانی و نگهداشت یک کد صرف کنیم، صرفهجویی هم میشود. در این مقاله قصد داریم ابتدا با مفهوم کلین کد یا کد تمیز آشنا شویم و سپس اصول و قواعدی که برای داشتن این کد باید رعایت شود را بررسی کنیم. کاهش تبدیل برنامه نویسی به کدهای نامرئی یکی از مهمترین عوامل در توسعه نرم افزار های پیشرفته است. این فرآیند کاهش میزان اشتباهات در ایجاد نرم افزار و توسعه پیشرفته تر آن را توسعه می دهد. کاهش تبدیل برنامه نویسی به کدهای نامرئی و ایجاد یک بستری ساده برای توسعه نرم افزار به شما این امکان را می دهد که نرم افزارهای مورد نظر خود را به سرعت و با دقت بالا توسعه دهید.
رمضان عباس نژادورزی و مازیار کلاه گر زواردهی، مترجمهای این کتاب هستند. این تابع قرار است صحت کلمه عبور و نام کاربری را بررسی کند. همان گونه که از نام تابع میتوان برداشت کرد، این تابع قرار است صحت نام کاربری و کلمه عبور را بررسی کند و در نام تابع ذکر نشده است که قرار است علاوه بر این Session را نیز وهلهسازی کند. در نتیجه خطوطی که باعث side effect میشوند، باید جدا شوند. اگر به هر دلیلی این جداسازی میسر نبود (در یک پیادهسازی خوب به ندرت اتفاق میافتد)، حداقل با انتخاب نام مناسب برای تابع، این موضوع باید به صراحت ذکر شود.
از نظر من، شما به این دلیل کتاب جاری را در دست گرفتهاید که یک برنامهنویس کامپیوتر هستید و با مفهوم حرفهایگرائی مواجه شدهاید. حرفهایگرائی، چیزی است که حرفه ما شدیدا به آن نیازمند است. من به مدت 42 سال به این حرفه مشغول هستم و در این دوره – به شما خواهم گفت همه چیز را تجربه کردم. با برنامهنویسان سطح بالا و با برنامهنویسان خام و تنبل کار کردم. بر روی سیستمهای تعبیه شده پیشرفته نرمافزاری/سختافزاری کار کردم. به زبانهای کوبول، فرترن، بال، PDP-8، PDP-11، سی، سی پلاس، جاوا، رابی، اسمال تاک و بسیاری زبانها و سیستمهای دیگر برنامه نوشتم.
درواقع با کدنویسی تمیز شما برای انسان کد مینویسید نه ماشین. در ویدیوی زیر که بخشی از آموزش Clean Code | کد نویسی تمیز است، مدرس محترم آقای احسان گازار به خوبی دربارهی اینکه کدنویسی تمیز چیست ؟ توضیح میدهند. در نهایت با گذراندن این دوره شما یاد میگیرید که چگونه برنامه نویس بهتری باشید و کیفیت پروژههای خود را بالا ببرید. برای انجام پروژههای نسبتا بزرگتر ممکن است تعدادی از برنامه نویسان با هم همکاری کنند و هر فرد مسئولیت بخشی از برنامه را به عهده بگیرد. در نهایت تمام این بخشها باید به هم متصل شوند و پروژهی اصلی را تشکیل دهند. کدنویسی تمیز به افراد گروه کمک میکند که معنی کدهای دیگران را به راحتی درک کنند و بتوانند بخشهای مختلف را به سادگی به هم متصل کنند.
اضافه کردن کامنت به برنامه یکی از ویژگی های یکسان تمام زبان های برنامه نویسی است. اضافه کردن کامنت به فرایند بروزرسانی کدها، دیباگ کردن و بررسی آنها کمک بسیاری می کند. اگر شما در یک تیم توسعه باشید اضافه کردن کامنت به کدهایتان باعث می شود که توسعه دهندگان و دیگر اعضای تیم بتوانند به راحتی هدف کدهایتان را درک کنند. در ادامه قصد دارم چند مورد از دلایل کدنویسی تمیز رو بیان کنم. همونطور که گفتیم قراره کدهای ما توسط عوامل انسانی که همون توسعهدهندهها و برنامهنویسان میشن بازبینی بشن و در نهایت توسط کامپیوتر به صفر و یک تبدیل و اجرا میشن. برای کامپیوتر فقط یه سری قواعد منطقی و دستوری مثل سینتکس مهمه که رعایت بشن و کاری به این چیزا نداره.
کتاب هنر کدنویسی تمیز (The Art of Clean Code)، اثری کامل برای آشناییِ خواننده با شیوههای اصولیِ نگارش کدهای برنامهنویسی است. کریستین مایر (Kerstin Meyer)، نویسندهی کتاب، با زبانی ساده و روان، اصول و تکنیکهای کدنویسیِ تمیز را بهصورت عملی و کاربردی در این اثر به خواننده آموزش داده است. یادگیری هنر کدنویسی تمیز، در کنار افزایش کیفیت کدها، فایدههای چشمگیری برای توسعهدهندگان دارد. خواننده، پس از مطالعهی کتاب، شیوههای افزایش خوانایی کد را یاد میگیرد و با روشهای کاهش خطاها و باگهای نرمافزاری با نوشتن کدهای تمیز آشنا میشود. کد تمیز، معمولاً ساختار منظمتری دارد و از الگوهای مناسب استفاده میکند.
این عمل باعث افزایش قابلیت استفاده مجدد و توسعه برنامه و بهبود تست برنامه و اشکال زدایی میشود. اصول اولیه کدنویسی تمیز شامل استفاده مناسب از فضاهای خالی، نامگذاری مناسب متغیرها و توابع، و تجزیه و تحلیل صحیح مسئله میشود. توسعه تست محور (TDD) می تواند با وادار کردن شما به در نظر گرفتن موارد لبه و رفتار مورد انتظار از قبل، به شما کمک کند تا کد پاک تری بنویسید. کدهایی که به خوبی آزمایش شده اند قابل اعتمادتر هستند و بازنویسی آن آسان تر است. می توانید در مقاله 5 اصل از بهترین روش برای تست نویسی ، بهترین تست ها را بنویسید.
کلاس برنامه نویسی کودکان غرب تهران