2013-08-01 49 views
15

Tôi đã đọc trích dẫn này trong một cuốn sách:"Mức độ bất công" có ý nghĩa gì trong cách ngôn của David Wheeler?

Không có vấn đề gì trong khoa học máy tính không thể giải quyết được bằng cách sử dụng cấp độ khác.

Ai đó có thể giải thích điều đó không? "Mức độ gián tiếp" nghĩa là gì?

Từ những gì tôi hiểu được, sự vô hướng là một tên ưa thích để sử dụng con trỏ của một giá trị thay vì giá trị của chính nó. Vui lòng làm rõ điều này cho tôi.

+6

Bạn quên phần còn lại của câu "... ngoại trừ quá nhiều cấp độ của indiretion" –

+0

Tôi nghĩ rằng nó phải làm với abstracting lớp dữ liệu vào các đối tượng, và đối phó với các vấn đề ở bàn tay ở các cấp khác nhau của abstraction (trong các đối tượng khác nhau, có lẽ, trong mô hình OOP.) – Houdini

+0

có thể trùng lặp của [Mức độ Indirection giải quyết mọi vấn đề] (http://stackoverflow.com/questions/288623/level-of-indirection-solves-every-problem). Xem thêm [Sự khác biệt giữa lớp trừu tượng và mức độ gián đoạn là gì?] (Http://programmers.stackexchange.com/q/111756) và [phần còn lại của web] (http: // www.google.com/search?q=there+is+no+problem+that+cannot+be+solved+with+another+level+of+indirection). –

Trả lời

20

"Vô hướng" đang sử dụng thứ gì đó sử dụng thứ gì đó khác, theo nghĩa rộng nhất.

Ví dụ của bạn, sử dụng con trỏ của một giá trị thay vì giá trị, phù hợp với định nghĩa này ở một mức. Con trỏ là cái gì đó và giá trị là cái gì đó khác.

Thông thường đây là một cái gì đó lớn hơn trong phạm vi:

  • Sử dụng một trang web để đồ họa hiển thị dữ liệu được tạo ra bởi một dịch vụ dựa trên XML. Ở đây trang web là cái gì đó và ẩn đằng sau nó là dữ liệu đó là cái gì khác.
  • Sử dụng hệ điều hành để truy cập màn hình hiển thị. Dưới đây là hai lớp, ít nhất là vô hướng. Hệ điều hành sử dụng trình điều khiển màn hình. Một cái gì đó sử dụng một cái gì đó khác. Sau đó, trình điều khiển màn hình nói trực tiếp với phần cứng màn hình khiến nó tạo ra những chấm nhỏ ánh sáng ở đây và ở đó. Trình điều khiển là cái gì đó tiếp theo bằng cách sử dụng cái gì khác mà là phần cứng.
  • Không có gì lạ đối với một API để đối phó với điều gì đó ở mức cao và API giao dịch với cùng một thứ ở cấp độ thấp hơn. Một lần nữa, mức độ gián tiếp được thêm vào trên API cấp thấp và chúng tôi gọi đó là API mới, được cải thiện.

Ví dụ cuối cùng này có lẽ giải thích "lý do" của tất cả.

Khi chúng ta làm việc với một cái gì đó mà chúng ta nắm vững và tìm hiểu cách trừu tượng nó thành một mức trừu tượng cao hơn, do đó cần phải có một mức hoàn toàn mới và chúng tôi có thể giải quyết các vấn đề lớn hơn nhanh hơn bằng cách tải một số công việc lên API mới .

+0

Hey thats những gì tôi đã nói! lol, jk, câu trả lời tốt đẹp :) – Houdini

+0

câu trả lời hay, cảm ơn –

+0

Tất nhiên, một vấn đề không thể giải quyết được bằng cách thêm một lớp hướng khác là khi bạn có quá nhiều lớp hướng dẫn. –

3

Một trong những lợi thế lớn tiềm năng của sự gián tiếp là giảm khớp nối. Đó là một cách khác để nói rằng mọi thứ nên được phân chia một cách thích hợp. Điều này thường giúp đáng kể với thử nghiệm, bảo trì và tính linh hoạt trong thời gian dài. Ví dụ, nếu ứng dụng của bạn cần đọc một số dữ liệu kiên trì, thay vì có kiến ​​thức cụ thể về địa điểm (và cách) đọc nó nằm rải rác trong toàn bộ ứng dụng, bạn hãy cô lập nó (đặt dữ liệu đó vào và sau đó cho phép tất cả các phần khác của ứng dụng gọi phương thức đó để lấy dữ liệu thay vì từng phần của ứng dụng phải tự giải quyết các chi tiết đó.

Các vấn đề liên quan