دسترسی نامحدود
برای کاربرانی که ثبت نام کرده اند
برای ارتباط با ما می توانید از طریق شماره موبایل زیر از طریق تماس و پیامک با ما در ارتباط باشید
در صورت عدم پاسخ گویی از طریق پیامک با پشتیبان در ارتباط باشید
برای کاربرانی که ثبت نام کرده اند
درصورت عدم همخوانی توضیحات با کتاب
از ساعت 7 صبح تا 10 شب
ویرایش: 2
نویسندگان: Mariano Anaya
سری:
ISBN (شابک) : 9781800560215
ناشر: Packt
سال نشر: 2020
تعداد صفحات: 0
زبان: English
فرمت فایل : EPUB (درصورت درخواست کاربر به PDF، EPUB یا AZW3 تبدیل می شود)
حجم فایل: 1 مگابایت
در صورت تبدیل فایل کتاب Clean Code in Python: Second Edition به فرمت های PDF، EPUB، AZW3، MOBI و یا DJVU می توانید به پشتیبان اطلاع دهید تا فایل مورد نظر را تبدیل نمایند.
توجه داشته باشید کتاب Clean Code in Python: نسخه دوم نسخه زبان اصلی می باشد و کتاب ترجمه شده به فارسی نمی باشد. وبسایت اینترنشنال لایبرری ارائه دهنده کتاب های زبان اصلی می باشد و هیچ گونه کتاب ترجمه شده یا نوشته شده به فارسی را ارائه نمی دهد.
روشهای مهندسی نرمافزار خود را برای مقابله با ناکارآمدیها، خطاها و سایر خطراتی که به دلیل کد بد ظاهر میشوند، بهبود دهید. پیاده سازی تکنیک های عملی یادگیری پیاده سازی تکنیک های refactoring و اصول SOLID در پایتون شرح کتاب زبان پایتون در زمینه های متعددی مانند ساخت نرم افزار، مدیریت سیستم ها و پردازش داده ها بسیار رایج است. متخصصان باتجربه در هر زمینه با چالش های بی نظمی، خوانایی ضعیف و آزمایش پذیری به دلیل کدهای ساختاریافته مواجه هستند. با کد به روز شده و محتوای اصلاح شده که با ویژگی های جدید Python 3.9 تراز شده است، این ویرایش دوم از Clean Code در پایتون تمام ابزارهایی را که برای غلبه بر این موانع و مدیریت موفقیت آمیز پروژه های خود نیاز دارید در اختیار شما قرار می دهد. کتاب با تشریح عناصر اساسی نوشتن کد تمیز و نحوه ایفای نقش کلیدی آن در برنامه نویسی پایتون آغاز می شود. شما با نوشتن کدهای کارآمد و خوانا با استفاده از کتابخانه استاندارد پایتون و بهترین شیوه ها برای طراحی نرم افزار آشنا خواهید شد. این کتاب عمیق تر به برنامه نویسی شی گرا در پایتون می پردازد و به شما نشان می دهد که چگونه از اشیاء با توصیفگرها و مولدها استفاده کنید. همچنین به شما اصول طراحی تست نرم افزار و نحوه حل مشکلات را با پیاده سازی الگوهای طراحی نرم افزار در کدتان نشان می دهد. در فصل آخر، ما یک برنامه یکپارچه را به یک میکروسرویس تقسیم میکنیم و از کد به عنوان پایهای برای یک پلتفرم جامد شروع میکنیم. در پایان این کتاب کد پاک، شما در به کارگیری شیوههای کدنویسی مورد تایید صنعت برای طراحی کدهای Python در دنیای واقعی پاک، پایدار و خوانا مهارت خواهید داشت. آنچه یاد خواهید گرفت با استفاده از ابزارهای خودکار یک محیط توسعه مولد راه اندازی کنید. از روش های جادویی در پایتون برای نوشتن کد بهتر استفاده کنید، پیچیدگی را انتزاع کنید و جزئیات را محصور کنید. ایجاد انتزاعات قدرتمند با استفاده از اصول مهندسی نرم افزار طراحی شی گرا ایجاد راه حل های اختصاصی پایتون با استفاده از دکوراتورها و توصیف کننده ها کد Refactor را به طور موثر با کمک آزمون های واحد ایجاد کنید پایه های معماری جامد را با پایه کد تمیز به عنوان سنگ بنای آن ایجاد کنید این کتاب برای چه کسانی است. این کتاب برای رهبران تیم، معماران نرمافزار و مهندسان ارشد نرمافزار که میخواهند تکنیکهای کدنویسی پایتون را یاد بگیرند و روی سیستمهای قدیمی خود برای صرفهجویی در هزینه و بهبود کارایی کار کنند، جذاب خواهد بود. این کتاب فرض می کند که شما درک قوی از برنامه نویسی دارید.
Improve your software engineering practices to tackle inefficiencies, errors, and other perils that emerge due to bad code Key Features Enhance your coding skills to increase efficiency as well as reflect the new features introduced in Python 3.9 Understand how to apply microservices to your legacy systems by implementing practical techniques Learn to implement the refactoring techniques and SOLID principles in Python Book Description The Python language is immensely prevalent in numerous areas such as software construction, systems administration, and data processing. Experienced professionals in every field face the challenges of disorganization, poor readability, and testability due to unstructured code. With updated code and revised content aligned to the new features of Python 3.9, this second edition of Clean code in Python will provide you with all the tools you need to overcome these obstacles and manage your projects successfully. The book begins by describing the basic elements of writing clean code and how it plays a key role in Python programming. You will learn about writing efficient and readable code using the Python standard library and best practices for software design. The book delves more deeply into object-oriented programming in Python and shows you how to use objects with descriptors and generators. It will also show you the design principles of software testing and how to resolve problems by implementing software design patterns in your code. In the final chapter, we break down a monolithic application to a microservice one, starting from the code as the basis for a solid platform. By the end of this clean code book, you will be proficient in applying industry-approved coding practices to design clean, sustainable and readable real-world Python code. What You Will Learn Set up a productive development environment by leveraging automatic tools Leverage the magic methods in Python to write better code, abstracting complexity away and encapsulating details Create advanced object-oriented designs using unique features of Python, such as descriptors Eliminate duplicated code by creating powerful abstractions using software engineering principles of object-oriented design Create Python-specific solutions using decorators and descriptors Refactor code effectively with the help of unit tests Build the foundations for solid architecture with a clean code base as its cornerstone Who this book is for This book will appeal to team leads, software architects, and senior software engineers who want to learn Python coding techniques and work on their legacy systems to save cost and improve efficiency. The book assumes that you have a strong understanding of programming.
Preface......Page 16
Who this book is for?......Page 17
What this book covers......Page 19
Download the color images......Page 21
Conventions used......Page 22
Reviews......Page 23
Introduction, Code Formatting, and Tools......Page 25
The meaning of clean code......Page 26
The importance of having clean code......Page 27
Some exceptions......Page 29
Code formatting......Page 31
Adhering to a coding style guide on your project......Page 32
Documentation......Page 35
Code comments......Page 36
Docstrings......Page 37
Annotations......Page 41
Do annotations replace docstrings?......Page 45
Tooling......Page 47
Checking type consistency......Page 48
Generic validations in code......Page 51
Automatic formatting......Page 53
Setup for automatic checks......Page 56
Summary......Page 58
References......Page 59
Pythonic Code......Page 60
Indexes and slices......Page 61
Creating your own sequences......Page 63
Context managers......Page 66
Implementing context managers......Page 69
Comprehensions and assignment expressions......Page 73
Properties, attributes, and different types of methods for objects......Page 76
Underscores in Python......Page 77
Properties......Page 80
Creating classes with a more compact syntax......Page 83
Iterable objects......Page 87
Creating iterable objects......Page 88
Creating sequences......Page 91
Container objects......Page 93
Dynamic attributes for objects......Page 95
Callable objects......Page 98
Summary of magic methods......Page 99
Caveats in Python......Page 101
Mutable default arguments......Page 102
Extending built-in types......Page 103
A brief introduction to asynchronous code......Page 106
References......Page 109
General Traits of Good Code......Page 111
Design by contract......Page 112
Preconditions......Page 114
Postconditions......Page 115
Design by contract – conclusions......Page 116
Defensive programming......Page 117
Error handling......Page 118
Value substitution......Page 119
Exception handling......Page 120
Using assertions in Python......Page 128
Separation of concerns......Page 131
Cohesion and coupling......Page 132
Acronyms to live by......Page 133
DRY/OAOO......Page 134
YAGNI......Page 136
KIS......Page 138
EAFP/LBYL......Page 140
Inheritance in Python......Page 141
When inheritance is a good decision......Page 142
Anti-patterns for inheritance......Page 143
Method Resolution Order (MRO)......Page 147
Mixins......Page 149
How function arguments work in Python......Page 151
How arguments are copied to functions......Page 152
Variable number of arguments......Page 153
Positional-only parameters......Page 159
Keyword-only arguments......Page 161
The number of arguments in functions......Page 162
Function arguments and coupling......Page 163
Compact function signatures that take too many arguments......Page 164
Orthogonality in software......Page 166
Structuring the code......Page 168
Summary......Page 170
References......Page 171
The SOLID Principles......Page 173
The single responsibility principle......Page 174
A class with too many responsibilities......Page 175
Distributing responsibilities......Page 176
The open/closed principle......Page 178
Example of maintainability perils for not following the OCP......Page 179
Refactoring the events system for extensibility......Page 182
Extending the events system......Page 184
Liskov's substitution principle......Page 186
Using mypy to detect incorrect method signatures......Page 188
Detecting incompatible signatures with pylint......Page 190
More subtle cases of LSP violations......Page 191
Remarks on the LSP......Page 194
Interface segregation......Page 195
The smaller the interface, the better......Page 197
How small should an interface be?......Page 199
Dependency inversion......Page 200
A case of rigid dependencies......Page 201
Inverting the dependencies......Page 202
Dependency injection......Page 203
Summary......Page 206
References......Page 208
Using Decorators to Improve Our Code......Page 209
What are decorators in Python?......Page 210
Function decorators......Page 211
Decorators for classes......Page 213
Other types of decorator......Page 217
Passing arguments to decorators......Page 218
Decorators with nested functions......Page 219
Decorator objects......Page 221
Decorators with default values......Page 223
Decorators for coroutines......Page 226
Extended syntax for decorators......Page 229
Good uses for decorators......Page 230
Adapting function signatures......Page 231
Tracing code......Page 233
Preserving data about the original wrapped object......Page 234
Incorrect handling of side effects in a decorator......Page 237
Requiring decorators with side effects......Page 240
Creating decorators that will always work......Page 242
Decorators and clean code......Page 245
Composition over inheritance......Page 246
The DRY principle with decorators......Page 249
Decorators and separation of concerns......Page 251
Analysis of good decorators......Page 253
Summary......Page 254
References......Page 255
A first look at descriptors......Page 257
The machinery behind descriptors......Page 258
The get method......Page 262
The set method......Page 264
The delete method......Page 266
The set name method......Page 269
Non-data descriptors......Page 271
Data descriptors......Page 274
An application of descriptors......Page 277
A first attempt without using descriptors......Page 278
The idiomatic implementation......Page 279
Different forms of implementing descriptors......Page 282
The issue of shared state......Page 283
Accessing the dictionary of the object......Page 284
Using weak references......Page 285
Reusing code......Page 286
An alternative to class decorators......Page 287
Analysis of descriptors......Page 291
Functions and methods......Page 292
Built-in decorators for methods......Page 296
Slots......Page 298
Implementing descriptors in decorators......Page 299
Interface of descriptors......Page 300
Object-oriented design of the descriptors......Page 301
Summary......Page 302
References......Page 303
Generators, Iterators, and Asynchronous Programming......Page 305
Creating generators......Page 306
A first look at generators......Page 307
Generator expressions......Page 310
Idioms for iteration......Page 312
The next() function......Page 315
Using a generator......Page 316
Itertools......Page 317
Simplifying code through iterators......Page 318
The iterator pattern in Python......Page 321
Coroutines......Page 326
close()......Page 327
throw(ex_type[, ex_value[, ex_traceback]])......Page 328
send(value)......Page 330
Returning values in coroutines......Page 334
Delegating into smaller coroutines – the 'yield from' syntax......Page 336
Asynchronous programming......Page 342
Magic asynchronous methods......Page 345
Asynchronous context managers......Page 346
Other magic methods......Page 347
Asynchronous iteration......Page 348
Asynchronous generators......Page 351
References......Page 353
Unit Testing and Refactoring......Page 355
Design principles and unit testing......Page 356
A note about other forms of automated testing......Page 357
Unit testing and agile software development......Page 359
Unit testing and software design......Page 360
Defining the boundaries of what to test......Page 364
Frameworks and libraries for unit testing......Page 365
unittest......Page 367
pytest......Page 373
Code coverage......Page 378
Mock objects......Page 382
Refactoring......Page 389
Evolving our code......Page 390
Production code isn't the only one that evolves......Page 392
More about testing......Page 394
Mutation testing......Page 395
Boundaries or limit values......Page 398
Classes of equivalence......Page 399
Edge cases......Page 400
A brief introduction to test-driven development......Page 401
Summary......Page 402
References......Page 403
Common Design Patterns......Page 404
Design pattern considerations in Python......Page 405
Design patterns in action......Page 406
Singleton and shared state (monostate)......Page 408
Adapter......Page 415
Composite......Page 418
Decorator......Page 419
Facade......Page 422
Chain of responsibility......Page 424
The template method......Page 427
Command......Page 428
State......Page 430
The null object pattern......Page 435
Final thoughts about design patterns......Page 438
The influence of patterns over the design......Page 439
Design patterns as theory......Page 440
Names in our models......Page 441
References......Page 442
From clean code to clean architecture......Page 444
Separation of concerns......Page 446
Monolithic applications and microservices......Page 447
Abstractions......Page 449
Software components......Page 450
Packages......Page 451
Managing dependencies......Page 455
Other considerations when managing dependencies......Page 457
Artifact versions......Page 459
Docker containers......Page 460
Use case......Page 462
Domain models......Page 463
Calling from the application......Page 465
Adapters......Page 467
The services......Page 468
Analysis......Page 471
Limitations......Page 472
Testability......Page 473
Summary......Page 474
References......Page 475
Summing it all up......Page 476
Other Books You May Enjoy......Page 478
Index......Page 480