کتاب C++ Software Design (طراحی نرمافزار سیپلاسپلاس: اصول و الگوهای طراحی برای نرمافزارهای با کیفیت بالا) از جدیدترین منابع آموزش زبان برنامهنویسی سیپلاسپلاس است که در سال 2022 به چاپ رسیده است. این کتاب در 11 فصل به آموزش حرفهای کدنویسی و طراحی نرمافزار با استفاده از ++C پرداخته و به طور عملی به شما آموزش خواهد داد.
در ادامه مقدمهای از کتاب C++ Software Design را از زبان نویسنده شرح خواهیم داد.
مقدمهای بر کتاب C++ Software Design:
کتاب ++C را در دست دارید که ای کاش سالها پیش داشتم. نه به عنوان یکی از اولین کتابهای من، نه، بلکه به عنوان یک کتاب پیشرفته، پس از اینکه قبلاً مکانیک زبان را هضم کرده بودم و توانستم فراتر از نحو C++ فکر کنم. بله، این کتاب قطعاً به من در درک بهتر جنبههای اساسی نرمافزار قابل نگهداری کمک میکند، و من مطمئن هستم که به شما نیز کمک خواهد کرد.
چرا کتاب C++ Software Design را نوشتم؟
زمانی که من واقعاً در حال جستجوی زبان بودم (چند سال پس از انتشار اولین استاندارد C++)، تقریباً تمام کتابهای C++ را خوانده بودم. اما علیرغم این واقعیت که بسیاری از این کتابها عالی بودند و قطعاً راه را برای حرفه فعلی من به عنوان مربی و مشاور C++ هموار کردند، آنها بیش از حد بر جزئیات کوچک و جزئیات پیادهسازی متمرکز بودند و از تصویر بزرگتر قابل نگهداری بسیار دور بودند. نرمافزار.
در آن زمان، تعداد بسیار کمی از کتابها واقعاً بر روی تصویر بزرگتر تمرکز میکردند که به توسعه سیستمهای نرمافزاری بزرگ میپردازد. از جمله اینها میتوان به طراحی نرمافزار C++ جان لاکوس، 1 مقدمهای عالی اما به معنای واقعی کلمه سنگین برای مدیریت وابستگی، و به اصطلاح کتاب Gang of Four، که کتاب کلاسیک در مورد الگوهای طراحی نرمافزار است، اشاره کرد.
وضعیت واقعاً تغییر نکرده است: بیشتر کتابها، گفتگوها، وبلاگها و غیره عمدتاً بر مکانیک و ویژگیهای زبان تمرکز دارند – جزئیات و جزئیات کوچک. تعداد بسیار کمی، و به نظر من بسیار کم، نسخههای جدید بر روی نرمافزار قابل نگهداری، قابلیت تغییر، توسعه پذیری و آزمایش پذیری تمرکز دارند. و اگر تلاش کنند، متأسفانه به سرعت به عادت رایج توضیح دادن مکانیک زبان و نشان دادن ویژگیها بازمیگردند.
به همین دلیل کتاب C++ Software Design را نوشتم. کتابی که برخلاف اکثر کتابهای دیگر، زمانی را صرف مکانیک یا ویژگیهای متعدد زبان نمیکند، بلکه در درجه اول بر تغییرپذیری، توسعهپذیری و آزمایشپذیری نرمافزار به طور کلی تمرکز دارد.
کتابی که تظاهر نمیکند که استفاده از استانداردها یا ویژگیهای جدید C++ تفاوت بین نرمافزار خوب یا بد را ایجاد میکند، بلکه به وضوح نشان میدهد که این مدیریت وابستگیها است که تعیینکننده است و وابستگیهای کد ما بین آنها تصمیم میگیرد. خوب یا بد. به این ترتیب، در واقع یک نوع کتاب نادر در جهان ++C است، زیرا بر تصویر بزرگتر تمرکز دارد: طراحی نرمافزار.
کتاب C++ Software Design در مورد چیست؟
طراحی نرمافزار
از دیدگاه من، طراحی نرمافزار خوب جوهر هر پروژه نرمافزاری موفقی است. با این حال، علیرغم نقش اساسی آن، ادبیات بسیار کمی در مورد این موضوع وجود دارد، و توصیههای بسیار کمی در مورد اینکه چه باید کرد و چگونه کارها را به درستی انجام داد، وجود دارد. چرا؟ خب چون سخته خیلی سخت. احتمالاً سختترین جنبه نرمافزار نوشتن است که باید با آن روبرو شویم. و این به این دلیل است که هیچ راهحل «درست» و هیچ توصیه «طلایی» برای انتقال به نسلهای توسعهدهندگان نرمافزار وجود ندارد. همیشه بستگی دارد.
با وجود این محدودیت، من در مورد نحوه طراحی نرمافزار خوب و با کیفیت توصیه خواهم کرد. من اصول طراحی، دستورالعملهای طراحی و الگوهای طراحی را ارائه میدهم که به شما کمک میکند تا نحوه مدیریت وابستگیها را بهتر درک کنید و نرمافزار خود را به چیزی تبدیل کنید که میتوانید برای چندین دهه با آن کار کنید.
همانطور که قبلاً گفته شد، هیچ توصیه “طلایی” وجود ندارد و این کتاب هیچ راه حل نهایی یا کاملی ندارد. در عوض، سعی میکنم اساسیترین جنبههای نرمافزار خوب، مهمترین جزئیات، تنوع و مزایا و معایب طرحهای مختلف را نشان دهم. من همچنین اهداف طراحی ذاتی را تدوین خواهم کرد و نحوه دستیابی به این اهداف را با C++ مدرن نشان خواهم داد.
C++ مدرن
برای بیش از یک دهه، ما ظهور مدرن C++ را جشن میگیریم، بسیاری از ویژگیها و برنامههای افزودنی این زبان را تحسین میکنیم و با انجام این کار، این تصور را ایجاد میکنیم که C++ مدرن به ما کمک میکند تا همه مشکلات مربوط به نرمافزار را حل کنیم. در این کتاب اینطور نیست.
کتاب C++ Software Design تظاهر نمیکند که پرتاب چند اشارهگر هوشمند به کد، کد را «مدرن» میکند یا بهطور خودکار طراحی خوبی ارائه میدهد.
همچنین، کتاب C++ Software Design سیپلاسپلاس مدرن را به عنوان مجموعهای از ویژگیهای جدید نشان نمیدهد. در عوض، نشان میدهد که چگونه فلسفه زبان تکامل یافته است و روشی که ما امروز راه حلهای C++ را پیادهسازی میکنیم.
اما مطمئناً کد را نیز خواهیم دید. مقدار زیادی از آن. و البته این کتاب از ویژگیهای استانداردهای جدیدتر C++ (از جمله C++20) استفاده خواهد کرد. با این حال، همچنین تلاش خواهد شد تا تأکید کند که طراحی مستقل از جزئیات پیادهسازی و ویژگیهای مورد استفاده است.
ویژگیهای جدید قوانین مربوط به طراحی خوب یا بد را تغییر نمیدهند. آنها صرفاً نحوه اجرای طراحی خوب را تغییر میدهند. آنها اجرای طراحی خوب را آسانتر میکنند. بنابراین کتاب C++ Software Design جزئیات پیادهسازی را نشان میدهد و بحث میکند، اما (امیدواریم) در آنها گم نشود و همیشه بر روی تصویر بزرگ متمرکز میشود: طراحی نرمافزار و الگوهای طراحی.
الگوهای طراحی
به محض اینکه شروع به ذکر الگوهای طراحی میکنید، ناخواسته انتظار برنامهنویسی شیگرا و سلسله مراتب وراثت را به ذهنتان خطور میکند. بله، این کتاب منشا شیگرا بسیاری از الگوهای طراحی را نشان میدهد. با این حال، تاکید زیادی بر این واقعیت دارد که تنها یک راه برای استفاده خوب از یک الگوی طراحی وجود ندارد.
من نشان خواهم داد که چگونه اجرای الگوهای طراحی تکامل یافته و متنوع شده است و از بسیاری از پارادایمهای مختلف از جمله برنامهنویسی شیگرا، برنامهنویسی عمومی و برنامهنویسی تابعی استفاده میکند.
کتاب C++ Software Design این واقعیت را تصدیق میکند که هیچ پارادایم واقعی وجود ندارد و وانمود نمیکند که تنها یک رویکرد واحد، یک راه حل همیشه کارآمد برای همه مشکلات وجود دارد. در عوض سعی میکند C++ مدرن را دقیقاً نشان دهد: فرصتی برای ترکیب همه پارادایمها، ایجاد یک شبکه قوی و بادوام و ایجاد طراحی نرمافزاری که در طول دههها دوام خواهد آورد.
من امیدوارم که این کتاب ثابت شود که قطعه گمشده در ادبیات ++C است. امیدوارم همانطور که به من کمک میکرد به شما کمک کند. امیدوارم پاسخهایی را که به دنبالش بودید داشته باشد و چند بینش کلیدی را که از دست داده بودید به شما ارائه دهد. و همچنین امیدوارم که این کتاب شما را تا حدودی سرگرم و انگیزه برای خواندن همه چیز نگه دارد. اما از همه مهمتر، امیدوارم این کتاب اهمیت طراحی نرمافزار و نقشی که الگوهای طراحی ایفا میکنند را به شما نشان دهد. زیرا همانطور که خواهید دید، الگوهای طراحی همه جا هستند!
کتاب C++ Software Design برای چه کسی است؟
این کتاب برای هر توسعهدهنده ++C ارزش دارد. به طور خاص، این برای هر توسعهدهنده ++C است که علاقه مند به درک مشکلات معمول نرمافزارهای قابل نگهداری و یادگیری راه حلهای رایج برای این مشکلات است (و من فرض میکنم که در واقع هر توسعهدهنده C++ است).
با این حال، کتاب C++ Software Design یک کتاب مبتدی ++C نیست. در واقع، بیشتر دستورالعملهای این کتاب به تجربهای در زمینه توسعه نرمافزار به طور کلی و C++ به طور خاص نیاز دارد. به عنوان مثال، من فرض میکنم که درک محکمی از مکانیک زبان سلسله مراتب وراثت و مقداری تجربه با الگوها دارید. سپس میتوانم هر زمان که لازم و مناسب باشد به ویژگیهای مربوطه دست پیدا کنم. هر چند وقت یکبار حتی به برخی از ویژگیهای C++20 (به ویژه مفاهیم C++20) دست خواهم یافت.
با این حال، از آنجایی که تمرکز بر طراحی نرمافزار است، من به ندرت به توضیح یک ویژگی خاص میپردازم، بنابراین اگر ویژگی برای شما ناشناخته است، لطفاً با مرجع زبان C++ مورد علاقه خود مشورت کنید. فقط گاهی اوقات یادآوریهایی اضافه میکنم، بیشتر در مورد اصطلاحات رایج C++ (مانند قانون 5).
کتاب C++ Software Design چگونه ساختار یافته است؟
این کتاب در فصلهایی تنظیم شده است که هر فصل شامل چندین دستورالعمل است. هر دستورالعمل بر یک جنبه کلیدی نرمافزار قابل نگهداری یا یک الگوی طراحی خاص تمرکز دارد. از این رو، دستورالعملها نشاندهنده نکات اصلی هستند، جنبههایی که امیدوارم بیشترین ارزش را برای شما داشته باشند.
آنها به گونهای نوشته شدهاند که میتوانید همه آنها را از جلو به عقب بخوانید، اما از آنجایی که آنها فقط با هم جفت میشوند، به شما امکان میدهند با دستورالعملی که توجه شما را جلب میکند شروع کنید. با این حال، آنها مستقل نیستند. بنابراین، هر دستورالعمل حاوی ارجاعات متقابل لازم به دستورالعملهای دیگر است تا به شما نشان دهد که همه چیز به هم متصل است.
سرفصلهای کتاب C++ Software Design:
- Preface
- 1. The Art of Software Design
- 2. The Art of Building Abstractions
- 3. The Purpose of Design Patterns
- 4. The Visitor Design Pattern
- 5. The Strategy and Command Design Patterns
- 6. The Adapter, Observer, and CRTP Design Patterns
- 7. The Bridge, Prototype, and External Polymorphism Design Patterns
- 8. The Type Erasure Design Pattern
- 9. The Decorator Design Pattern
- 10. The Singleton Pattern
- 11. The Last Guideline
- Index
فایل کتاب C++ Software Design را میتوانید پس از پرداخت، دریافت کنید.
دیدگاهها
هیچ دیدگاهی برای این محصول نوشته نشده است.