Cart

Code That Fits in Your Head: Heuristics for Software Engineering, 1st edition

BRAND: PEARSON

Publisher:Addison-Wesley Professional
Author: Mark Seemann
Edition: (November 15, 2021) © 2022
eBook ISBN:9780137464357
Print ISBN: 9780137464401
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

Cách giảm độ phức tạp của mã và phát triển phần mềm bền vững hơn

"Mark Seemann nổi tiếng với việc giải thích các khái niệm phức tạp một cách rõ ràng và kỹ lưỡng. Trong cuốn sách này, ông cô đọng kinh nghiệm phát triển phần mềm trên phạm vi rộng của mình thành một tập hợp các kỹ thuật thực tế, thực tế để viết mã bền vững và thân thiện với con người. Cuốn sách này sẽ là một cuốn sách bắt buộc phải- đọc cho mọi lập trình viên."—Scott Wlaschin, tác giả cuốn Domain Modeling Made Function
Mã phù hợp với đầu bạn

đưa ra những lời khuyên thiết thực, không thể thiếu để viết mã với tốc độ bền vững và kiểm soát sự phức tạp khiến các dự án vượt khỏi tầm kiểm soát. Phản ánh kinh nghiệm hàng thập kỷ giúp các nhóm phần mềm thành công, Mark Seemann hướng dẫn sinh viên từ con số 0 (không có mã) đến các tính năng được triển khai và chỉ ra cách duy trì tốc độ di chuyển tốt khi họ thêm chức năng, giải quyết các mối quan tâm xuyên suốt, khắc phục sự cố và tối ưu hóa. Họ sẽ tìm thấy những ý tưởng, phương pháp thực hành và quy trình có giá trị cho các vấn đề chính, từ danh sách kiểm tra đến làm việc nhóm, đóng gói đến phân rã, thiết kế API đến thử nghiệm đơn vị. Seemann làm sáng tỏ những hiểu biết sâu sắc của mình bằng các ví dụ về mã được rút ra từ một dự án mẫu hoàn chỉnh. Được viết bằng C#, chúng được thiết kế rõ ràng và hữu ích cho bất kỳ ai sử dụng bất kỳ ngôn ngữ hướng đối tượng nào bao gồm Java, C++ và Python. Để tạo điều kiện khám phá sâu hơn, tất cả mã và thông báo cam kết mở rộng đều có sẵn để tải xuống.
Chọn những tư duy và quy trình hiệu quả và tránh những ẩn dụ xấu không hiệu quả.
Sử dụng danh sách kiểm tra để cải thiện kết quả với các kỹ năng đã có
Vượt qua tình trạng “tê liệt phân tích” bằng cách tạo và triển khai một lát cắt dọc cho một ứng dụng
Chống lại các lực dẫn đến thối mã và độ phức tạp không cần thiết
Nắm vững các kỹ thuật tốt hơn để thay đổi hành vi mã
Khám phá cách giải quyết vấn đề về mã nhanh chóng và hiệu quả hơn
Suy nghĩ hiệu quả hơn về hiệu suất và bảo mật
Đăng ký sách của bạn để có quyền truy cập thuận tiện vào việc tải xuống, cập nhật và/hoặc chỉnh sửa khi chúng có sẵn. Xem sách bên trong để biết chi tiết.


Series Editor Foreword xix
Preface xxiii
About the Author xxix


Part I: Acceleration 1Chapter 1: Art or Science? 3

1.1 Building a House 4
1.2 Growing a Garden 7
1.3 Towards Engineering 8
1.4 Conclusion 14

Chapter 2: Checklists 15

2.1 An Aid to Memory 15
2.2 Checklist for a New Code Base 17
2.3 Adding Checks to Existing Code Bases 29
2.4 Conclusion 32

Chapter 3: Tackling Complexity 33

3.1 Purpose 34
3.2 Why Programming Is Difficult 38
3.3 Towards Software Engineering 44
3.4 Conclusion 46

Chapter 4: Vertical Slice 49

4.1 Start with Working Software 50
4.2 Walking Skeleton 53
4.3 Outside-in 60
4.4 Complete the Slice 77
4.5 Conclusion 85

Chapter 5: Encapsulation 87

5.1 Save the Data 87
5.2 Validation 92
5.3 Protection of Invariants 105
5.4 Conclusion 108

Chapter 6: Triangulation 111

6.1 Short-Term versus Long-Term Memory 111
6.2 Capacity 114
6.3 Conclusion 127

Chapter 7: Decomposition 129

7.1 Code Rot 129
7.2 Code That Fits in Your Brain 136
7.3 Conclusion 153

Chapter 8: API Design 155

8.1 Principles of API Design 156
8.2 API Design Example 168
8.3 Conclusion 176

