网站项目方案,生态建设研究所网站,长春网站优化实战,中国建筑业协会如何使用java代码生成作为介绍#xff0c;最近我有点安静#xff0c;部分原因是我一直在忙于Chronicle-FIX的工作 。 这是Chronicle-Enterprise套件中的一个新的超低延迟库#xff0c;我们证明了该库可以在低个位数微秒内解析和存储消息。 当然#xff0c;它利用了我们的开… 如何使用java代码生成 作为介绍最近我有点安静部分原因是我一直在忙于Chronicle-FIX的工作 。 这是Chronicle-Enterprise套件中的一个新的超低延迟库我们证明了该库可以在低个位数微秒内解析和存储消息。 当然它利用了我们的开源产品Chronicle-Queue Chronicle-Network和Chronicle-Bytes 。 我们实现的低延迟的秘密之一是每个实现都可以完全基于其所需的架构来生成自定义的修复引擎。 为了实现这一点我构建了很多代码生成代码。 因此我想我将分享在此过程中学到的一些经验教训。 1.使用代码生成库 到目前为止这是最重要的提示。 我很难强调这有多重要以及您将节省多少时间和复杂性。 您真的不想在创建字符串文字时试图弄乱代码中的正确间距或加倍和三倍转义的引号引起麻烦 我使用了JavaPoet 它是开源的Apache 2非常好。 它处理了我想做的所有事情包括一些非常复杂的泛型。 它唯一不支持的事情就是声明静态导入但这很容易解决对于一个优秀的库来说它并不重要。 JavaPoet将Java代码分解为对象TypeSpec类或接口MethodSpec方法FieldSpec字段CodeBlocks代码块。 它巧妙地为基于printf模式的语句代码行提供了丰富的语法。 您会发现遵循这种范式将使您拥有更简洁更简洁的代码而不是自己动手编写代码这很容易使这类问题的过程编码路线更加混乱。 2.首先手动编写代码 在没有先编写示例代码的情况下请勿尝试和生成代码。 通过后视镜进行编码不是一件容易的事如果您在进行过程中对其进行处理则变得很复杂。 首先花一点时间手工编写代码然后为其生成代码。 另外您将希望产生尽可能最佳的代码这只有在您首先花费时间和精力手工编写代码的情况下才能完成。 3.生成尽可能少的代码 仅生成所需数量的代码。 因此例如如果所有生成的类都需要实现某个方法请使用可以由生成的代码调用的帮助程序类而不是多次生成该方法。 或者获取您的代码以使用基类上的方法扩展静态基类。 4.确保可以一次性吹走所有生成的代码 不要将静态代码与生成的代码混合使用。 您要做的是拥有com.test.generatedcode.xx.xx类的软件包。 在每次测试/开发运行结束时您都应该能够删除整个文件夹com/test/generatedcode 这意味着该文件夹中根本没有静态代码。 您会发现以这种方式安排代码将使测试周期变得更快。 5.从少量可验证的代码开始 代码生成的重点通常是产生大量代码。 很难测试您生成的代码是否正确。 因此从一个小而复杂的示例开始您可以通过阅读代码进行检查并为其提供测试用例。 希望以后的情况会更多。 6.生成测试用例 如第5点所述很难在所有情况下验证您的代码生成器是否正确。 因此您应该尝试将测试用例作为所生成代码的一部分进行生成。 然后您可以从生成器生成许多偏斜的复杂代码并对其进行测试。 7.冗长 从本质上讲生成代码的代码可能很难阅读和理解。 代码生成代码永远不必太快因此不必担心使其变得冗长。 使用大量评论但更重要的是尝试使其尽可能明确以便您可以在一年内回顾它并仍然可以对其进行维护。 翻译自: https://www.javacodegeeks.com/2015/12/7-tips-successful-code-generation-java.html如何使用java代码生成