Cart

Clean Code:A Handbook of Agile Software Craftsmanship

BRAND: PEARSON

Publisher:Pearson 
Author: Robert C. Martin
Edition: (August 1, 2008) © 2009
eBook ISBN:9780136083252
Print ISBN: 9780132350884
Type: 1 Year Subscription. Dành cho Cá nhân 

eBook edition. 1 Year Subscription. Dành cho Cá nhân  |  Trường ĐH, Nhóm, Thư Viện: Gọi 0915920514 để báo giá Pearson, Vital Source eBook hoặc mua Sách In  

Số lượng:
Tổng tiền:
Giá có thể thay đổi bất kỳ khi nào.
Thời hạn giao hàng: 03 ngày làm việc với sách eBook và 30 ngày với sách In. Gọi để được Tư vấn Giáo Trình.

Mô tả sản phẩm

Ngay cả mã xấu cũng có thể hoạt động. Nhưng nếu mã không sạch, nó có thể khiến tổ chức phát triển phải đầu hàng. Hàng năm, vô số giờ và tài nguyên đáng kể bị mất do viết mã kém. Nhưng nó không nhất thiết phải như vậy.

Chuyên gia phần mềm nổi tiếng Robert C. Martin trình bày một mô hình mang tính cách mạng với Mã sạch: Sổ tay về tay nghề thủ công phần mềm linh hoạt. Martin đã hợp tác với các đồng nghiệp của mình từ Object Mentor để chắt lọc phương pháp làm sạch mã nhanh nhẹn nhất của họ thành một cuốn sách sẽ thấm nhuần vào bạn những giá trị của một nghệ nhân phần mềm và giúp bạn trở thành một lập trình viên giỏi hơn—nhưng chỉ khi bạn làm việc chăm chỉ. vào đó.

Bạn sẽ làm loại công việc gì? Bạn sẽ đọc mã—rất nhiều mã. Và bạn sẽ được thử thách suy nghĩ về điều gì đúng và điều gì sai trong mã đó. Quan trọng hơn, bạn sẽ được thử thách đánh giá lại các giá trị nghề nghiệp và sự cam kết của bạn đối với nghề của mình.

Clean Code được chia thành ba phần. Phần đầu tiên mô tả các nguyên tắc, mô hình và cách thực hành viết mã sạch. Phần thứ hai bao gồm một số nghiên cứu trường hợp có độ phức tạp ngày càng tăng. Mỗi nghiên cứu điển hình là một bài tập làm sạch mã—chuyển đổi cơ sở mã có một số vấn đề thành một cơ sở mã hợp lý và hiệu quả. Phần thứ ba là phần thưởng: một chương duy nhất chứa danh sách các phương pháp phỏng đoán và “mùi” được thu thập trong khi tạo các nghiên cứu điển hình. Kết quả là một cơ sở kiến ​​thức mô tả cách chúng ta suy nghĩ khi viết, đọc và dọn dẹp mã.

Người đọc sẽ không hiểu được cuốn sách này

Cách phân biệt mã tốt và mã xấu
Cách viết code tốt và cách chuyển code xấu thành code tốt
Cách tạo tên hay, chức năng tốt, đồ vật tốt, lớp tốt
Cách định dạng mã để dễ đọc nhất
Cách triển khai xử lý lỗi hoàn chỉnh mà không che khuất logic mã
Cách kiểm thử đơn vị và thực hành phát triển theo hướng kiểm thử


Foreword                      xix
Introduction              xxv
On the Cover                     xxix

Chapter 1: Clean Code                    1
There Will Be Code                        2
Bad Code                           3
The Total Cost of Owning a Mess                 4
Schools of Thought                        12
We Are Authors                      13
The Boy Scout Rule                     14
Prequel and Principles                   15
Conclusion                        15
Bibliography                  15

Chapter 2: Meaningful Names                     17
Introduction               17
Use Intention-Revealing Names                     18
Avoid Disinformation                         19
Make Meaningful Distinctions                20
Use Pronounceable Names                            21
Use Searchable Names                                22
Avoid Encodings                          23
Avoid Mental Mapping                    25
Class Names                    25
Method Names                              25
Don’t Be Cute                    26
Pick One Word per Concept                 26
Don’t Pun                    26
Use Solution Domain Names                    27
Use Problem Domain Names                   27
Add Meaningful Context                       27
Don’t Add Gratuitous Context                    29
Final Words                        30

