开发者

在 Apache 和 Eclipse 等成熟项目的引领下,Authsaur 中的所有代码都将遵守Java 代码约定以及下面列出的 Authsaur 特定约定。Javadoc 应该存在于所有公开导出的类成员中并遵循标准准则。

以下文档描述了 Authsaur 项目特有的一组编码约定:

工具

当前的代码库利用Checkstyle 引擎来尽可能地强制执行约定。还使用SpotBugs执行一定数量的检查。 在适当的情况下,代码库利用Project Lombok自动生成代码构造,例如 getter 和 setter 等。

一致性

引入新的组件、字段和文件时,尽量与现有的命名模式保持一致。例如,如果 Authsaur 组件被命名为SimpleCipherExecutor,那么它的自然替代方案可能会被设计为FancyCipherExecutor。

文档

一般来说,所有公共 API 都应在合理的范围内得到充分记录,并且所有 Authsaur 配置设置和属性都应通过示例、默认值等进行充分解释,作为该领域 Javadoc 的一部分。

括号

所有括号都应以紧凑的形式出现,即使对于单行语句也是强制性的。

public class FooClass {
    public void barMethod() {
        if (...) {
            // single line statement
        }
    }
}

无需else

public class FooClass {
    public String barMethod() {
        if (...) {
            return "foo";
        }
         
        return bar;
    }
}

Getter/Setter 方法

为字段生成 Getter/Setter 方法通常使用 Project Lombok@Getter和@Setter注释来完成。

构造函数

创建构造函数通常使用 Project Lombok@NoArgsConstructor或注释来@AllArgsConstructor完成@RequiredArgsConstructor。

缩进

代码缩进应设置为使用 4 个空格。制表符不应该用于缩进。

静态成员

静态成员变量将始终为大写,其中每个单词由下划线分隔:

private static final String SOME_OBJECT = "TheObject"; 

日志

我们使用SLF4J进行日志记录。除非另有说明,否则LOGGER将使用 Project Lombok 的注释生成对象@Slf4j。

参数化日志消息是首选:

final Object entry = new SomeObject();
logger.debug("The entry is {}.", entry);

与检查特定日志记录级别和通过 String 对象连接参数相比,这是首选方法。

var关键词的使用

局部变量推荐使用 Project Lombok 的val. 在需要可变性的情况下,var建议使用。