Facebook Pixel
Searching...
Tiếng Việt
EnglishEnglish
EspañolSpanish
简体中文Chinese
FrançaisFrench
DeutschGerman
日本語Japanese
PortuguêsPortuguese
ItalianoItalian
한국어Korean
РусскийRussian
NederlandsDutch
العربيةArabic
PolskiPolish
हिन्दीHindi
Tiếng ViệtVietnamese
SvenskaSwedish
ΕλληνικάGreek
TürkçeTurkish
ไทยThai
ČeštinaCzech
RomânăRomanian
MagyarHungarian
УкраїнськаUkrainian
Bahasa IndonesiaIndonesian
DanskDanish
SuomiFinnish
БългарскиBulgarian
עבריתHebrew
NorskNorwegian
HrvatskiCroatian
CatalàCatalan
SlovenčinaSlovak
LietuviųLithuanian
SlovenščinaSlovenian
СрпскиSerbian
EestiEstonian
LatviešuLatvian
فارسیPersian
മലയാളംMalayalam
தமிழ்Tamil
اردوUrdu
Clean Architecture

Clean Architecture

A Craftsman's Guide to Software Structure and Design (Robert C. Martin Series)
bởi Robert Martin 2017 432 trang
4.23
6k+ đánh giá
Programming
Technology
Computer Science
Nghe

Điểm chính

1. Kiến trúc phần mềm là tối ưu hóa nguồn nhân lực và tối đa hóa năng suất

Mục tiêu của kiến trúc phần mềm là giảm thiểu nguồn nhân lực cần thiết để xây dựng và duy trì hệ thống yêu cầu.

Quyết định kiến trúc rất quan trọng. Kiến trúc tốt giảm thiểu nỗ lực cần thiết để phát triển, triển khai và duy trì các hệ thống phần mềm. Nó cho phép các nhóm làm việc độc lập, giảm thiểu tác động của các thay đổi và cho phép hệ thống phát triển theo thời gian.

Các khía cạnh chính của kiến trúc tốt:

  • Phân tách các mối quan tâm
  • Quản lý phụ thuộc
  • Trừu tượng hóa các chi tiết triển khai
  • Linh hoạt để thích ứng với các thay đổi trong tương lai

Bằng cách tập trung vào các khía cạnh này, các kiến trúc sư có thể tạo ra các hệ thống dễ hiểu, dễ sửa đổi và mở rộng, cuối cùng dẫn đến tăng năng suất và giảm chi phí trong suốt vòng đời của hệ thống.

2. Kiến trúc sạch tách biệt các quy tắc kinh doanh khỏi các chi tiết bên ngoài

Trung tâm của ứng dụng của bạn không phải là cơ sở dữ liệu. Cũng không phải là một hoặc nhiều khung mà bạn có thể đang sử dụng. Trung tâm của ứng dụng của bạn là các trường hợp sử dụng của ứng dụng.

Quy tắc kinh doanh là cốt lõi. Kiến trúc sạch tổ chức mã thành các vòng tròn đồng tâm, với các quy tắc kinh doanh ở trung tâm và các chi tiết triển khai ở các lớp bên ngoài. Sự phân tách này cho phép logic kinh doanh cốt lõi không bị ảnh hưởng bởi các thay đổi từ các yếu tố bên ngoài như cơ sở dữ liệu, giao diện người dùng hoặc khung.

Các lớp chính trong kiến trúc sạch:

  • Thực thể: Các quy tắc kinh doanh toàn doanh nghiệp
  • Trường hợp sử dụng: Các quy tắc kinh doanh cụ thể của ứng dụng
  • Bộ chuyển đổi giao diện: Chuyển đổi dữ liệu giữa các trường hợp sử dụng và các cơ quan bên ngoài
  • Khung và trình điều khiển: Các công cụ và công nghệ bên ngoài

Bằng cách tuân thủ cấu trúc này, các nhà phát triển có thể tạo ra các hệ thống:

  • Linh hoạt và dễ thích ứng với thay đổi
  • Dễ kiểm tra và bảo trì
  • Ít phụ thuộc vào các công nghệ hoặc khung cụ thể

