Từ bài viết:
Tổng quát hơn, vấn đề yo-yo cũng có thể đề cập đến bất kỳ tình huống nào mà một người phải tiếp tục lật giữa các nguồn thông tin khác nhau để hiểu một khái niệm.
Mã nguồn được đọc thường xuyên hơn nhiều so với nó được viết. Do đó, vấn đề yo-yo, về việc phải chuyển đổi giữa nhiều tập tin là một mối quan tâm.
Tuy nhiên, không , vấn đề yo-yo cảm thấy phù hợp hơn nhiều khi xử lý các mô-đun hoặc các lớp phụ thuộc lẫn nhau sâu sắc (gọi qua lại với nhau). Đó là một loại ác mộng đặc biệt để đọc, và có khả năng là điều mà người giải quyết vấn đề yo-yo đã nghĩ đến.
Tuy nhiên - có , tránh quá nhiều lớp trừu tượng là quan trọng!
Tất cả các khái niệm trừu tượng không tầm thường, ở một mức độ nào đó, đều bị rò rỉ. - Luật trừu tượng rò rỉ.
Ví dụ, tôi không đồng ý với giả định được đưa ra trong câu trả lời của mmmaaa rằng "bạn không cần phải yo-yo để [(truy cập)] lớp ZipCode để hiểu lớp Địa chỉ". Kinh nghiệm của tôi là bạn làm - ít nhất là vài lần đầu tiên bạn đọc mã. Tuy nhiên, như những người khác đã lưu ý, có những lúc một ZipCode
lớp học phù hợp.
YAGNI (Ya Không phải là Gonna Cần It) là một mô hình tốt hơn để làm theo để tránh mã Lasagna (mã với quá nhiều lớp) - trừu tượng, chẳng hạn như các loại và các lớp học đang có để giúp các lập trình viên, và không nên được sử dụng, trừ khi họ là một sự trợ giúp.
Cá nhân tôi nhắm đến "lưu dòng mã" (và tất nhiên là "lưu tệp / mô-đun / lớp" có liên quan, v.v.). Tôi tin rằng có một số người sẽ áp dụng cho tôi biểu tượng của "nỗi ám ảnh nguyên thủy" - Tôi thấy điều quan trọng hơn là có mã dễ lý luận hơn là lo lắng về nhãn, mẫu và chống mẫu. Sự lựa chọn chính xác khi nào tạo một hàm, một mô-đun / tệp / lớp hoặc đặt một hàm ở một vị trí chung là rất tình huống. Tôi nhắm mục tiêu đại khái cho 3 - 100 chức năng dòng, 80-500 tệp dòng và "1, 2, n" cho mã thư viện có thể sử dụng lại ( SLOC - không bao gồm nhận xét hoặc bản tóm tắt; Tôi thường muốn ít nhất 1 SLOC tối thiểu cho mỗi dòng bắt buộc bản mẫu).
Hầu hết các mô hình tích cực đã phát sinh từ các nhà phát triển làm chính xác điều đó, khi họ cần chúng . Điều quan trọng hơn nhiều là học cách viết mã có thể đọc được hơn là cố gắng áp dụng các mẫu mà không có cùng một vấn đề để giải quyết. Bất kỳ nhà phát triển giỏi nào cũng có thể thực hiện mô hình nhà máy mà không cần nhìn thấy nó trước đây trong trường hợp không phổ biến, nơi nó phù hợp với vấn đề của họ. Tôi đã sử dụng mẫu nhà máy, mẫu quan sát viên và có lẽ hàng trăm người bên cạnh, mà không biết tên của họ (nghĩa là có "mẫu gán biến" không?). Đối với một thử nghiệm thú vị - hãy xem có bao nhiêu mẫu GoF được tích hợp vào ngôn ngữ JS - tôi đã ngừng đếm sau khoảng 12-15 trở lại năm 2009. Ví dụ, mẫu Factory đơn giản như trả về một đối tượng từ một hàm tạo của JS - không cần một WidgetFactory.
Vì vậy - có , đôi khi ZipCode
là một lớp học tốt. Tuy nhiên, không , vấn đề yo-yo không liên quan chặt chẽ.