- عنوان کتاب: Real-World Implementation of C# Design Patterns
- نویسنده: Bruce M. Van Horn II
- حوزه: برنامهنویسی #C
- سال انتشار: 2022
- تعداد صفحه: 443
- زبان اصلی: انگلیسی
- نوع فایل: pdf
- حجم فایل: 29.8 مگابایت
این کتاب در مورد الگوهای طراحی نوشته شده در زمینه زبان کدنویسی سی شارپ است. من می دانم که احتمالاً به چه چیزی فکر می کنید. اصلاً به چه معناست؟ خب، میتوانم به شما بگویم، اما بقیه کتاب را اسپویل میکنم، و به من اعتماد کنید، این یک افتضاح است!
الگوهای طراحی مجموعه ای مدون از بهترین شیوه ها برای مشکلات نرم افزاری هستند که به قدری پیش می آیند که می توانیم یاد بگیریم آنها را بشناسیم و بلافاصله بدانیم چگونه آنها را حل کنیم. راهحلهای این مشکلات تکراری که در الگوها یافت میشوند برای دههها مورد استفاده قرار گرفتهاند و اثربخشی آنها ثابت شده است.
الگوها همچنین به یک زبان جنگ برای توسعه دهندگان تبدیل می شوند زیرا بسیار فراگیر هستند. این ایده از فرانچایز تلویزیونی و فیلم محبوب، پیشتازان فضا گرفته شده است. در Star Trek، نژاد جنگجو معروف به کلینگون ها دو زبان دارد. آنها زبان کلینگونی معمولی را دارند که در مهدکودک کلینگون یاد می گیرند و یک نسخه کوتاه شده که در طول جنگ استفاده می کنند. عبارت «لولههای اژدر 1 و 2 را بارگیری کنید و به طور کامل شلیک کنید» را میتوان به یک یا دو کلمه کاهش داد. همه کلینگون ها معنی این عبارت را می دانند و در نبردها پیروز می شوند زیرا چند ثانیه سریعتر از دشمنان زبانی خود هستند. به طور مشابه، می توانید بگویید “فقط از الگوی دکوراتور استفاده کنید”. هر توسعهدهندهای که الگوها را مطالعه کرده باشد، میداند که در مرحله بعد چه کاری باید انجام دهد.
الگوها مختص زبان سی شارپ نیستند. با این حال، برای یادگیری موثر الگوها، به زبان پیاده سازی نیاز دارید. کتاب اصلی در مورد الگوها توسط اریش گاما، ریچارد هلم، رالف جانسون و جان ولیسیدز نوشته شده است که در مجموع با نام گروه چهار یا به اختصار GoF شناخته می شوند. کتاب آنها، الگوهای طراحی: عناصر نرم افزار شی گرا با قابلیت استفاده مجدد، اغلب به عنوان کتاب GoF شناخته می شود.
کتاب GoF در سال 1994 منتشر شد که آن را به یک دایناسور فناوری تبدیل می کند. اگرچه ممکن است قدیمی باشد، الگوهای توضیح داده شده در صفحات آن هنوز بسیار مرتبط هستند. انتقاد من از کتاب GoF این است که در قالب بسیار آکادمیک نوشته شده است و زبان پیاده سازی آن زبانی است که دیگر واقعاً نمی بینید. زبان پیاده سازی جزئیات مهمی است. کتاب GoF 23 الگو را پوشش می دهد که همان تعداد گیاهان و ادویه های موجود در دستور اصلی KFC است. این نمی تواند تصادفی باشد. این کتاب همه 23 الگو را پوشش نمیدهد، که خوب است، زیرا زیاد مرغ سرخ شده برای شما خوب نیست. من روی الگوهایی تمرکز کرده ام که هر روز در بیشتر پروژه هایی که روی آنها کار می کنید به آنها نیاز دارید. بقیه را به طور خلاصه در فصل 8 در پایان کتاب پوشش می دهم.
برخی کتابها وجود دارند که سعی میکنند از کد شبه استفاده کنند تا عمومی باشند. من معتقدم که چنین کتاب هایی برای اکثر مردم مفید نیستند. اگر شما هم مانند من هستید و احتمالاً در این زمینه هستید، می خواهید یک نمونه کدی داشته باشید که خواندن آن آسان باشد، بیش از حد باهوش نباشد و پایه محکمی در دنیای واقعی داشته باشد. کتابها و سایتهای وبلاگی که سعی میکنند الگوهایی را با عباراتی مانند «کلاس A از کلاس B به ارث میبرد، که به کلاس C بستگی دارد» به شما آموزش دهند، بسیار مبهم هستند که مفید نباشند. به همان اندازه آزاردهنده کتاب ها و سایت هایی هستند که سعی می کنند الگو را به 20 زبان به شما نشان دهند. آنها معمولاً به جای تمرکز بر انجام یک کار خوب در یک کار، با همه 20 نفر کار ضعیفی انجام می دهند. من فقط از سی شارپ و زبان مدلسازی یکپارچه (UML) استفاده می کنم.
اگر قبلاً نام UML را نشنیده اید، اجازه ندهید که شما را بترساند. UML قراردادی است که برای ایجاد نمودار استفاده می شود. 14 نوع نمودار UML وجود دارد. من فقط از یک نوع نمودار استفاده می کنم: نمودارهای کلاس. من یک پرایمر را در ضمیمه 2 قرار داده ام تا اگر در UML تازه کار هستید به شما کمک کند.
این کتاب در مورد دنیای واقعی، یا حداقل یک فاکس نزدیک است. من این کتاب را با استفاده از همان تکنیک هایی نوشته ام که در پروژه های نرم افزاری واقعی استفاده می شود. کد واقع بینانه ای در کتاب وجود دارد که مشکلات تجاری قانونی را حل می کند. همچنین اشتباهات طراحی، همراه با راههای متفکرانه برای خلاص شدن از مشکل وجود دارد.
یکی دیگر از مسائلی که در مورد کتاب های آکادمیک وجود دارد این است که آنها کلامی و سخت خوانده می شوند. من سعی کرده ام از یک سوژه خشک استفاده کنم و از خسته کننده بودن خودداری کنم. من متوجه شدم که هیچ کس عمداً یک کتاب خسته کننده نمی نویسد. متاسفانه خیلی ها موفق شده اند. من فکر می کنم دلیل اصلی این کسالت این است که بسیاری از نویسندگان در فن آوری به وظیفه نوشتن یک کتاب نگاه می کنند. من فکر می کنم بسیاری از نویسندگان کتاب می نویسند تا ثابت کنند چقدر باهوش هستند. اینها خیلی آکادمیک هستند. آنها برای تحت تاثیر قرار دادن سایر دانشگاهیان ساخته شده اند. عالیه! دنیا به دانشگاهیان نیاز دارد. اکثر توسعه دهندگان آکادمیک حرفه ای نیستند. به جرات می توانم بگویم، بسیاری از توسعه دهندگان هرگز یک دوره رسمی CS را گذرانده اند. هدف من از نوشتن این کتاب این نیست که ثابت کنم باهوش یا توانا هستم. همسرم به شما میگوید که من به طرز ناپسندی خود را تحقیر میکنم. در عوض، هدف من کمک به شما در عبور از دیواری است که شما را از حرکت به سطح بعدی در کدنویسی باز می دارد. مجبور بودم خودم از این دیوار بالا بروم و برای من آسان نبود. با این حال، اگر من می توانم این کار را انجام دهم، شما نیز می توانید با کمک من.
This is a book about design patterns written in the context of the C# coding language. I know what you’re probably thinking. What does that even mean? Well, I could tell you but I’d spoil the rest of the book, and trust me, it’s a doozy!
Design Patterns are a codified set of best practices for software problems that come up so often that we can learn to recognize them and immediately know how to solve them. The solutions for these recurring problems found in patterns have been used for decades and they have proven to be effective.
Patterns also become a battle language for developers because they are so pervasive. This idea comes from the popular television and movie franchise, Star Trek. In Star Trek, the warrior race known as the Klingons has two languages. They have the regular Klingon language that they learn in Klingon kindergarten and an abbreviated version they use during combat. The phrase “Load torpedo tubes 1 and 2 and fire a full spread” can be reduced to one or two words. All Klingons know what that phrase means, and they win battles because they are a few seconds faster than their linguistically-challenged foes. Similarly, you can say “Just use the decorator pattern.” Any developer who has studied patterns will understand what to do next.
Patterns are not specific to the C# language. However, in order to learn patterns effectively, you need an implementation language. The original book on patterns was written by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides, collectively known as the Gang of Four, or GoF for short. Their book, Design Patterns: Elements of Reusable Object-Oriented Software, is often referred to as the GoF book.
The GoF book was published in 1994, which makes it a technological dinosaur. While it may be old, the patterns explained within its pages are still very relevant. My criticism of the GoF book is it is written in a very academic format, and its implementation language is one you don’t really see anymore. The implementation language is an important detail. The GoF book covers 23 patterns, which is the same number of herbs and spices found in KFC’s original recipe. That can’t be a coincidence. This book doesn’t cover all 23 patterns, which is fine, because too much fried chicken isn’t very good for you. I’ve focused on patterns you’ll need every day in most of the projects you work on. I cover the remainder briefly in Chapter 8 at the end of the book.
There are some books out there that try to use pseudocode in order to be generic. I posit that such books are not useful to most people. If you’re like me, and you probably are in this regard, you’d wish for a code example that is easy to read, isn’t overly clever, and has a firm basis in the real world. Books and blog sites that try to teach you patterns with phrases such as “Class A inherits from Class B, which depends on Class C” are too vague to be useful. Equally annoying are books and sites that try to show you the pattern in 20 languages. They usually do a poor job with all 20 instead of focusing on doing a good job in just one. I am only using C# and the Unified Modeling Language (UML).
If you’ve never heard of UML before, don’t let it scare you. UML is a convention used to create diagrams. There are 14 types of UML diagrams. I only use one diagram type: class diagrams. I’ve included a primer in Appendix 2 to help you if you are new to UML.
This book is about the real world, or at least a close facsimile. I’ve written this book using the same techniques that are used in real software projects. There’s realistic code in the book that solves legitimate business problems. There are also design mistakes included, along with thoughtful ways out of trouble.
Another issue with academic books is that they are wordy and hard to read. I have strived to take a dry subject and avoid being boring. I realize that nobody intentionally writes a boring book. Unfortunately, many have succeeded. I think the main cause of this boredom is how a lot of authors in technology view the task of writing a book. I think a lot of authors write books to prove how smart they are. These tend to be very academic. They are built to impress other academics. That’s great! The world needs academics. Most developers are not professional academics. I dare say, a great many developers have never taken a formal CS course. My aim in writing this book isn’t to prove I’m smart or capable. My wife would tell you that I am obnoxiously self-deprecating. Instead, my aim is to help you over the wall that is keeping you from moving to the next level in your coding. I had to climb this wall by myself, and for me, it wasn’t easy. However, if I can do it, you can too, with my help.
این کتاب را میتوانید از لینک زیر بصورت رایگان دانلود کنید:
نظرات کاربران