Bạn làm việc với thư viện hoặc feature hoàn toàn mới, và không hiểu documentation. Có thể setup khó, phải nhảy giữa RDocs cho đến khi hiểu cách mọi thứ fit. Có thể docs even không tồn tại. Hoặc bạn học tốt nhất bằng nhiều ví dụ.
Bạn cần giúp đỡ. Nhưng đâu học cách dùng feature, nếu không phải docs?
Một trong những tính năng GitHub yêu thích
Khi muốn vượt qua docs và xem dùng thực tế của library/feature, dùng code search của GitHub.
Ví dụ, tôi vừa đọc Rails guide về Conditional GET Support. Cảm thấy hiểu, nhưng muốn xem thêm ví dụ trước khi dùng thật.
Tôi vào GitHub search, tìm "if stale?". Sidebar chọn code và Ruby:
{% img img-responsive /images/posts/code-search.gif 783 484 Tìm kiếm code. %}
Bây giờ tôi có hàng tá ví dụ tuyệt vời cách dùng stale?.
Không phải ví dụ nào thú vị. Nhưng trong một listing, tôi thấy tác giả dùng Post.maximum:
class ArchivesController < ApplicationController
def index
if stale?(last_modified: (Post.maximum(:updated_at) || EPOCH).utc, public: true)
@months = Post.find_all_grouped_by_month
end
end
end
Đó có vẻ cách tuyệt vời dùng stale?. Nếu không thấy ví dụ này, tôi có thể không nghĩ ra thử nó.
Làm sao dùng thứ bạn tìm thấy?
Khi search open-source code, bạn có hàng trăm ví dụ cho hầu hết feature. Bạn nhận ra docs chỗ nào hợp lý, chỗ nào over-simplified. Và thấy object làm việc cùng nhau trong code thật. Điều đó dạy về cách class kết nối hơn bất kỳ RDoc nào.
Vẫn, dùng ví dụ để học điều mới, không cargo cult vào project. Dùng code không hiểu là con đường nhanh nhất đến hệ thống thiết kế kém.
Trong ví dụ tôi, maximum có thể không đúng cho project tôi. Tôi không copy dòng đó mà không học thêm. Không hiểu khi nào dùng nó hợp lý. Nhưng ví dụ dạy điều bạn chưa biết. Và là cách tuyệt vời quyết định học gì tiếp.
Như mọi search, cần thực hành để kết quả tốt. Nhưng tôi học rất nhiều từ code tìm được, và tôi biết bạn cũng sẽ.