جلد سخت سیاه و سفید
Product details
- Publisher : Manning (June 7, 2022)
- Language : English
- Paperback : 416 pages
- ISBN-10 : 1617299200
- ISBN-13 : 978-1617299209
کتاب Software Mistakes and Tradeoffs: How to make good programming decisions
Optimize the decisions that define your code by exploring the common mistakes and intentional tradeoffs made by expert developers.
In Software Mistakes and Tradeoffs you will learn how to:
Reason about your systems to make intuitive and better design decisions
Understand consequences and how to balance tradeoffs
Pick the right library for your problem
Thoroughly analyze all of your service’s dependencies
Understand delivery semantics and how they influence distributed architecture
Design and execute performance tests to detect code hot paths and validate a system’s SLA
Detect and optimize hot paths in your code to focus optimization efforts on root causes
Decide on a suitable data model for date/time handling to avoid common (but subtle) mistakes
Reason about compatibility and versioning to prevent unexpected problems for API clients
Understand tight/loose coupling and how it influences coordination of work between teams
Clarify requirements until they are precise, easily implemented, and easily tested
Optimize your APIs for friendly user experience
Code performance versus simplicity. Delivery speed versus duplication. Flexibility versus maintainability—every decision you make in software engineering involves balancing tradeoffs. In Software Mistakes and Tradeoffs you’ll learn from costly mistakes that Tomasz Lelek and Jon Skeet have encountered over their impressive careers. You’ll explore real-world scenarios where poor understanding of tradeoffs lead to major problems down the road, so you can pre-empt your own mistakes with a more thoughtful approach to decision making.
Learn how code duplication impacts the coupling and evolution speed of your systems, and how simple-sounding requirements can have hidden nuances with respect to date and time information. Discover how to efficiently narrow your optimization scope according to 80/20 Pareto principles, and ensure consistency in your distributed systems. You’ll soon have built up the kind of knowledge base that only comes from years of experience.
Purchase of the print book includes a free eBook in PDF, Kindle, and ePub formats from Manning Publications.
About the technology
Every step in a software project involves making tradeoffs. When you’re balancing speed, security, cost, delivery time, features, and more, reasonable design choices may prove problematic in production. The expert insights and relatable war stories in this book will help you make good choices as you design and build applications.
About the book
Software Mistakes and Tradeoffs explores real-world scenarios where the wrong tradeoff decisions were made and illuminates what could have been done differently. In it, authors Tomasz Lelek and Jon Skeet share wisdom based on decades of software engineering experience, including some delightfully instructive mistakes. You’ll appreciate the specific tips and practical techniques that accompany each example, along with evergreen patterns that will change the way you approach your next projects.
What's inside
How to reason about your software systematically
How to pick tools, libraries, and frameworks
How tight and loose coupling affect team coordination
Requirements that are precise, easy to implement, and easy to test
About the reader
For mid- and senior-level developers and architects who make decisions about software design and implementation.
About the author
Tomasz Lelek works daily with a wide range of production services, architectures, and JVM languages. A Google engineer and author of C# in Depth, Jon Skeet is famous for his many practical contributions to Stack Overflow.
Table of Contents
1 Introduction
2 Code duplication is not always bad: Code duplication vs. flexibility
3 Exceptions vs. other patterns of handling errors in your code
4 Balancing flexibility and complexity
5 Premature optimization vs. optimizing the hot path: Decisions that impact code performance
6 Simplicity vs. cost of maintenance for your API
7 Working effectively with date and time data
8 Leveraging data locality and memory of your machines
9 Third-party libraries: Libraries you use become your code
10 Consistency and atomicity in distributed systems
11 Delivery semantics in distributed systems
12 Managing versioning and compatibility
13 Keeping up to date with trends vs. cost of maintenance of your code
منابع کتاب کتاب Software Mistakes and Tradeoffs: How to make good programming decisions
با بررسی اشتباهات رایج و مبادلات عمدی ایجاد شده توسط توسعه دهندگان خبره، تصمیماتی را که کد شما را تعریف می کنند، بهینه کنید.
در بخش اشتباهات و مبادلات نرمافزاری ، یاد خواهید گرفت که چگونه:
سیستمهای خود را برای تصمیمگیری بصری و بهتر طراحی کنید،
پیامدها را درک کنید و چگونه به تعادل بین آنها بپردازید .
کتابخانه مناسب را برای مشکل خود انتخاب کنید.
تمام وابستگیهای سرویس خود را به طور کامل تجزیه و تحلیل کنید.
معماری توزیع شده
طراحی و اجرای تست های عملکرد برای شناسایی مسیرهای داغ کد و اعتبارسنجی SLA سیستم
شناسایی و بهینه سازی مسیرهای داغ در کد شما برای تمرکز تلاش های بهینه سازی بر روی علل ریشه ای
برای جلوگیری از اشتباهات رایج (اما ظریف) در مورد یک مدل داده مناسب برای مدیریت تاریخ/زمان تصمیم بگیرید.
دلیل در مورد سازگاری و نسخهسازی برای جلوگیری از مشکلات غیرمنتظره برای مشتریان API
درک کوپلینگ تنگ و شل و چگونگی تأثیر آن بر هماهنگی کار بین تیمها
. دقیق، به راحتی پیاده سازی و آزمایش آسان
API های خود را برای تجربه کاربر پسند
عملکرد کد در مقابل سادگی بهینه کنید. سرعت تحویل در مقابل تکرار. انعطافپذیری در مقابل قابلیت نگهداری – هر تصمیمی که در مهندسی نرمافزار میگیرید شامل متعادل کردن معاوضهها است. در اشتباهات و معاوضه های نرم افزاریشما از اشتباهات پرهزینهای که توماس للک و جان اسکیت در طول حرفههای چشمگیر خود با آنها مواجه شدهاند، یاد خواهید گرفت. شما سناریوهای دنیای واقعی را بررسی خواهید کرد که در آن درک ضعیف از معاوضه ها منجر به مشکلات بزرگ در مسیر می شود، بنابراین می توانید با رویکردی متفکرانه تر در تصمیم گیری، از اشتباهات خود جلوگیری کنید.
بیاموزید که چگونه تکرار کد بر سرعت کوپلینگ و تکامل سیستمهای شما تأثیر میگذارد، و چگونه الزامات ساده میتوانند تفاوتهای ظریف با توجه به اطلاعات تاریخ و زمان داشته باشند. کشف کنید که چگونه به طور موثر دامنه بهینه سازی خود را طبق اصول پارتو 80/20 محدود کنید و از ثبات در سیستم های توزیع شده خود اطمینان حاصل کنید. شما به زودی نوع پایه دانشی را ایجاد خواهید کرد که تنها از سالها تجربه ناشی می شود.
خرید کتاب چاپی شامل یک کتاب الکترونیکی رایگان در قالبهای PDF، Kindle و ePub از انتشارات منینگ است.
درباره فناوری
هر مرحله در یک پروژه نرم افزاری مستلزم ایجاد معاوضه است. وقتی سرعت، امنیت، هزینه، زمان تحویل، ویژگیها و موارد دیگر را متعادل میکنید، انتخابهای معقول طراحی ممکن است در تولید مشکلساز باشند. بینشهای تخصصی و داستانهای جنگ مرتبط در این کتاب به شما کمک میکند هنگام طراحی و ساخت برنامههای کاربردی، انتخابهای خوبی داشته باشید.
درباره کتاب
اشتباهات و مبادلات نرم افزاریسناریوهای دنیای واقعی را بررسی میکند که در آن تصمیمهای مبادله اشتباه گرفته شدهاند و آنچه را که میتوانستند بهطور متفاوتی انجام شود، روشن میکند. در آن، نویسندگان Tomasz Lelek و Jon Skeet خرد بر اساس دههها تجربه مهندسی نرمافزار، از جمله برخی از اشتباهات آموزنده لذت بخش، به اشتراک میگذارند. از نکات خاص و تکنیک های عملی همراه با هر مثال، همراه با الگوهای همیشه سبز که نحوه رویکرد شما به پروژه های بعدی شما را تغییر می دهد، قدردانی خواهید کرد.
چه چیزی در داخل است
چگونه در مورد نرم افزار خود به طور سیستماتیک استدلال کنیم
چگونه ابزارها، کتابخانه ها و چارچوب ها را انتخاب کنیم
چگونه کوپلینگ فشرده و شل بر هماهنگی تیم تأثیر می گذارد
الزامات دقیق، پیاده سازی آسان و آزمایش آسان
درباره خواننده
برای توسعه دهندگان و معماران سطح متوسط و ارشد که در مورد طراحی و پیاده سازی نرم افزار تصمیم می گیرند.
درباره نویسنده
Tomasz Lelek روزانه با طیف گسترده ای از خدمات تولیدی، معماری ها و زبان های JVM کار می کند. مهندس گوگل و نویسنده C# in Depth ، Jon Skeet به دلیل کمک های عملی زیادی که در Stack Overflow انجام داد، مشهور است.
فهرست مطالب
1 مقدمه
2 تکرار کد همیشه بد نیست: تکرار کد در مقابل انعطاف پذیری
3 استثنا در مقابل سایر الگوهای رسیدگی به خطاها در کد شما
4 تعادل انعطاف پذیری و پیچیدگی
5 بهینه سازی زودرس در مقابل بهینه سازی مسیر داغ: تصمیماتی که بر عملکرد کد تأثیر می گذارد
6 سادگی در مقابل هزینه تعمیر و نگهداری API شما
7 کارکرد موثر با داده های تاریخ و زمان
8 بهره گیری از موقعیت مکانی داده و حافظه دستگاه های شما
9 کتابخانه های شخص ثالث: کتابخانه هایی که استفاده می کنید به کد شما تبدیل می شوند
10 سازگاری و اتمی بودن در سیستم های توزیع شده
11 معناشناسی تحویل در سیستم های توزیع شده
12 مدیریت نسخه سازی و سازگاری
13 به روز نگه داشتن روندها در مقابل هزینه نگهداری کد شما
ارسال نظر درباره کتاب Software Mistakes and Tradeoffs: How to make good programming decisions