3

我发现自己有时会使用 Java 泛型编写如下代码:

/**Class description
 *@param <K> Key to '.....'
 public class Mappy<K>{
   ///class methods, fields, etc....
 }

有时,当几个月后我返回代码时,使用单字符名称会导致速度变慢,并且必须继续向上滚动以记住“T”和“E”是什么。但最后我检查了一下,Oracle 的官方指南是单字符名称,我从未见过 Java 程序员不这样做。

在 C# 中,使用 TDescription 是官方样式指南的一部分,类似于 Google 和其他人如何使用 Ixxxx 作为接口。但我仍然在 C# 的生产代码和 API 中看到单字母名称。我听说它在 C++ 中很相似。在 Haskell 和 Ocaml 中,尤其是 Haskell 中,您使用 'a' 或 'b' 作为函数签名中的通用参数(忘记编译器/解释器是否强制这样做或者它们是否可以是多字母)。

我只是问这个“问题”,看看你们是怎么做的:你们在泛型/模板/等中坚持使用单字母名称吗?你们有像 Txxx 这样的约定吗? - 成熟的名字(这会让同事感到困惑),还是你做其他事情?

这与打破 java 泛型命名约定非常相似?(我通过谷歌找到的)。与其提出这个问题,我只是想收集一些现代意见(看看在过去的两年半中是否发生了风格政变)。

编辑1:

可能出现这个问题的原因是几天前我承诺转储变量'i'。太多次使用快速和脏循环变量“i”会导致嵌套循环和重构出现问题,所以我决定只使用完整的名称。

4

2 回答 2

4

命名约定作为一种工具存在,可帮助您维护可读代码。

他们在那里帮助你。它们不是规则。
拥有易于阅读的可维护代码比盲目遵循命名约定具有更高的价值。

于 2013-11-04T14:14:59.553 回答
1

当类型(几乎)可以是任何类型时,我在泛型中使用单字母大写类型。和Map<K,V>等一样。

但是,当类型比 ANY 类型具有更多含义时,例如:

public class Table<Column extends Enum<Column> & Table.Columns> {
 ...
 public interface Columns {
  ...

我使用了更合适的名称Column,但保留了首字母大写的约定。我觉得保持类型的简洁很重要,因为您可能会在代码中多次使用它。一个大写字符是——你必须承认——非常简洁。

于 2013-11-04T14:25:26.723 回答