Chapter 9: Teamwork 177

9.1 Git 178
9.2 Collective Code Ownership 187
9.3 Conclusion 199

Part II: Sustainability 201Chapter 10: Augmenting Code 203

10.1 Feature Flags 204
10.2 The Strangler Pattern 209
10.3 Versioning 218
10.4 Conclusion 220

Chapter 11: Editing Unit Tests 223

11.1 Refactoring Unit Tests 223
11.2 See Tests Fail 233
11.3 Conclusion 234

Chapter 12: Troubleshooting 235

12.1 Understanding 235
12.2 Defects 240
12.3 Bisection 250
12.4 Conclusion 255

Chapter 13: Separation of Concerns 257

13.1 Composition 258
13.2 Cross-Cutting Concerns 267
13.3 Conclusion 274

Chapter 14: Rhythm 275

14.1 Personal Rhythm 276
14.2 Team Rhythm 282
14.3 Conclusion 285

Chapter 15: The Usual Suspects 287

15.1 Performance 288
15.2 Security 292
15.3 Other Techniques 300
15.4 Conclusion 308

Chapter 16: Tour 309

16.1 Navigation 309
16.2 Architecture 318
16.3 Usage 323
16.4 Conclusion 326

Appendix A: List of Practices 329

A.1 The 50/72 Rule 329
A.2 The 80/24 Rule 330
A.3 Arrange Act Assert 330
A.4 Bisection 330
A.5 Checklist for A New Code Base 331
A.6 Command Query Separation 331
A.7 Count the Variables 331
A.8 Cyclomatic Complexity 331
A.9 Decorators for Cross-Cutting Concerns 332
A.10 Devil's Advocate 332
A.11 Feature Flag 332
A.12 Functional Core, Imperative Shell 333
A.13 Hierarchy of Communication 333
A.14 Justify Exceptions from the Rule 333
A.15 Parse, Don't Validate 334
A.16 Postel's Law 334
A.17 Red Green Refactor 334
A.18 Regularly Update Dependencies 335
A.19 Reproduce Defects as Tests 335
A.20 Review Code 335
A.21 Semantic Versioning 335
A.22 Separate Refactoring of Test and Production Code 335
A.23 Slice 336
A.24 Strangler 336
A.25 Threat-Model 337
A.26 Transformation Priority Premise 337
A.27 X-driven Development 337
A.28 X Out Names 338

Bibliography 339
Index 349

TỔNG QUAN SÁCH

Cách giảm độ phức tạp của mã và phát triển phần mềm bền vững hơn

"Mark Seemann nổi tiếng với việc giải thích các khái niệm phức tạp một cách rõ ràng và kỹ lưỡng. Trong cuốn sách này, ông cô đọng kinh nghiệm phát triển phần mềm trên phạm vi rộng của mình thành một tập hợp các kỹ thuật thực tế, thực tế để viết mã bền vững và thân thiện với con người. Cuốn sách này sẽ là một cuốn sách bắt buộc phải- đọc cho mọi lập trình viên."—Scott Wlaschin, tác giả cuốn Domain Modeling Made Function
Mã phù hợp với đầu bạn

đưa ra những lời khuyên thiết thực, không thể thiếu để viết mã với tốc độ bền vững và kiểm soát sự phức tạp khiến các dự án vượt khỏi tầm kiểm soát. Phản ánh kinh nghiệm hàng thập kỷ giúp các nhóm phần mềm thành công, Mark Seemann hướng dẫn sinh viên từ con số 0 (không có mã) đến các tính năng được triển khai và chỉ ra cách duy trì tốc độ di chuyển tốt khi họ thêm chức năng, giải quyết các mối quan tâm xuyên suốt, khắc phục sự cố và tối ưu hóa. Họ sẽ tìm thấy những ý tưởng, phương pháp thực hành và quy trình có giá trị cho các vấn đề chính, từ danh sách kiểm tra đến làm việc nhóm, đóng gói đến phân rã, thiết kế API đến thử nghiệm đơn vị. Seemann làm sáng tỏ những hiểu biết sâu sắc của mình bằng các ví dụ về mã được rút ra từ một dự án mẫu hoàn chỉnh. Được viết bằng C#, chúng được thiết kế rõ ràng và hữu ích cho bất kỳ ai sử dụng bất kỳ ngôn ngữ hướng đối tượng nào bao gồm Java, C++ và Python. Để tạo điều kiện khám phá sâu hơn, tất cả mã và thông báo cam kết mở rộng đều có sẵn để tải xuống.
Chọn những tư duy và quy trình hiệu quả và tránh những ẩn dụ xấu không hiệu quả.
Sử dụng danh sách kiểm tra để cải thiện kết quả với các kỹ năng đã có
Vượt qua tình trạng “tê liệt phân tích” bằng cách tạo và triển khai một lát cắt dọc cho một ứng dụng
Chống lại các lực dẫn đến thối mã và độ phức tạp không cần thiết
Nắm vững các kỹ thuật tốt hơn để thay đổi hành vi mã
Khám phá cách giải quyết vấn đề về mã nhanh chóng và hiệu quả hơn
Suy nghĩ hiệu quả hơn về hiệu suất và bảo mật
Đăng ký sách của bạn để có quyền truy cập thuận tiện vào việc tải xuống, cập nhật và/hoặc chỉnh sửa khi chúng có sẵn. Xem sách bên trong để biết chi tiết.

