下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第第页让开发自动化:除掉构建脚本中的气味让开发自动化:除掉构建脚本中的气味
发表于:2023-04-03来源::点击数:标签:自动化
您把多少时间花在维护项目构建脚本上?也许远远超出您预期的或者可以忍受的时间。其实大可不必遭受如此痛苦的经历。在这一期的让开发自动化中,开发自动化专家PaulDuvall将演示如何改进很多常见的妨碍团队创建一致的、可重复的、可维护的构建的实践。
您把多少时间花在维护项目构建脚本上?也许远远超出您预期的或者可以忍受的时间。其实大可不必遭受如此痛苦的经历。在这一期的让开发自动化中,开发自动化专家PaulDuvall将演示如何改进很多常见的妨碍团队创建一致的、可重复的、可维护的构建的实践。当描述代码之类的东西时,我不喜欢“气味(smell)”这个词。因为用拟人的手法来谈论比特和字节往往令人觉得很怪异。并不是说“气味”这个词不能准确地反映出某种表明代码可能有错误的症状,只是我觉得这样听起来很滑稽。然而,我依然选择再次用这种令人厌烦的方式来描述软件构建,坦白说,这是因为这些年我见过的很多构建脚本都散发着难闻的气味。
在创建构建脚本时,即使是伟大的程序员也常常会遇到困难。就好像最近才学会如何编写程序性代码似的——他们还会编写庞大的单块构建文件、通过复制-粘贴编写代码、对属性进行硬编码等等。我总是很想知道为什么会这样。也许是因为构建脚本没有被编译成客户最终会使用的东西?然而我们都知道,要创建客户最终使用的代码,构建脚本是中心,如果那些脚本败絮其中,那么要想有效地创建软件,就需要克服重重挑战。
幸运的是,您可以轻松地在构建(不管是Ant、Maven还是定制的)之上部署一些实践,它们虽然可以帮助您创建一致的、可重复的、可维护的构建,但其过程会很长。学习如何创建更好的构建脚本的一种有效的方法是搞清楚哪些事情不要去做,理解其中的道理,然后看看做事的正确方法。在本文中,我将详细论述您应该避免的9种最常见的构建中的气味,为什么应该避免它们,以及如何修复它们:
惟IDE的构建复制-粘贴式的编写脚本方法冗长的目标庞大的构建文件没有清理干净硬编码的值测试失败还能构建成功魔力机格式的缺失关于本系列
作为一名开发人员,我们的工作就是为用户将过程自动化。然而,我们当中有很多人却忽视了将我们自己的开发过程自动化的机会。为此,我编写了让开发自动化这个系列的文章,专门探索软件开发过程自动化的实际应用,并教您何时以及如何成功地应用自动化。这里无意给出完整的列表,不过这份列表的确代表了近年来我读过的和写过的构建脚本中,我遇到的较为常见的一些气味。有些工具,例如Maven,是为处理与构建有关的很多管道而设计的,它们可以帮助减轻部分气味。但是无论使用什么工具,还是有很多问题会发生。
避免惟IDE的构建
惟IDE(IDE-only)的构建是指只能通过开发人员的IDE执行的构建,不幸的是,这似乎在构建中很常见。惟IDE的构建的问题是,它助长了“在我的计算机上能运行”问题,即软件在开发人员的环境中可以运行,但是在任何其他人的环境中就不能运行。而且,由于惟IDE构建自动化程度不是很高,因而为集成到持续集成(ContinuousIntegration)环境带来极大的挑战。实际上,没有人为的干预,惟IDE常常无法自动化。
我们要清楚:使用IDE来执行构建并没有错,但是IDE不应该成为能构建软件的惟一环境。特别是,一个完全用脚本编写的构建,可以使开发团队能够使用多种IDE,因为只存在从IDE到构建的依赖性,而不存在相反方向的依赖性,如图1所示:
图1.IDE与构建的依赖关系
惟IDE的构建有碍自动化,清除的惟一方法就是创建可编写脚本的构建。有足够的文档和太多的书籍可以为您提供指导(见参考资料),而像Maven之类的项目也为从头开始定义构建提供了极大的方便。不管采用何种方法,都是选择一种构建平台,然后尽快地让项目成为可编写脚本的。
回页首
复制-粘贴就像廉价的香水
复制代码是软件项目当中一个常见的问题。实际上,甚至很多流行的开放源码项目都存在20%到30%的复制代码。代码复制令软件程序更难于维护,同理,构建脚本中的复制代码也存在这样的问题。例如,想象一下,假设您需要通过Ant的fileset类型引用特定的文件,如清单1所示:
清单1.复制-粘贴Ant脚本
filesetdir="./brewery/src"includename="**/*.java"/excludename="**/*.groovy"//fileset
如果需要在其他地方引用这组文件,例如为了编译、检查或生成文档,那么最终您可能会在多个地方使用相同的fileset。如果在将来某个时候,您需要对那个fileset做出修改(比如说排除.groovy文件),那么最终可能需要在多个地方做更改。显然,这不是可维护的解决方案。然而,要除掉这股气味其实很简单。
如清单2所示,通过Ant的patternset类型可以引用一个逻辑名称,以表示所需要的文件。那么,当需要向fileset添加(或排除)文件时,只需更改一次。
清单2.复制-粘贴Ant脚本
patternsetid="sources.pattern"includename="**/*.java"/excludename="**/*.groovy"//patternset...filesetdir="./brewery/src"patternsetrefid="sources.pattern"//fileset
对于精通
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2030年中国纯棉毛巾被数据监测研究报告
- 2025至2030年中国柜式消防排烟风机数据监测研究报告
- 2025至2030年中国可冲洗式随身接尿器数据监测研究报告
- 2025年中国钾复合肥市场调查研究报告
- 2025年中国低噪声变风量风机箱市场调查研究报告
- 不同剂量BaP调控AhR与XRE1或XRE3的结合影响肝脏脂质代谢的分子机制
- 2025年度门面房出租合同(含物业维护升级及租金递增协议)2篇
- 2025年度体育赛事临时看台搭建与拆除合同协议书3篇
- 二零二五年度新能源投资合作出资协议范本4篇
- 二零二四年度智能安防系统设计与实施合同
- 2023-2024学年度人教版一年级语文上册寒假作业
- 2024医疗销售年度计划
- 税务局个人所得税综合所得汇算清缴
- 人教版语文1-6年级古诗词
- 上学期高二期末语文试卷(含答案)
- 软件运维考核指标
- 七年级下册英语单词默写表直接打印
- 2024版医疗安全不良事件培训讲稿
- 中学英语教学设计PPT完整全套教学课件
- 移动商务内容运营(吴洪贵)项目五 运营效果监测
- 比较思想政治教育学
评论
0/150
提交评论