Chapter 3: Functions                                           31
Small!                               34
Do One Thing                         35
One Level of Abstraction per Function                           36
Switch Statements                     37
Use Descriptive Names                      39
Function Arguments                          40
Have No Side Effects                          44
Command Query Separation                           45
Prefer Exceptions to Returning Error Codes              46
Don’t Repeat Yourself                          48
Structured Programming                   48
How Do You Write Functions Like This?                49
Conclusion                          49
SetupTeardownIncluder                        50
Bibliography                                       52

Chapter 4: Comments                                                  53
Comments Do Not Make Up for Bad Code                   55
Explain Yourself in Code                        55
Good Comments                              55
Bad Comments                          59
Bibliography                          74

Chapter 5: Formatting                                           75
The Purpose of Formatting                     76
Vertical Formatting                         76
Horizontal Formatting                         85
Team Rules                      90
Uncle Bob’s Formatting Rules                  90
Chapter 6: Objects and Data Structures                      93
Data Abstraction                     93
Data/Object Anti-Symmetry                        95
The Law of Demeter                         97
Data Transfer Objects                     100
Conclusion                       101
Bibliography                           101

Chapter 7: Error Handling                           103
Use Exceptions Rather Than Return Codes                  104
Write Your Try-Catch-Finally Statement First                    105
Use Unchecked Exceptions                         106
Provide Context with Exceptions                      107
Define Exception Classes in Terms of a Caller’s Needs                107
Define the Normal Flow                  109
Don’t Return Null                        110
Don’t Pass Null                       111
Conclusion                           112
Bibliography                                 112

Chapter 8: Boundaries                                                            113
Using Third-Party Code                               114
Exploring and Learning Boundaries                      116
Learning log4j                         116
Learning Tests Are Better Than Free                      118
Using Code That Does Not Yet Exist                     118
Clean Boundaries                           120
Bibliography                           120

Chapter 9: Unit Tests                                    121
The Three Laws of TDD                   122
Keeping Tests Clean                          123
Clean Tests                        124
One Assert per Test                        130
F.I.R.S.T.                      132
Conclusion                       133
Bibliography                        133

Chapter 10: Classes                         135
Class Organization                  136
Classes Should Be Small!                 136
Organizing for Change                   147
Bibliography                     151

Chapter 11: Systems                                                  153
How Would You Build a City?                     154
Separate Constructing a System from Using It                      154
Scaling Up                            157
Java Proxies                        161
Pure Java AOP Frameworks                     163
AspectJ Aspects                     166
Test Drive the System Architecture                      166
Optimize Decision Making                       167
Use Standards Wisely, When They Add Demonstrable Value                168
Systems Need Domain-Specific Languages                   168
Conclusion                    169
Bibliography                      169

Chapter 12: Emergence                        171
Getting Clean via Emergent Design                171
Simple Design Rule 1: Runs All the Tests                  172
Simple Design Rules 2—4: Refactoring                        172
No Duplication                      173
Expressive                        175
Minimal Classes and Methods               176
Conclusion                   176
Bibliography                     176

Chapter 13: Concurrency                         177
Why Concurrency?                    178
Challenges                        180
Concurrency Defense Principles                   180
Know Your Library                    182
Know Your Execution Models                       183
Beware Dependencies Between Synchronized Methods            185
Keep Synchronized Sections Small                  185
Writing Correct Shut-Down Code Is Hard                 186
Testing Threaded Code                     186
Conclusion                      190
Bibliography                         191

Chapter 14: Successive Refinement                     193
Args Implementation                          194
Args: The Rough Draft                       201
String Arguments                   214
Conclusion                       250

Chapter 15: JUnit Internals                                    251
The JUnit Framework                    252
Conclusion                 265

Chapter 16: Refactoring SerialDate                         267
First, Make It Work                     268
Then Make It Right                    270
Conclusion                      284
Bibliography                     284

Chapter 17: Smells and Heuristics                         285
Comments                           286
Environment                       287
Functions                            288
General                               288
Java                                     307
Names                                 309
Tests                                    313
Conclusion                         314
Bibliography                      315

