मैंने विभिन्न परियोजनाओं में अपने कोड में कुछ देखा है जो लगता है कि मेरे लिए कोड गंध और कुछ बुरा है, लेकिन मैं इससे निपट नहीं सकता।
"क्लीन कोड" लिखने की कोशिश करते समय मैं अपने कोड को पढ़ने में आसान बनाने के लिए निजी तरीकों का इस्तेमाल करता हूं। समस्या यह है कि कोड वास्तव में क्लीनर है, लेकिन यह परीक्षण करना भी अधिक कठिन है (हाँ, मुझे पता है कि मैं निजी तरीकों का परीक्षण कर सकता हूं ...) और सामान्य तौर पर यह मुझे बुरी आदत लगती है।
यहां एक वर्ग का एक उदाहरण है जो एक .csv फ़ाइल से कुछ डेटा पढ़ता है और ग्राहकों का एक समूह (विभिन्न क्षेत्रों और विशेषताओं के साथ दूसरी वस्तु) लौटाता है।
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;
}
}
जैसा कि आप देख सकते हैं कि क्लास में केवल एक कंस्ट्रक्टर है जो काम करने के लिए कुछ निजी तरीके कहता है, मुझे पता है कि यह सामान्य रूप से अच्छा अभ्यास नहीं है, लेकिन मैं इस मामले में उन तरीकों को सार्वजनिक करने के बजाय कक्षा में सभी कार्यक्षमता को एनक्रिप्ट करना पसंद करता हूं एक ग्राहक को इस तरह काम करना चाहिए:
GroupOfCustomersImporter importer = new GroupOfCustomersImporter(filepath)
importer.createCSVReader();
read();
GroupOfCustomer group = constructGoupOfCustomerInstance();
मैं इसे पसंद करता हूं क्योंकि मैं क्लाइंट के साइड कोड को कार्यान्वयन विवरण के साथ परेशान करने वाले कोड के बेकार लाइनों को नहीं डालना चाहता हूं।
तो, क्या यह वास्तव में एक बुरी आदत है? यदि हाँ, तो मैं इससे कैसे बच सकता हूँ? कृपया ध्यान दें कि उपरोक्त केवल एक सरल उदाहरण है। उसी स्थिति की कल्पना करें जो किसी चीज़ में थोड़ी अधिक जटिल है।