Çeşitli projelerde kodumda bana kod kokusu ve yapmak kötü bir şey gibi görünen bir şey fark ettim, ancak bununla başa çıkamıyorum.
"Temiz kod" yazmaya çalışırken, kodumu okumayı kolaylaştırmak için özel yöntemleri aşırı kullanma eğilimindeyim. Sorun kod gerçekten daha temiz ama aynı zamanda test etmek daha zor (evet biliyorum özel yöntemleri test edebilirsiniz ...) ve genel olarak benim için kötü bir alışkanlık gibi görünüyor.
Aşağıda, bir .csv dosyasından bazı verileri okuyan ve bir grup müşteri (çeşitli alanlara ve özniteliklere sahip başka bir nesne) döndüren bir sınıf örneği verilmiştir.
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;
}
}
Sınıfın sadece işi yapmak için bazı özel yöntemleri çağıran bir kurucuya sahip olduğunu görebildiğiniz gibi, bunun genel olarak iyi bir uygulama olmadığını biliyorum, ancak bu durumda yöntemleri herkese açık hale getirmek yerine sınıftaki tüm işlevleri kapsüllemeyi tercih ediyorum bir müşteri şu şekilde çalışmalıdır:
GroupOfCustomersImporter importer = new GroupOfCustomersImporter(filepath)
importer.createCSVReader();
read();
GroupOfCustomer group = constructGoupOfCustomerInstance();
İstemcinin yan kodunda istemci sınıfını uygulama ayrıntıları ile rahatsız eden işe yaramaz kod satırları koymak istemediğim için bunu tercih ederim.
Peki, bu aslında kötü bir alışkanlık mı? Evet ise, nasıl önleyebilirim? Yukarıdakilerin sadece basit bir örnek olduğunu lütfen unutmayın. Aynı durumun biraz daha karmaşık bir şeyde olduğunu hayal edin.