Appendix A: Concurrency II                              317
Client/Server Example                           317
Possible Paths of Execution                    321
Knowing Your Library                      326
Dependencies Between Methods Can Break Concurrent Code         329
Increasing Throughput                  333
Deadlock                    335
Testing Multithreaded Code                   339
Tool Support for Testing Thread-Based Code                    342
Conclusion                    342
Tutorial: Full Code Examples                    343

Appendix B: org.jfree.date.SerialDate                             349

Appendix C: Cross References of Heuristics                  409

Epilogue                           411
Index                                  413

 

TỔNG QUAN SÁCH

Ngay cả mã xấu cũng có thể hoạt động. Nhưng nếu mã không sạch, nó có thể khiến tổ chức phát triển phải đầu hàng. Hàng năm, vô số giờ và tài nguyên đáng kể bị mất do viết mã kém. Nhưng nó không nhất thiết phải như vậy.

Chuyên gia phần mềm nổi tiếng Robert C. Martin trình bày một mô hình mang tính cách mạng với Mã sạch: Sổ tay về tay nghề thủ công phần mềm linh hoạt. Martin đã hợp tác với các đồng nghiệp của mình từ Object Mentor để chắt lọc phương pháp làm sạch mã nhanh nhẹn nhất của họ thành một cuốn sách sẽ thấm nhuần vào bạn những giá trị của một nghệ nhân phần mềm và giúp bạn trở thành một lập trình viên giỏi hơn—nhưng chỉ khi bạn làm việc chăm chỉ. vào đó.

Bạn sẽ làm loại công việc gì? Bạn sẽ đọc mã—rất nhiều mã. Và bạn sẽ được thử thách suy nghĩ về điều gì đúng và điều gì sai trong mã đó. Quan trọng hơn, bạn sẽ được thử thách đánh giá lại các giá trị nghề nghiệp và sự cam kết của bạn đối với nghề của mình.

Clean Code được chia thành ba phần. Phần đầu tiên mô tả các nguyên tắc, mô hình và cách thực hành viết mã sạch. Phần thứ hai bao gồm một số nghiên cứu trường hợp có độ phức tạp ngày càng tăng. Mỗi nghiên cứu điển hình là một bài tập làm sạch mã—chuyển đổi cơ sở mã có một số vấn đề thành một cơ sở mã hợp lý và hiệu quả. Phần thứ ba là phần thưởng: một chương duy nhất chứa danh sách các phương pháp phỏng đoán và “mùi” được thu thập trong khi tạo các nghiên cứu điển hình. Kết quả là một cơ sở kiến ​​thức mô tả cách chúng ta suy nghĩ khi viết, đọc và dọn dẹp mã.

Người đọc sẽ không hiểu được cuốn sách này

Cách phân biệt mã tốt và mã xấu
Cách viết code tốt và cách chuyển code xấu thành code tốt
Cách tạo tên hay, chức năng tốt, đồ vật tốt, lớp tốt
Cách định dạng mã để dễ đọc nhất
Cách triển khai xử lý lỗi hoàn chỉnh mà không che khuất logic mã
Cách kiểm thử đơn vị và thực hành phát triển theo hướng kiểm thử


MỤC LỤC

Foreword                      xix
Introduction              xxv
On the Cover                     xxix

Chapter 1: Clean Code                    1
There Will Be Code                        2
Bad Code                           3
The Total Cost of Owning a Mess                 4
Schools of Thought                        12
We Are Authors                      13
The Boy Scout Rule                     14
Prequel and Principles                   15
Conclusion                        15
Bibliography                  15

Chapter 2: Meaningful Names                     17
Introduction               17
Use Intention-Revealing Names                     18
Avoid Disinformation                         19
Make Meaningful Distinctions                20
Use Pronounceable Names                            21
Use Searchable Names                                22
Avoid Encodings                          23
Avoid Mental Mapping                    25
Class Names                    25
Method Names                              25
Don’t Be Cute                    26
Pick One Word per Concept                 26
Don’t Pun                    26
Use Solution Domain Names                    27
Use Problem Domain Names                   27
Add Meaningful Context                       27
Don’t Add Gratuitous Context                    29
Final Words                        30

Chapter 3: Functions                                           31
Small!                               34
Do One Thing                         35
One Level of Abstraction per Function                           36
Switch Statements                     37
Use Descriptive Names                      39
Function Arguments                          40
Have No Side Effects                          44
Command Query Separation                           45
Prefer Exceptions to Returning Error Codes              46
Don’t Repeat Yourself                          48
Structured Programming                   48
How Do You Write Functions Like This?                49
Conclusion                          49
SetupTeardownIncluder                        50
Bibliography                                       52

