2015-12-20 11 views

Trả lời

8

Có một vài lĩnh vực vấn đề nơi phản chiếu làm cho nó dễ dàng hơn để viết thư viện tái sử dụng:

  • marshalling/unmarshalling, rất nhiều ví dụ trong các thư viện chuẩn, ví dụ encoding/json, encoding/xml
  • định dạng, ví dụ: text/template, html/template, fmt.Printf.

Tuy nhiên có một giá bạn phải trả cho việc sử dụng phản ánh: lỗi thời gian

  • biên dịch trở nên lỗi thời gian chạy (ví dụ fmt.Printf("%d", stringVariable))
  • hiệu suất trở nên tồi tệ hơn

Rất thường là một giải pháp thay thế tồn tại mà không yêu cầu sự phản chiếu như tạo mã, được sử dụng bởi các thư viện marshalling như protobuf hoặc tiết kiệm.

Tôi đồng ý với @volker rằng bạn chỉ nên sử dụng sự phản chiếu khi bạn biết rằng nó sẽ đơn giản hóa mã đã tồn tại và nhận thức được mọi nhược điểm.

+0

Cảm ơn phản hồi kostya :) – linirod

7

Bạn nên tránh phản chiếu.

Một số gói (ví dụ: fmt) không thể được triển khai mà không phản ánh vì bạn không thể phân loại trên tất cả các loại hiện có và sắp tới.

Nếu bạn mới sử dụng Go: Tránh xa sự phản chiếu.

+0

Tôi thấy, cảm ơn phản hồi của bạn, được đánh giá cao! – linirod

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