MỤC LỤC

Series Editor Foreword xix
Preface xxiii
About the Author xxix


Part I: Acceleration 1Chapter 1: Art or Science? 3

1.1 Building a House 4
1.2 Growing a Garden 7
1.3 Towards Engineering 8
1.4 Conclusion 14

Chapter 2: Checklists 15

2.1 An Aid to Memory 15
2.2 Checklist for a New Code Base 17
2.3 Adding Checks to Existing Code Bases 29
2.4 Conclusion 32

Chapter 3: Tackling Complexity 33

3.1 Purpose 34
3.2 Why Programming Is Difficult 38
3.3 Towards Software Engineering 44
3.4 Conclusion 46

Chapter 4: Vertical Slice 49

4.1 Start with Working Software 50
4.2 Walking Skeleton 53
4.3 Outside-in 60
4.4 Complete the Slice 77
4.5 Conclusion 85

Chapter 5: Encapsulation 87

5.1 Save the Data 87
5.2 Validation 92
5.3 Protection of Invariants 105
5.4 Conclusion 108

Chapter 6: Triangulation 111

6.1 Short-Term versus Long-Term Memory 111
6.2 Capacity 114
6.3 Conclusion 127

Chapter 7: Decomposition 129

7.1 Code Rot 129
7.2 Code That Fits in Your Brain 136
7.3 Conclusion 153

Chapter 8: API Design 155

8.1 Principles of API Design 156
8.2 API Design Example 168
8.3 Conclusion 176

Chapter 9: Teamwork 177

9.1 Git 178
9.2 Collective Code Ownership 187
9.3 Conclusion 199

Part II: Sustainability 201Chapter 10: Augmenting Code 203

10.1 Feature Flags 204
10.2 The Strangler Pattern 209
10.3 Versioning 218
10.4 Conclusion 220

Chapter 11: Editing Unit Tests 223

11.1 Refactoring Unit Tests 223
11.2 See Tests Fail 233
11.3 Conclusion 234

Chapter 12: Troubleshooting 235

12.1 Understanding 235
12.2 Defects 240
12.3 Bisection 250
12.4 Conclusion 255

Chapter 13: Separation of Concerns 257

13.1 Composition 258
13.2 Cross-Cutting Concerns 267
13.3 Conclusion 274

Chapter 14: Rhythm 275

14.1 Personal Rhythm 276
14.2 Team Rhythm 282
14.3 Conclusion 285

Chapter 15: The Usual Suspects 287

15.1 Performance 288
15.2 Security 292
15.3 Other Techniques 300
15.4 Conclusion 308

Chapter 16: Tour 309

16.1 Navigation 309
16.2 Architecture 318
16.3 Usage 323
16.4 Conclusion 326

Appendix A: List of Practices 329

A.1 The 50/72 Rule 329
A.2 The 80/24 Rule 330
A.3 Arrange Act Assert 330
A.4 Bisection 330
A.5 Checklist for A New Code Base 331
A.6 Command Query Separation 331
A.7 Count the Variables 331
A.8 Cyclomatic Complexity 331
A.9 Decorators for Cross-Cutting Concerns 332
A.10 Devil's Advocate 332
A.11 Feature Flag 332
A.12 Functional Core, Imperative Shell 333
A.13 Hierarchy of Communication 333
A.14 Justify Exceptions from the Rule 333
A.15 Parse, Don't Validate 334
A.16 Postel's Law 334
A.17 Red Green Refactor 334
A.18 Regularly Update Dependencies 335
A.19 Reproduce Defects as Tests 335
A.20 Review Code 335
A.21 Semantic Versioning 335
A.22 Separate Refactoring of Test and Production Code 335
A.23 Slice 336
A.24 Strangler 336
A.25 Threat-Model 337
A.26 Transformation Priority Premise 337
A.27 X-driven Development 337
A.28 X Out Names 338

Bibliography 339
Index 349

-%
0₫ 0₫
0915920514
0915920514