java - 干净的代码——如何设计这个类?

标签 java oop coding-style

我一直在阅读“整洁代码”一书,尤其是关于混合类的部分以及数据结构和对象之间的区别。

我有一个 SFTPUtil 类,其中包含一种从 sftp 服务器删除文件的方法。

目前它看起来像这样被描述为混合类:

String host;
int port;
String rootDirectory;
String username;
String password;

public void deleteFile(String filename){
 // Code using the instance variables above
}


//GETTERS AND SETTERS FOR INSTANCE VARIABLES

但是根据这本书,最好只拥有:

public void deleteFile(String filename, String host, int port, String rootDirectory, String username, String password){
 // Code using the instance variables above
}

并且没有实例变量。

这是一个正确的假设吗?人们对此有何看法?还有更好的设计方法吗?

最佳答案

首先:这主要是个人喜好问题。如果您觉得使用一种方式比使用另一种方式工作起来更轻松,那么您就找到了答案。

话虽这么说,您还是想看看您打算如何使用这个类。 我看到关于如何使用它的两种主要可能性:

  • 从服务器上删除多个文件
  • 从多台服务器上删除一个文件

如果您有第一个用例,那么使用实例变量进行连接和只接受文件名的方法将很有意义。这不会强制您继续指定连接信息,并且可能会感觉更干净。

如果您有第二个用例,那么将它们存储在字段中就没有多大意义,因为您几乎不会使用它。

所有这些结合起来,我自己可能会倾向于第一种方法。一个方法应该有一个责任,并且建立连接和删除文件都感觉不对,并且通过采用第一种方法,如果您选择第二种方法并且它变成您将来想从服务器中删除许多文件(如第一种方法中所述)。

关于java - 干净的代码——如何设计这个类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21064164/

相关文章:

java - 从已被服务器关闭的 SSL 套接字读取

Java - 根据多个值过滤列表

c++ - 在 C++ 中将对象初始化为类成员

c++ - 更改派生类继承的内容

architecture - 面向对象分析与设计: can a process be a class?

C 函数头文件位置 : . h 或 .c?

java - 如何在没有用户登录的情况下使用 instagrams API 获取我的最新图像?

java - Issue detecting PCSCvia program on linux, 读卡器已连接

javascript - JavaScript 中的原型(prototype)继承 : I don't usually need calling the constructor of Parent object assigned to Child. 原型(prototype)

c - C++ 注释在 C 中被认为是糟糕的风格吗?