在Java中选择方法/参数名称

在Java中选择方法/参数名称,java,naming-conventions,Java,Naming Conventions,我应该如何选择在Java(或任何其他语言)中使用哪些方法名和参数名/类型?为什么有这么多的选择方式 如果有很多人在一个项目中工作,在代码的不同部分看到不同的命名方式是很烦人的,尤其是当人们对它们的用法不一致时。为什么语言的发明者不简单地声明一个标准——“这就是方法和参数命名的确切方式。句号。” 这样做编程就容易多了。每次我写一个方法时,我不得不在无数不同的参数/方法名称之间进行选择,并试图通过代码对我的选择进行总结,这让我感到压力 例1: public void handleFile(Stri

我应该如何选择在Java(或任何其他语言)中使用哪些方法名和参数名/类型?为什么有这么多的选择方式

如果有很多人在一个项目中工作,在代码的不同部分看到不同的命名方式是很烦人的,尤其是当人们对它们的用法不一致时。为什么语言的发明者不简单地声明一个标准——“这就是方法和参数命名的确切方式。句号。”

这样做编程就容易多了。每次我写一个方法时,我不得不在无数不同的参数/方法名称之间进行选择,并试图通过代码对我的选择进行总结,这让我感到压力


例1:

public void handleFile(String file)
public void handleFile(String fileName)
public void handleFile(File file)

例2:

public void exec(String command)
public void exec(String cmd)
public void exec(String commandString)
public void exec(String cmdString)
public void execute(String command)
public void execute(Command command)
public void execute(Command cmdObj)

等等等等。

如果你与一群人一起工作,那么建立一个编码标准可能是值得的。用谷歌搜索这个短语,你会发现一些例子。

如果你与一群人一起工作,建立一个编码标准可能是值得的。用谷歌搜索这个短语,你会发现一些例子。

参数名是对使用它的开发人员的一个提示,告诉他们应该传递什么。它们应该尽可能清晰,而不是不必要的冗长


我建议您做您认为更清楚的事情。

参数名称是对使用它的开发人员的提示,提示应该传递什么。它们应该尽可能清晰,而不是不必要的冗长


我建议你做你认为更清楚的事。

问题是——没关系。方法名更重要,参数名应该简单地描述参数。试图强制执行有关姓名的规则将很难——你无法为此制定足够的规则


另一方面,参数类型很重要-您应该选择最具体的参数类型。如果只需要一个文件名,则传递一个字符串。如果你需要知道你是否能阅读一个文件,传递
文件

问题是-这不重要。方法名更重要,参数名应该简单地描述参数。试图强制执行有关姓名的规则将很难——你无法为此制定足够的规则


另一方面,参数类型很重要-您应该选择最具体的参数类型。如果只需要一个文件名,则传递一个字符串。如果你需要知道你是否能阅读一个文件,那么传递
文件

好吧,传统上人们被限制在屏幕上可以容纳的字符数量上,所以短变量名称是首选

现在有了大屏幕、自动换行和自动完成功能,你可以随意命名

这完全取决于您的团队如何决定最佳方式,您应该强制执行一个大家都同意的编码标准


就我个人而言,我试图命名变量以准确描述它们所持有的内容,因此它持有一个
TableViewController
,我将其称为
TableViewController
,这样,当我在一天、几周内再次查看代码时,就很清楚了。。。使用
TableViewController
而无需再次检查的时间。如果我调用变量
tvc
the或其他缩写,你可能会想,我的代码的意图可能不太清楚。

传统上,人们被限制在屏幕上可以容纳的字符数量上,因此首选缩写变量名称

现在有了大屏幕、自动换行和自动完成功能,你可以随意命名

这完全取决于您的团队如何决定最佳方式,您应该强制执行一个大家都同意的编码标准


就我个人而言,我试图命名变量以准确描述它们所持有的内容,因此它持有一个
TableViewController
,我将其称为
TableViewController
,这样,当我在一天、几周内再次查看代码时,就很清楚了。。。使用
TableViewController
而无需再次检查的时间。如果我调用变量
tvc
the或其他缩写,您可能会想,我的代码的意图可能不太清楚。

通常,第一个选择是以下参数类的名称:

除非字符串/原语或装箱时,您赋予其含义并通常删除类型:

void someMethod(String filename) // note filename is so common, it's rarely "fileName"
但有时它只是“一根弦”——这里有一些常见的选择

void trim(String aString)
void trim(String string)
void trim(String s)

无论是什么样式,您的团队都应该同意命名约定并使用它。

通常,第一个选择是参数类的名称:

除非字符串/原语或装箱时,您赋予其含义并通常删除类型:

void someMethod(String filename) // note filename is so common, it's rarely "fileName"
但有时它只是“一根弦”——这里有一些常见的选择

void trim(String aString)
void trim(String string)
void trim(String s)

无论是何种风格,您的团队都应该同意并使用命名约定。

事实上,Java语言存在命名约定:请参阅

像变量一样,参数应该用camelCase编写,除了众所周知的首字母缩略词(URL、HTTP等)外,一般不应该缩写,最重要的是,应该描述参数的作用,而不是其类型。它的类型是knwon:它写在参数之前

所以我更喜欢

void copy(SomeClass source, SomeClass destination)

关于你的例子,以下是我愿意接受的例子:

public void handleFile(String fileName)
public void handleFile(File file)
两者都可以接受,因为第一个处理名称,第二个处理文件

public void execute(String command)
public void execute(Command command)

事实上,Java语言存在命名约定:参见

像变量一样,参数应该用camelCase编写,除了众所周知的首字母缩略词(URL、HTTP等)外,一般不应该缩写,最重要的是,应该描述参数的作用,而不是其类型。它的类型是knwon:它写在参数之前

所以我更喜欢

void copy(SomeClass source, SomeClass destination)

关于你的例子,以下是我愿意接受的例子:

public void handleFile(String fileName)
public void handleFile(File file)
两者都是可以接受的,因为第一个处理名称,第二个处理名称