3. Nguyên tắc SOLID hướng dẫn tạo ra các hệ thống linh hoạt, dễ bảo trì

Các nguyên tắc SOLID cho chúng ta biết cách sắp xếp các hàm và cấu trúc dữ liệu thành các lớp, và cách các lớp đó nên được kết nối với nhau.

SOLID tăng cường tính mô-đun. Năm nguyên tắc này cung cấp hướng dẫn để tạo ra các hệ thống phần mềm dễ hiểu, linh hoạt và dễ bảo trì. Chúng giúp các nhà phát triển thiết kế mã chống lại các thay đổi và dễ mở rộng.

Các nguyên tắc SOLID là:

  • Nguyên tắc trách nhiệm đơn lẻ: Một lớp chỉ nên có một lý do để thay đổi
  • Nguyên tắc mở-đóng: Các thực thể phần mềm nên mở để mở rộng nhưng đóng để sửa đổi
  • Nguyên tắc thay thế Liskov: Các đối tượng của một lớp cha nên có thể thay thế bằng các đối tượng của các lớp con mà không ảnh hưởng đến tính đúng đắn của chương trình
  • Nguyên tắc phân tách giao diện: Nhiều giao diện cụ thể cho từng khách hàng tốt hơn một giao diện chung
  • Nguyên tắc đảo ngược phụ thuộc: Các module cấp cao không nên phụ thuộc vào các module cấp thấp; cả hai nên phụ thuộc vào các trừu tượng

Bằng cách áp dụng các nguyên tắc này, các nhà phát triển có thể tạo ra các kiến trúc phần mềm mạnh mẽ và có khả năng mở rộng, có thể thích ứng với các yêu cầu thay đổi theo thời gian.

4. Các thành phần là các khối xây dựng của kiến trúc sạch

Các thành phần là các đơn vị triển khai. Chúng là các thực thể nhỏ nhất có thể được triển khai như một phần của hệ thống.

Thiết kế mô-đun cho phép linh hoạt. Các thành phần trong kiến trúc sạch là các phần của hệ thống có thể triển khai và phát triển độc lập. Chúng bao gồm các chức năng liên quan và có các giao diện được định nghĩa rõ ràng, cho phép dễ dàng bảo trì và sửa đổi hệ thống.

Các đặc điểm chính của các thành phần được thiết kế tốt:

  • Tính kết hợp cao: Các chức năng liên quan được nhóm lại với nhau
  • Tính kết nối thấp: Các phụ thuộc tối thiểu giữa các thành phần
  • Giao diện rõ ràng: Các phương thức tương tác được định nghĩa rõ ràng
  • Khả năng triển khai độc lập: Có thể cập nhật hoặc thay thế mà không ảnh hưởng đến các phần khác của hệ thống

Bằng cách tổ chức hệ thống thành các thành phần, các kiến trúc sư có thể:

  • Tạo điều kiện phát triển song song bởi các nhóm khác nhau
  • Dễ dàng kiểm tra và gỡ lỗi
  • Cho phép cập nhật và cải tiến từng phần của hệ thống
  • Cải thiện khả năng mở rộng và bảo trì tổng thể của hệ thống

5. Ranh giới xác định và bảo vệ logic kinh doanh cốt lõi

Tại mỗi ranh giới kiến trúc, chúng ta có thể tìm thấy mẫu Đối tượng Khiêm tốn ẩn nấp ở đâu đó gần đó.

Ranh giới bảo vệ cốt lõi. Các ranh giới kiến trúc trong kiến trúc sạch tách biệt các khu vực quan tâm khác nhau, đặc biệt là giữa logic kinh doanh và các chi tiết triển khai. Các ranh giới này giúp duy trì sự độc lập của các quy tắc kinh doanh cốt lõi khỏi các thay đổi bên ngoài.

