Clean Code: A Handbook of Agile Software Craftsmanship
حتی کد بد هم میتواند کار کند، اما اگر تمیز ننوشته شده باشد میتواند سازمان دهی پروژه را به زانو در آورد. هر ساله ساعتهای بی شماری و منابع قابل توجهی به خاطر کیفیت پایین کدها از بین رفته اند؛ اما نباید این گونه باشد.
متخصص مشهور نرم افزار Robert C. Martin، الگویی انقلابی در کتاب Clean Code: A Handbook of Agile Software Craftsmanship ارائه داده است. مارتین با همکاری همکارانش در شرکت Object Mentor، بهترین شیوههای چابک تمیز سازی کد را استخراج کرد و آنها را تبدیل به کتابی کرد که در آن ارزشهای یک متخصص را به شما یاد میدهد و شما را تبدیل به برنامه نویسی بهتر میکند؛ البته فقط وقتی که بر روی آنها کار کنید.
چه نوع کاری شما انجام خواهید داد؟ شما کد خواهید خواند، خیلی خیلی زیاد. شما به چالش کشیده خواهید شد تا در مورد موارد صحیح آن کد و اشکالاتش فکر کنید. از همه مهمتر شما به چالش کشیده خواهید شد تا ارزشهای حرفه ای و تعهد خودتان را به حرفه خود را مورد ارزیابی مجدد قرار دهید.
کتاب Clean Code به سه بخش تقسیم شده است. بخش اول اصول، الگوها و شیوههای نوشتن کد تمیز را شرح میدهد. بخش دوم متشکل از چندین مورد مطالعاتی در مورد افزایش پیچیدگی است. هر مورد یک تمرین تمیز سازی کد است که تبدیل اساس یک کد که دارای تعدادی مشکل است به کدی کارامد و بدون ایراد است. قسمت سوم نتیجه گیری نهایی است. یک فصل مجزا که فهرستی از اکتشافات و بوهایی (smells) است که در ضمن ایجاد موارد مطالعاتی جمع آوری شده اند.
مواردی که در این کتاب خواهید فهمید عبارتند از:
- چگونه میتوان تفاوت بین کد خوب و بد را بیان کرد
- چگونه میتوان کد خوب نوشت و کد بد را به کد خوب تبدیل کرد
- چگونه خوب نام گذاری کنیم، توابع خوب، اشیا خوب و کلاسهای خوب ایجاد کنیم
- چگونه به کد فرمت بدهیم تا به حداکثر خوانایی ممکن برسیم
- چگونه مدیریت خطای کاملی بدون مبهم کردن منطق کد را پیاده سازی کرد
- چگونه آزمون واحد انجام داد و توسعه آزمون محور را تمرین کرد
Table of Contents
Chapter 1: Clean Code
Chapter 2: Meaningful Names
Chapter 3: Functions
Chapter 4: Comments
Chapter 5: Formatting
Chapter 6: Objects and Data Structures
Chapter 7: Error Handling
Chapter 8: Boundaries
Chapter 9: Unit Tests
Chapter 10: Classes
Chapter 11: Systems
Chapter 12: Emergence
Chapter 13: Concurrency
Chapter 14: Successive Refinement
Chapter 15: JUnit Internals
Chapter 16: Refactoring SerialDate
Chapter 17: Smells and Heuristics
Appendix A: Concurrency II
Appendix B: org.jfree.date.SerialDate
Appendix C: Cross References of Heuristics