Phần 2: Phong cách Thiết kế

Estimated reading: 4 minutes 237 views

Những kẻ ngốc nhắm mắt trước sự phức tạp. Những người thực dụng phải chịu đựng điều đó. Một số người có thể tránh được nó. Những thiên tài sẽ loại bỏ nó.

– Alan Perlis –

Nhưng tôi cũng biết và rồi quên mất câu nói của Hoare rằng tối ưu hóa sớm là gốc rễ của mọi tội lỗi trong lập trình.

– Donald Knuth, The Errors of TeX [Knuth89] –

Thật khó để tách biệt hoàn toàn Phong cách thiết kế và Phong cách lập trình. Tôi đã cố gắng chuyển những mục thường gặp khi viết mã sang chương tiếp theo.

Phần này tập trung vào các nguyên lý và thực tiễn áp dụng ở tầm cao, hơn là chỉ cho một class hay hàm cụ thể. Ví dụ điển hình như là sự cân bằng giữa đơn giản và rõ ràng (Mục 6), tránh tối ưu hóa quá sớm (Mục 8) và không gây áp lực cho máy (Mục 9). Ba mục đó không chỉ áp dụng cho viết mã hàm hay class mà còn ở những phạm vi lớn hơn như sự cân bằng trong thiết kế Module hoặc thiết kế kiến trúc ứng dụng. Điều này áp dụng cho toàn bộ các lập trình viên. Nếu như bạn nghĩ khác, hãy thử đọc lại trích dẫn trên của Knuth.

Ngoài 3 mục trên, các mục khác của phần này và phần sau sẽ đề cập đến quản lý phụ thuộc – yếu tố giúp bạn tạo dựng những hòn đá tảng cho thiết kế phần mềm và là chủ để bàn luận xuyên suốt loạt bài này. Hãy dừng lại và suy nghĩ một chút về bất kỳ công nghệ phần mềm tốt nào bạn biết! Cho dù là bất kỳ cái nào thì bằng cách này hay cách khác nó đều làm giảm sự phụ thuộc trong lập trình.

  • Kế thừa thì sao? Mã code sử dụng class (lớp) cơ sở sẽ làm giảm tính phụ thuộc vào class dẫn xuất (ngoài ra còn một số lợi ích khác như: khai thác tính đa hình – Polymorphism, tăng khả năng mở rộng – Extensibility)
  • Giảm thiểu biến toàn cục thì sao? Giảm sự phụ thuộc ở khoảng cách xa do sử dụng dữ liệu chung.
  • Trừu tượng hoá thì sao? Loại bỏ sự phụ thuộc giữa mã code thao tác và mã code triển khai chúng.
  • Che giấu thông tin thì sao? Làm cho mã máy khách hàng ít phụ thuộc hơn vào chi tiết triển khai của thực thể (Ví dụ thực thể có thể tái định nghĩa và sửa đổi những thành phần che giấu mà hoàn toàn không cần thiết phải sửa lại mã code bên khách hàng đang triển khai chúng).

Việc quản lý sự phụ thuộc được phản ánh trong mục 10 hay mục 11.

Trong phần này thì mục 6. Chính xác, Đơn giản, Sáng sủa là mục rất, rất quan trọng.

Leave a Comment

Chia sẻ:

Phần 2: Phong cách Thiết kế

Or copy link

CONTENTS