Các khía cạnh chính của ranh giới kiến trúc:

  • Sử dụng các giao diện để định nghĩa các tương tác giữa các lớp
  • Đảo ngược phụ thuộc để đảm bảo rằng các phụ thuộc hướng vào trong
  • Các đối tượng chuyển dữ liệu để truyền thông tin qua các ranh giới
  • Các đối tượng khiêm tốn để tách biệt hành vi có thể kiểm tra khỏi các thành phần khó kiểm tra

Bằng cách thiết lập các ranh giới rõ ràng, các kiến trúc sư có thể:

  • Giảm thiểu tác động của các thay đổi trong các hệ thống hoặc công nghệ bên ngoài
  • Tạo điều kiện dễ dàng kiểm tra logic kinh doanh cốt lõi
  • Cho phép thay thế các chi tiết triển khai mà không ảnh hưởng đến hệ thống cốt lõi
  • Cải thiện tính linh hoạt và khả năng thích ứng tổng thể của hệ thống

6. Kiến trúc sạch tạo điều kiện cho phát triển theo hướng kiểm thử và khả năng triển khai độc lập

Một kiến trúc tốt làm cho hệ thống dễ thay đổi, theo mọi cách mà nó phải thay đổi, bằng cách để lại các tùy chọn mở.

Khả năng kiểm thử và linh hoạt là chìa khóa. Kiến trúc sạch thúc đẩy các thực hành làm cho hệ thống dễ kiểm thử và triển khai độc lập. Bằng cách tách biệt các mối quan tâm và quản lý các phụ thuộc, việc viết các kiểm thử đơn vị cho logic kinh doanh cốt lõi và triển khai các thành phần khác nhau của hệ thống trở nên đơn giản hơn.

Lợi ích của kiến trúc sạch đối với kiểm thử và triển khai:

  • Các quy tắc kinh doanh cốt lõi có thể được kiểm thử mà không cần phụ thuộc vào giao diện người dùng, cơ sở dữ liệu hoặc các phụ thuộc bên ngoài
  • Các thành phần khác nhau có thể được triển khai độc lập, cho phép cập nhật dễ dàng hơn
  • Các thay đổi trong một khu vực của hệ thống có tác động tối thiểu đến các khu vực khác
  • Các tính năng mới có thể được thêm vào với ít rủi ro làm hỏng chức năng hiện có

Những đặc điểm này dẫn đến:

  • Chu kỳ phát triển nhanh hơn
  • Giảm rủi ro trong triển khai
  • Cải thiện độ tin cậy của hệ thống
  • Tăng tính linh hoạt trong việc áp dụng các công nghệ mới hoặc thay đổi các công nghệ hiện có

7. Các khung và cơ sở dữ liệu là các chi tiết triển khai, không phải là các yếu tố kiến trúc

Các khung là các công cụ để sử dụng, không phải là các kiến trúc để tuân theo.

Logic cốt lõi nên không phụ thuộc vào khung. Kiến trúc sạch coi các khung và cơ sở dữ liệu là các chi tiết bên ngoài không nên ảnh hưởng đến logic kinh doanh cốt lõi. Cách tiếp cận này cho phép linh hoạt hơn trong việc thay đổi hoặc cập nhật các yếu tố bên ngoài này mà không ảnh hưởng đến chức năng cốt lõi của hệ thống.

Các nguyên tắc chính để xử lý các khung và cơ sở dữ liệu:

  • Xem chúng như các plugin cho logic kinh doanh cốt lõi
  • Sử dụng đảo ngược phụ thuộc để giữ cho logic cốt lõi độc lập
  • Tạo các trừu tượng cho các hoạt động cơ sở dữ liệu
  • Trì hoãn các quyết định về khung và cơ sở dữ liệu càng lâu càng tốt

Lợi ích của cách tiếp cận này:

  • Dễ dàng thay đổi hoặc nâng cấp các khung và cơ sở dữ liệu
  • Logic kinh doanh cốt lõi vẫn ổn định mặc dù có các thay đổi bên ngoài
  • Giảm sự phụ thuộc vào nhà cung cấp
  • Cải thiện khả năng kiểm thử của các thành phần hệ thống cốt lõi

8. Web chỉ là một cơ chế phân phối khác trong kiến trúc sạch

Web là một cơ chế phân phối, và kiến trúc ứng dụng của bạn nên coi nó như vậy.

Logic kinh doanh không phụ thuộc vào cơ chế phân phối. Trong kiến trúc sạch, web được coi là một chi tiết bên ngoài, tương tự như cơ sở dữ liệu hoặc các khung. Quan điểm này cho phép logic kinh doanh cốt lõi không phụ thuộc vào cơ chế phân phối cụ thể, dù đó là ứng dụng web, ứng dụng desktop hay API.

Các cân nhắc chính cho các ứng dụng web trong kiến trúc sạch:

  • Tách biệt mã cụ thể của web khỏi logic kinh doanh cốt lõi
  • Sử dụng các bộ chuyển đổi giao diện để chuyển đổi giữa các định dạng web và các cấu trúc dữ liệu nội bộ
  • Xem các khung web như các plugin cho hệ thống cốt lõi
  • Thiết kế các trường hợp sử dụng để không phụ thuộc vào các mối quan tâm cụ thể của web

Lợi ích của cách tiếp cận này:

  • Dễ dàng thích ứng hệ thống với các cơ chế phân phối khác nhau
  • Logic kinh doanh cốt lõi có thể được tái sử dụng trên nhiều nền tảng
  • Đơn giản hóa việc kiểm thử các quy tắc kinh doanh mà không cần phụ thuộc vào web
  • Tăng tính linh hoạt trong việc thay đổi hoặc cập nhật các công nghệ web

9. Kiến trúc nhúng sạch tách biệt các mối quan tâm về phần cứng khỏi logic kinh doanh

Mặc dù phần mềm không bị hao mòn, nó có thể bị phá hủy từ bên trong bởi các phụ thuộc không được quản lý trên phần cứng.

Sự độc lập về phần cứng là rất quan trọng. Kiến trúc nhúng sạch áp dụng các nguyên tắc của kiến trúc sạch cho các hệ thống nhúng, tách biệt các mối quan tâm cụ thể về phần cứng khỏi logic kinh doanh cốt lõi. Sự phân tách này cho phép dễ dàng cập nhật các thành phần phần cứng và cải thiện tính di động của phần mềm.

Các yếu tố chính của kiến trúc nhúng sạch:

  • Lớp trừu tượng phần cứng (HAL) để cô lập mã cụ thể về phần cứng
  • Logic kinh doanh không phụ thuộc vào thiết bị
  • Giao diện rõ ràng giữa các thành phần phần cứng và phần mềm
  • Sử dụng đảo ngược phụ thuộc để quản lý các phụ thuộc phần cứng

Lợi ích của cách tiếp cận này trong các hệ thống nhúng:

  • Dễ dàng chuyển phần mềm sang các nền tảng phần cứng mới
  • Đơn giản hóa việc kiểm thử logic cốt lõi mà không cần phụ thuộc vào phần cứng
  • Giảm tác động của các thay đổi phần cứng lên toàn bộ hệ thống
  • Cải thiện khả năng bảo trì và tuổi thọ của phần mềm nhúng

10. Microservices và kiến trúc hướng dịch vụ có thể hưởng lợi từ các nguyên tắc kiến trúc sạch

Kiến trúc của một hệ thống được xác định bởi các ranh giới tách biệt các yếu tố phần mềm với nhau, và hạn chế những yếu tố ở một bên không biết về những yếu tố ở bên kia.

Các nguyên tắc sạch áp dụng ở mọi quy mô. Mặc dù kiến trúc sạch thường được thảo luận trong bối cảnh các ứng dụng đơn khối, các nguyên tắc của nó có thể được áp dụng hiệu quả cho microservices và kiến trúc hướng dịch vụ. Các nguyên tắc này giúp duy trì sự độc lập và khả năng kiểm thử của các dịch vụ riêng lẻ trong khi quản lý sự phức tạp của các hệ thống phân tán.

