Tôi đã nhận thấy một cái gì đó trong mã của tôi trong các dự án khác nhau có vẻ như mã mùi đối với tôi và một cái gì đó xấu để làm, nhưng tôi không thể đối phó với nó.
Trong khi cố gắng viết "mã sạch", tôi có xu hướng sử dụng quá mức các phương thức riêng tư để làm cho mã của tôi dễ đọc hơn. Vấn đề là mã thực sự sạch hơn nhưng cũng khó kiểm tra hơn (vâng tôi biết tôi có thể kiểm tra các phương thức riêng tư ...) và nói chung nó có vẻ là một thói quen xấu đối với tôi.
Đây là một ví dụ về một lớp đọc một số dữ liệu từ tệp .csv và trả về một nhóm khách hàng (một đối tượng khác với các trường và thuộc tính khác nhau).
public class GroupOfCustomersImporter {
//... Call fields ....
public GroupOfCustomersImporter(String filePath) {
this.filePath = filePath;
customers = new HashSet<Customer>();
createCSVReader();
read();
constructTTRP_Instance();
}
private void createCSVReader() {
//....
}
private void read() {
//.... Reades the file and initializes the class attributes
}
private void readFirstLine(String[] inputLine) {
//.... Method used by the read() method
}
private void readSecondLine(String[] inputLine) {
//.... Method used by the read() method
}
private void readCustomerLine(String[] inputLine) {
//.... Method used by the read() method
}
private void constructGroupOfCustomers() {
//this.groupOfCustomers = new GroupOfCustomers(**attributes of the class**);
}
public GroupOfCustomers getConstructedGroupOfCustomers() {
return this.GroupOfCustomers;
}
}
Như bạn có thể thấy lớp chỉ có một hàm tạo gọi một số phương thức riêng để hoàn thành công việc, tôi biết rằng nói chung đó không phải là một cách thực hành tốt nhưng tôi thích gói gọn tất cả các chức năng trong lớp thay vì công khai các phương thức trong trường hợp đó một khách hàng nên làm việc theo cách này:
GroupOfCustomersImporter importer = new GroupOfCustomersImporter(filepath)
importer.createCSVReader();
read();
GroupOfCustomer group = constructGoupOfCustomerInstance();
Tôi thích điều này bởi vì tôi không muốn đặt các dòng mã vô dụng vào mã bên của máy khách làm phiền lớp khách hàng với các chi tiết triển khai.
Vì vậy, đây thực sự là một thói quen xấu? Nếu có, làm thế nào tôi có thể tránh nó? Xin lưu ý rằng ở trên chỉ là một ví dụ đơn giản. Hãy tưởng tượng tình huống tương tự xảy ra trong một cái gì đó phức tạp hơn một chút.