Tiếp theo bài viết cuối cùng của tôi, tại sao chúng tôi sử dụng nil, tôi nghĩ rằng bạn nên đặt câu hỏi này cho những thứ khác mà chúng tôi coi là điều hiển nhiên.
Như…
Tại sao chúng ta sử dụng các lớp thay vì chỉ có một đốm mã KHỔNG LỒ?
Ở cấp độ cơ bản, chúng tôi sử dụng các lớp để tổ chức mã và dữ liệu thành các đơn vị logic.
Nhưng còn nhiều điều hơn thế nữa.
Một lớp cho phép bạn tạo sự trừu tượng .
Tóm tắt là gì?
Bạn sử dụng các bản tóm tắt mỗi ngày, mỗi phút một lần.
Bàn phím Tôi đang gõ cái này được làm bằng:
- Một sợi cáp
- Công tắc Cherry MX màu đen
- Vỏ nhựa giữ mọi thứ lại với nhau
- Bảng mạch truyền tín hiệu điện đến máy tính của tôi
Bàn phím chỉ là một khái niệm xuất hiện từ việc kết hợp những thứ này lại với nhau theo đúng cách.
Đó là một sự trừu tượng vì bạn không cần biết cách hoạt động nội bộ của nó để dùng nó. Bạn thậm chí không cần biết các thành phần cấu tạo của nó!
Bạn chỉ cần cắm nó vào và bắt đầu nhập.
Đó chính xác là những gì mà các lớp học cho phép bạn làm.
Tại sao sự trừu tượng lại quan trọng?
Tính trừu tượng giúp bạn quản lý độ phức tạp .
Như Steve McConnell nói:
“Điều duy nhất quan trọng nhất lý do để tạo một lớp là để giảm độ phức tạp của chương trình ”
Tính trừu tượng thực hiện điều này như thế nào?
Bằng cách ẩn chi tiết về cách hoạt động của một thứ gì đó và hiển thị các dịch vụ của nó với giao diện công khai.
Trong một lớp Ruby, giao diện bao gồm các phương thức chung của nó. Mặc dù các chi tiết được ẩn bằng các phương pháp riêng tư.
Với chi tiết Ý tôi là:
- biến phiên bản
- phương pháp nội bộ
- thuật toán và cấu trúc dữ liệu
Khi chúng bị ẩn, bạn có thể thay đổi chúng bất cứ khi nào bạn muốn mà không ảnh hưởng đến người dùng trong lớp của bạn.
Ví dụ :
Nếu bạn có GPS
lớp sử dụng một mảng để lưu trữ dữ liệu và bạn phải biết điều đó trên chỉ mục 0 của mảng đó, bạn sẽ tìm thấy vĩ độ & chỉ số 1 là kinh độ, đây là những chi tiết bạn không nên biết với tư cách là người dùng của lớp.
Cách viết một lớp học tốt
Bây giờ, đây là một chủ đề lớn .
Có rất nhiều thứ để tạo ra một lớp tốt, chẳng hạn như tuân theo các nguyên tắc SOLID.
Nhưng quan trọng nhất, các lớp của bạn phải có một số loại vai trò và không được tạo thành từ các phương pháp ngẫu nhiên.
Ví dụ:bạn muốn tách logic nghiệp vụ (tính toán, quy tắc) khỏi logic trình bày (định dạng) vì chúng có vai trò khác nhau.
Xem mã này :
require 'rest-client' require 'nokogiri' class ImageCounter def initialize(url) @url = url end def find_images_and_report data = RestClient.get(@url).body html = Nokogiri::HTML.parse(data) images = html.css("img") report = "" report << "=" * 40 << "\n" report << "Found #{images.size} images on #{@url} \n" report << "=" * 40 << "\n" end end reporter = ImageCounter.new("rubyguides.com") report = reporter.find_images_and_report
Bạn có thể thấy lớp này quan tâm như thế nào đến cả tính toán và trình bày. Điều này là tốt nếu bạn đang viết một tập lệnh "nhanh và bẩn", nhưng đối với một ứng dụng nghiêm trọng hơn, bạn muốn tách chúng ra.
Khi bạn tách biệt các trách nhiệm, bạn có thể cắm vào một lớp bản trình bày khác hoặc bạn có thể thay đổi các quy tắc kinh doanh và sử dụng lại cùng một bản trình bày.
sử dụng lại mã này khía cạnh của các lớp là một lý do chính đáng khác để viết thêm về chúng.
Có nhiều ý tưởng hơn để giúp bạn viết các lớp học tốt hơn.
Dưới đây là một số để giúp bạn khám phá thêm:
- Liên kết &Khớp nối
- Nói, đừng hỏi
- Định luật Demeter
Biết lý do tại sao chúng tôi viết các lớp học ngay từ đầu là một bước khởi đầu tốt, vì vậy rất tốt nếu bạn đọc toàn bộ bài viết!
Tóm tắt
Bạn đã học tại sao chúng tôi viết các lớp, trừu tượng là gì và tại sao nó lại quan trọng. Bạn cũng đã học được các nguyên tắc cơ bản để viết các lớp học tốt và tôi đã cung cấp cho bạn một số gợi ý về những điều cần đọc thêm.
Trừ khi bạn muốn mã của mình trở thành Big Ball of Bùn bắt đầu áp dụng một số khái niệm này ngay bây giờ để cải thiện thiết kế lớp của bạn 🙂
Đừng quên chia sẻ bài viết này trên Twitter nếu bạn thấy nó hữu ích!