Áp dụng kiến trúc sạch cho microservices:

  • Xem mỗi microservice như một ngữ cảnh giới hạn với kiến trúc sạch riêng của nó
  • Sử dụng các giao diện được định nghĩa rõ ràng cho giao tiếp giữa các dịch vụ
  • Áp dụng đảo ngược phụ thuộc giữa các dịch vụ
  • Duy trì khả năng triển khai độc lập của các dịch vụ

Lợi ích của kiến trúc sạch trong microservices:

  • Cải thiện tính mô-đun và khả năng mở rộng của hệ thống tổng thể
  • Dễ hiểu và bảo trì các dịch vụ riêng lẻ
  • Tăng tính linh hoạt trong việc phát triển và thay thế các dịch vụ
  • Giảm sự phụ thuộc giữa các dịch vụ, dẫn đến các hệ thống mạnh mẽ hơn

Cập nhật lần cuối:

Đánh giá

4.23 trên tổng số 5
Trung bình của 6k+ đánh giá từ GoodreadsAmazon.

Kiến Trúc Sạch: Hướng Dẫn của Người Thợ về Cấu Trúc và Thiết Kế Phần Mềm nhận được những đánh giá trái chiều. Nhiều người khen ngợi sự tập trung vào các nguyên tắc SOLID và việc tách rời, trong khi một số khác lại thấy nó lặp đi lặp lại và thiếu ví dụ thực tế. Một số độc giả đánh giá cao bối cảnh lịch sử và các giai thoại, trong khi những người khác cảm thấy chúng làm giảm đi nội dung cốt lõi. Cuốn sách này thường được xem là hữu ích cho việc hiểu các khái niệm kiến trúc ở mức cao, nhưng ý kiến khác nhau về tính hữu ích của nó đối với người mới bắt đầu so với các nhà phát triển có kinh nghiệm. Một số người đánh giá cho rằng nội dung của cuốn sách có thể được truyền đạt ngắn gọn hơn.

Về tác giả

Robert Cecil Martin, được biết đến với tên gọi Uncle Bob, là một kỹ sư phần mềm nổi tiếng và là người ủng hộ mạnh mẽ các phương pháp phát triển Agile. Là Chủ tịch của Object Mentor Inc., ông dẫn dắt một đội ngũ tư vấn chuyên về Thiết kế Hướng đối tượng, Mẫu thiết kế, UML và Phương pháp Agile. Martin có kinh nghiệm phong phú trong ngành công nghiệp phần mềm, từng giữ vị trí Tổng biên tập của tạp chí C++ Report từ năm 1996 đến 1999. Ông là một diễn giả được săn đón tại các hội nghị và triển lãm quốc tế, chia sẻ kiến thức chuyên môn về các thực hành tốt nhất trong phát triển phần mềm. Ảnh hưởng của Martin không chỉ dừng lại ở việc tư vấn, ông còn là tác giả của nhiều cuốn sách có ảnh hưởng lớn về nghề thủ công phần mềm và các thực hành mã hóa sạch.

0:00
-0:00
1x
Dan
Scarlett
Adam
Amy
Liv
Emma
Select Speed
1.0×
+
200 words per minute
Create a free account to unlock:
Bookmarks – save your favorite books
History – revisit books later
Ratings – rate books & see your ratings
Unlock unlimited listening
Your first week's on us!
Today: Get Instant Access
Listen to full summaries of 73,530 books. That's 12,000+ hours of audio!
Day 4: Trial Reminder
We'll send you a notification that your trial is ending soon.
Day 7: Your subscription begins
You'll be charged on Oct 30,
cancel anytime before.
Compare Features Free Pro
Read full text summaries
Summaries are free to read for everyone
Listen to summaries
12,000+ hours of audio
Unlimited Bookmarks
Free users are limited to 10
Unlimited History
Free users are limited to 10
What our users say
30,000+ readers
“...I can 10x the number of books I can read...”
“...exceptionally accurate, engaging, and beautifully presented...”
“...better than any amazon review when I'm making a book-buying decision...”
Save 62%
Yearly
$119.88 $44.99/yr
$3.75/mo
Monthly
$9.99/mo
Try Free & Unlock
7 days free, then $44.99/year. Cancel anytime.
Settings
Appearance