缩写还是全名?
Posted
技术标签:
【中文标题】缩写还是全名?【英文标题】:Abbreviation or complete names? 【发布时间】:2011-12-16 09:25:34 【问题描述】:建议类型名称和流行名称应避免使用缩写。即使使用现代宽屏显示器,也建议源行宽应为 80 或最多 120 个字符。
这是我们实际项目中的一句话:
final PimAuthoringApplicationMappingReader pimAuthoringApplicationMappingReader =
new PimAuthoringApplicationMappingReader(pimAuthoringApplicationMappingFile);
一个简单的新操作至少占用了 2 行,尽管我们在这里已经使用了缩写(Pim = ProIntralink Merge)。
虽然用这种方式很容易理解每个单词,但它会使一个简单的方法变得更长,因此很难将一个方法放在屏幕上。
问题:处理这种情况的更好方法是什么?是否推荐使用“合理”的缩写 - 例如:
final PimAuthAppMapReader pimAuthAppMapReader=new PimAuthAppMapReader(pimAuthAppMapFile);
?
【问题讨论】:
我在 IDE 中使用了比例字体,因此屏幕上大约有 180 个字符。在这一点上,我包装了代码。然而,Java 代码约定建议使用 80 个字符,即使大多数开发人员可能不遵循此建议,我也不认为该建议会改变。 【参考方案1】:这是一个熟悉的问题,我正在处理的 Java 项目中有一些类让我出于同样的原因而摸不着头脑。我在缩短类名之前缩短了局部变量名,但如果结果合理,我可以缩短类名。
在这些情况下,打破使局部变量与其类型同名的惯例可以释放相当多的空间。如果需要更多空间,我也可以缩短类型名称。
在您的示例中,我可以将 Application 缩短为 App,但不太确定将 Mapping 缩短为 Map,因为“map”在 Java 中具有不同的主要含义(第一个关联)。
【讨论】:
【参考方案2】:首先,代码必须力求清晰。通常,这意味着不缩写,但在某些情况下,常见的缩写提高清晰度。通常首字母缩略词没有拼写出来,但尽量将首字母缩略词视为一个单词,而不是保留“全部大写”的首字母缩略词。 以下是我所说的示例:
htmlRequest (not HTMLRequest)
App instead of Application
XmlProces-s-r instead of XMLProcessor
etc
不用担心页面宽度。担心可读性!
【讨论】:
页面宽度不能随意改变,否则比较不同版本在CVS上发现变化会很麻烦。【参考方案3】:我会保持类名冗长,并将您的变量名缩短为更合理的名称。看看你的例子,我认为这是一个合理的努力:
final PimAuthoringApplicationMappingReader pimMappingReader =
new PimAuthoringApplicationMappingReader(pimMappingFile);
请记住,当您阅读您的代码时,阅读您的代码的人能够轻松地引用变量的类型
-
为特定目的定义您的类
保持方法简洁
声明变量的使用位置
如果没有用非常相似的名称定义其他类型,我上面的例子是有意义的。你甚至可以争辩说,如果在同一个方法中没有太多其他事情发生并且变量是局部作用域的,那么这仍然是有意义的
final PimAuthoringApplicationMappingReader pimReader =
new PimAuthoringApplicationMappingReader(pimFile);
我不会缩短类名称,因为您可能在没有任何上下文的情况下阅读它们(例如 API 文档、配置文件等)
但最重要的是尝试一致地编写代码。如果一种样式已经被使用过,请遵循它,除非你让每个人都同意更改它。
【讨论】:
【参考方案4】:我一直觉得将变量命名为与实现的类(或接口)同名的想法很奇怪。缩短名称也是如此。
它在声明的上下文中没有提供有关对象真正用途的信息,而且当您有多个对象并使用数字作为后缀时,它通常会变得更糟。
因此,改为使用描述上下文中对象意图的名称,这样在几个月后审查您的代码时会更容易。
【讨论】:
例如,当您的变量具有可用于描述它的目的/意图时,这是有道理的。 String string = user.getName();没有意义,不如 String userName = user.getUserName();但是,当您有一个变量引用一个类时,其类名描述了您使用该变量的目的,例如: User user = new User();让变量与类同名是有意义的。以上是关于缩写还是全名?的主要内容,如果未能解决你的问题,请参考以下文章