Mỗi khi tôi nhìn vào một số mã nguồn Java, tôi thấy mình đang lướt trong một thư mục có thư mục có thư mục có thư mục trong đó vv Tại sao Java yêu cầu nhiều thư mục lồng nhau, không có gì khác trong chúng ngoại trừ thư mục con?Tại sao các nguồn Java có quá nhiều thư mục bên trong nhau?
Ví dụ: https://github.com/halfninja/android-dragcontrol3d/tree/master/src/uk/co/halfninja/android Đó có lẽ không phải là ví dụ tồi tệ nhất, nhưng có hai thư mục "uk" và "co" không có ý nghĩa. Tôi chỉ thấy điều này trong các nguồn Java!
Và ví dụ minicraft: http://www.ludumdare.com/compo/ludum-dare-22/?action=preview&uid=398
import com.mojang.ld22.gfx.Font;
import com.mojang.ld22.gfx.Screen;
import com.mojang.ld22.gfx.SpriteSheet;
Tại sao không chỉ cần viết:
import gfx.Font;
import gfx.Screen;
import gfx.SpriteSheet;
Đó là rất nhiều bụi.
(Tôi chưa bao giờ được lập trình bằng Java.)
Điều gì sẽ xảy ra nếu tôi đã tạo thư viện gfx và bạn đã tạo một thư viện - sẽ có xung đột đối với bất kỳ ai cần sử dụng cả hai. – nos
Những gì bạn mô tả trực giác như 'thư mục' không có ý nghĩa này. Bạn có thể nhận ra chúng là tên miền được đảo ngược: 'com.mojang' cho tên miền 'mojang.com'. Mục đích chính xác là giống nhau: cung cấp một tên duy nhất. Xem: http://docs.oracle.com/javase/tutorial/java/package/namingpkgs.html – mins
Đây là một câu hỏi hay và có vẻ như tôi không có ai trả lời đầy đủ. Tất cả các câu trả lời dưới đây dường như nói rằng đó là để ngăn chặn xung đột với các gói khác. Các lớp lồng ghép nhiều thư mục con sâu * DOES * giúp ngăn chặn xung đột, nhưng có nhiều cách dọn dẹp hơn để đạt được điều này mà không * lạm dụng * hệ thống tệp theo cách này. Ví dụ: mỗi doanh nghiệp có thể có thư mục "tổ chức", ví dụ: 'com.company.section' và sau đó trong thư mục đó, các lớp có thể được đặt tên là' qualified.package.ClassName.class' hoặc thậm chí 'đủ điều kiện/gói/ClassName.class' nếu bạn muốn. – ricovox