可以编写代码的代码:代码生成的利与弊
副标题[/!--empirenews.page--]
代码生成的当前状态是无处不在的(2019年春季)。 如今,代码生成发生在软件堆栈的每一层,
REST API的数量激增,导致在过去十年中针对各种编程语言和环境开发的API客户端生成器种类繁多。 就像某种巨大的数字Turducken一样,REST API及其生成的客户端似乎能够将任何事物连接到任何事物。 因此,让我们看一下代码生成管理中涉及的火鸡,鸭子和小鸡…… 1.代码重写自动编码的一种广泛形式是代码重写-用于将一种语言版本的语法转换为另一种语言,有时甚至完全转换为另一种语言。 例如,诸如Scala之类的语言实际上是将您的代码重写为与Java兼容的代码。 著名的奇怪的Lombok项目基本上在您键入时重写Java代码,生成幻像方法,因此您可以专注于出色。 就像Babel一样,任何优秀的JavaScript开发人员都可以证明“编译器”是如何将您的高级ES2017重写为已使用了10年的,与浏览器兼容的旧版JavaScript,因此您可以编写现代代码,而不必担心浏览器的行为方式。 2.基于模板的生成React生态系统在创建基于模板的应用程序框架(包括React的“ create-react-app” CLI命令)方面特别活跃。 在整个软件行业中,其他基于模板的代码生成也很普遍。HTML模板和流行的新静态站点生成器通常利用流行的胡须或车把模板引擎来利用模板解析。 在服务器模板引擎(例如Velocity)以及基于服务器的胡须和车把实现中,吐出了预渲染的源文件(例如HTML和越来越多的JavaScript)。 3.运行时动态代码模板并不是生成代码的唯一方法。 通过自省,例如Java和Java Reflection API等语言以及Ruby Metaprogramming,运行代码可以是“自我感知”的,一旦您的代码自我感知,构建真正动态应用程序的选项就会真正扩展。 在Starter,我们使用Java构建了StackGen生成器引擎,这意味着我们能够使用便捷的JavaPoet库来动态构建Java类文件,其中包括在运行时动态合成的功能。有趣的是,这些类可以在内存中编译并由类加载器加载,而无需写入磁盘。 他们说Java不是动态语言! 这种类型的动态生成的代码令人兴奋,因为它不仅节省了我们手动编写代码的时间和金钱,而且还提供了机会在运行时在应用程序中创建响应行为,而无需人工干预(可能基于AI决策)使我们的应用程序和数字体验比以往更具吸引力和实用性。 但是生成的代码很烂!不幸的是,软件行业的历史上充斥着代码生成器,无代码开发工具,所见即所得前端生成器的示例,并被似乎从未消亡的古老平台吐出的普遍的加密源代码恐怖所困扰(我正在寻找在您的DreamWeaver Ultradev上还是应该说Drumbeat 2000 ?!)。 当机器充满了晦涩的技术和混乱的变量名时,谁想要处理机器吐出的代码?生成的昔日代码只是令人沮丧和悲伤,而您想要建立的任何东西都没有。 幸运的是,时代变了在2019年,工具和软件开发的最佳实践已经发展到人类和机器可以真正在中间相遇的地步。诸如APIcur.io,StackGen和Microsoft PowerApps之类的代码生成器经过发展,可以克服过去的局限性,同时将所有代码生成技术中的最佳功能结合到现代开发工具中。 代码生成的优点
LCDP(低代码开发平台)作为“无代码开发”的最新形式以及桥接高级用户/ jr的新方法而受到关注。开发者差距。 随着对新功能和新系统需求的增长,开发人员变得捉襟见肘,许多用户被超载的Excel电子表格所束缚,或者由于各个级别的开发人员资源稀缺而根本没有所需的软件功能。 消费者SaaS解决方案可以完成许多一次性任务,但是一堆杂乱无章的Web应用程序和服务并不是满足许多需求的可靠基础。 另一方面,对于许多组织来说,昂贵的企业系统根本不是一个选择。 除了节省开发成本外,授权“公民开发人员”在适当时构建自己的解决方案是LCDP价值主张的主要驱动力。 代码生成器直接位于解决方案域的中间。 使用OpenAPI和StackGen端到端生成StackGen采用整体方法来生成代码-基于OpenAPI / Swagger模式。 开发从一开始就开始,重点是使用OpenAPI / Swagger设计出色的API 。 然后,该设计准则使您可以生成具有可预测行为的健壮堆栈,并使用此处的任何自定义逻辑和前端设计对其进行精确扩展。 为了达到这种灵活性,StackGen使用了3种代码生成步骤以及3种不同的实现方式。 系统的3个主要组件使用了多种生成技术:Swagger CodeGen,MyBatis生成的DAO和映射,以及即将到来的StackGen PRO,ReactJS前端生成。 (编辑:好传媒网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |