可以编辑代码的代码:代码生成的利与弊

2019-11-08 14:01| 发布者: 汇众注册平台| 查看: |

可以编纂代码的代码:代码生成的利与弊

代码生成的眼前情态

代码生成的眼前情态是无处不在的(2019年春季)。

现在,代码生成发生在软件堆栈的每一层,

包含Java库(如swagger CodeGen),

最新的交叉编译器/编译器(如针对JavaScript运用程序的Babel)

以及全栈生成器(如Starter StackGen(tm))

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之类的代码生成器通过发展,可以战胜从前的限制性,同时将一切代码生成技巧中的最佳功能联合到现代开垦工具中。

代码生成的长处

无需手动编码=更少的错误

实现更大,更复杂的模式可能节俭大量空儿

简单运用和PoC的快速上市周期

稳固的基础架构意味着更少的空儿节约

CI / CD友爱,可以将代码生成作为步骤添加到所有CI管道或开垦工作流程中

端到端生成打消了处理多个源文献和文献类型时的错误

可以将新功能集成到基础模板中,以在单个构建中跨大型代码库实现

但这并不是说代码生成没有缺点。

代码生成的缺点

并非一切运用程序都将从代码生成中受益

与手动抉择每个代码库,模式和编码样子相比,代码生成更加不灵巧

对基础模板的更改将推行到一切生成的文献,因而更改必要高度兼容并通过周到测试

生成的代码必要在代码库中与开垦人员代码细心隔离- 存在覆盖开垦人员代码的危险,并且应该可以在不影响所有现有代码的状况下进行重新生成

代码生成会增添一点儿复杂性-比如,要真正理解生成器并与之合作,您须要理解生成的代码及其缘故-除了代码库的通例课题之外

编辑其余代码的编辑代码的思维模式可能会变得疏松,特异是在编辑生成其余运用程序的运用程序时

LCDP和将创新推向边沿

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前端生成。

Swagger CodeGen和StackGen React代码都利用Mustache从Mustache模板文献生成React内容。

Mustache

JavaPoet

Swagger CodeGen

MyBatis Generator

这种方法的优势在于它是可插入的,并准许咱们在运行时和编译之前生成。

经过生成对开垦人员友爱的格局的高质量源代码,现代代码生成器在供应现代高度可扩张且强健的基准代码库的同时,使全栈开垦人员的效劳倍增。

关于作者

约翰·麦克马洪(John McMahon)是Starter Inc.的首席实行官,该公司是Extentech Inc的创始人,并且多年来是StackGen,Sheetster,OpenXLS,ExtenXLS和许多软件项目标开垦商。

【编纂推荐】

可主动生成代码,5款基于AI的开垦工具

新版Kite:实时补全代码,Python之父都发声力挺!

还在手动盖楼领喵币?双十一这群开垦者竟然如此「作弊」

菜鸡程序员都是怎么写代码的?

几种MySQL常见的图形化工具

<
>
汇众平台拥有强大的财团支持,信誉与资金有保障!本站为您提供汇众注册、汇众登录、汇众手机APP客户端下载等。欢迎您的加入,24小时客服在线服务!目前旗下有汇众平台有限公司、汇众平台科技有限公司、汇众平台设备有限公司;致力于建成产品丰富的娱乐业航母!

联系我们

(服务时间:9:00-18:00)

4837899@qq.com

在线咨询 官方微信官方微信

部门热线

前   台:
业务部:
客服部:
技术部:
人事部:

网站建设 微信开发 售后服务 咨询电话 返回顶部
返回顶部