Chapter 4: Comments                                                  53
Comments Do Not Make Up for Bad Code                   55
Explain Yourself in Code                        55
Good Comments                              55
Bad Comments                          59
Bibliography                          74

Chapter 5: Formatting                                           75
The Purpose of Formatting                     76
Vertical Formatting                         76
Horizontal Formatting                         85
Team Rules                      90
Uncle Bob’s Formatting Rules                  90
Chapter 6: Objects and Data Structures                      93
Data Abstraction                     93
Data/Object Anti-Symmetry                        95
The Law of Demeter                         97
Data Transfer Objects                     100
Conclusion                       101
Bibliography                           101

Chapter 7: Error Handling                           103
Use Exceptions Rather Than Return Codes                  104
Write Your Try-Catch-Finally Statement First                    105
Use Unchecked Exceptions                         106
Provide Context with Exceptions                      107
Define Exception Classes in Terms of a Caller’s Needs                107
Define the Normal Flow                  109
Don’t Return Null                        110
Don’t Pass Null                       111
Conclusion                           112
Bibliography                                 112

Chapter 8: Boundaries                                                            113
Using Third-Party Code                               114
Exploring and Learning Boundaries                      116
Learning log4j                         116
Learning Tests Are Better Than Free                      118
Using Code That Does Not Yet Exist                     118
Clean Boundaries                           120
Bibliography                           120

Chapter 9: Unit Tests                                    121
The Three Laws of TDD                   122
Keeping Tests Clean                          123
Clean Tests                        124
One Assert per Test                        130
F.I.R.S.T.                      132
Conclusion                       133
Bibliography                        133

Chapter 10: Classes                         135
Class Organization                  136
Classes Should Be Small!                 136
Organizing for Change                   147
Bibliography                     151

Chapter 11: Systems                                                  153
How Would You Build a City?                     154
Separate Constructing a System from Using It                      154
Scaling Up                            157
Java Proxies                        161
Pure Java AOP Frameworks                     163
AspectJ Aspects                     166
Test Drive the System Architecture                      166
Optimize Decision Making                       167
Use Standards Wisely, When They Add Demonstrable Value                168
Systems Need Domain-Specific Languages                   168
Conclusion                    169
Bibliography                      169

Chapter 12: Emergence                        171
Getting Clean via Emergent Design                171
Simple Design Rule 1: Runs All the Tests                  172
Simple Design Rules 2—4: Refactoring                        172
No Duplication                      173
Expressive                        175
Minimal Classes and Methods               176
Conclusion                   176
Bibliography                     176

Chapter 13: Concurrency                         177
Why Concurrency?                    178
Challenges                        180
Concurrency Defense Principles                   180
Know Your Library                    182
Know Your Execution Models                       183
Beware Dependencies Between Synchronized Methods            185
Keep Synchronized Sections Small                  185
Writing Correct Shut-Down Code Is Hard                 186
Testing Threaded Code                     186
Conclusion                      190
Bibliography                         191

Chapter 14: Successive Refinement                     193
Args Implementation                          194
Args: The Rough Draft                       201
String Arguments                   214
Conclusion                       250

Chapter 15: JUnit Internals                                    251
The JUnit Framework                    252
Conclusion                 265

Chapter 16: Refactoring SerialDate                         267
First, Make It Work                     268
Then Make It Right                    270
Conclusion                      284
Bibliography                     284

Chapter 17: Smells and Heuristics                         285
Comments                           286
Environment                       287
Functions                            288
General                               288
Java                                     307
Names                                 309
Tests                                    313
Conclusion                         314
Bibliography                      315

Appendix A: Concurrency II                              317
Client/Server Example                           317
Possible Paths of Execution                    321
Knowing Your Library                      326
Dependencies Between Methods Can Break Concurrent Code         329
Increasing Throughput                  333
Deadlock                    335
Testing Multithreaded Code                   339
Tool Support for Testing Thread-Based Code                    342
Conclusion                    342
Tutorial: Full Code Examples                    343

Appendix B: org.jfree.date.SerialDate                             349

Appendix C: Cross References of Heuristics                  409

Epilogue                           411
Index                                  413

 

-%
0₫ 0₫
0915920514
0915920514