Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何定义Java类的设计规则?_Java_Oop - Fatal编程技术网

如何定义Java类的设计规则?

如何定义Java类的设计规则?,java,oop,Java,Oop,我想为一个由团队开发的中型项目定义一些设计规则。这些规则不像“if语句必须使用括号”规则。它们与设计决策有关 示例规则: 如果一个类与JPA类有关联,那么它不应该与GUI类有任何关联 对于消息的每个子类,都应该有一个子类序列化程序 如果一个类被标记为DTO,它应该只有getter和setter方法 有没有一种方法可以定义像示例规则那样的规则并在编译时检查它们 谢谢我认为您需要设计一些编译时处理的注释。并设计了一个非常聪明的注释处理器 无论如何,这不是一件容易的事情,也许你想把它们写下来,而不

我想为一个由团队开发的中型项目定义一些设计规则。这些规则不像“
if
语句必须使用括号”规则。它们与设计决策有关

示例规则:

  • 如果一个类与JPA类有关联,那么它不应该与GUI类有任何关联
  • 对于
    消息
    的每个子类,都应该有一个子类
    序列化程序
  • 如果一个类被标记为DTO,它应该只有getter和setter方法
有没有一种方法可以定义像示例规则那样的规则并在编译时检查它们


谢谢

我认为您需要设计一些编译时处理的注释。并设计了一个非常聪明的注释处理器

无论如何,这不是一件容易的事情,也许你想把它们写下来,而不是硬编码。但如果你想这样做,这里有一些建议供你参考:

  • 创建一个
    @IsJPA
    注释,该注释必须与任何JPA关联类一起使用。
    创建必须与任何GUI类一起使用的
    @IsGUI
    注释。
    在注释处理器中,扫描每个
    @IsJPA
    注释类以获取对
    @IsGUI
    注释类的引用

  • 创建
    @IsMessage
    注释,并在注释处理器中检查这些类是否为
    序列化程序的子类

  • 创建一个
    @IsDTO
    注释,并在注释处理器中检查这些类是否只有getter和setter

  • 关于这一点:

    如果一个类与JPA类有关联,那么它不应该与GUI类有任何关联


    我建议定义包之间允许哪些依赖项。您可以这样做,并在编译时使用免费工具或商业工具进行检查。

    在Sonar中,您可以定义自定义规则

    这是一段需要编写的代码,但我认为您可以随心所欲

    然后可以与詹金斯和马文一起进行Sonarqube分析。 或者可以在开发过程中使用插件SonarLint(用于Eclipse或Intelli-J)实时检查它


    声纳是免费的,易于配置。(但对于实现自定义规则,这将取决于规则的复杂性)

    。听起来你想要像CheckStyle这样的东西。我不试那个工具。但我想用自定义规则检查设计,而不仅仅是样式。如果你有钉子和螺钉,你需要一把锤子和一把螺丝刀。我的意思是说。。。如果每个工具只适合您的一个需求,为什么不使用一个以上的工具呢;但是,一开始,关于“固执己见”的答案就太宽泛和明确了。从这个意义上说:您应该从研究现有的工具开始(例如:checkstyle不仅仅是检查“样式”)。