sm羞耻任务_羞耻驱动的发展

sm羞耻任务_羞耻驱动的发展sm羞耻任务我一直渴望写出精巧的代码。在完成所有生产代码配对的日常工作中,我认为我们的质量很高。但是令人惊讶的是,当您独自编码时,您多么容易原谅自己并陷入不良习惯。配对时羞耻是品质背后的动力吗?我们有许多使用EasyMock编写的古老的单元测试;我们所有最近的单元测试都使用JMock。这笔小小的技术债务意味着,如果您要更改仅适用于EasyMock测试的代码,则首先必须决…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

sm羞耻任务

我一直渴望写出
精巧的代码 。 在
完成所有生产代码配对的
日常工作中,我认为我们的质量很高。 但是令人惊讶的是,当您独自编码时,您多么容易原谅自己并陷入不良习惯。 配对时
羞耻是品质背后的动力吗?

我们有许多使用Easy Mock编写的古老的单元测试; 我们所有最近的单元测试都使用JMock 。 这笔小小的技术债务意味着,如果您要更改仅适用于Easy Mock测试的代码,则首先必须决定:您要修复测试,还是可以hold着鼻子去适应现有的测试,或对其进行调整?你的目的? 这不仅使人分心,而且意味着做正确的事情可能会慢得多。
原则上,将Easy Mock测试更改为JMock是一项相对简单的任务。 Easy Mock通过一种简单的方式声明模拟:

private PricesService prices = createMock(PricesService.class);

这些可以轻松转换为JMock样式:

private Mockery context = new Mockery();
...
private final PricesService prices = context.mock(PricesService.class);

EasyMock声明期望的方式略有不同:

prices.prefetchFor(asset);
expect(prices.for(asset)).andReturn(
    Lists.newListOf("1.45", "34.74"));

这些需要转化为JMock的期望:

context.checking(new Expectations() {
    
    {
    allowing(prices).prefetchFor(asset);
    allowing(prices).for(asset);
        will(returnValue(Lists.newListOf("1.45", "34.74")));
}});

这个过程是非常机械的,因此,在10%的时间里,我开始使用脚本化的重构工具Rescripter将我们的EasyMock测试机械地转换为JMock。 Rescripter让您运行修改Java源代码的代码。 但这不只是简单的搜索和替换或正则表达式:通过使用Eclipse强大的语法树解析,您可以访问源文件的完全解析表示形式–这意味着您可以找到对方法的引用,查找方法调用,名称,参数列表等。鉴于从一个库到另一个库的翻译性质,这正是您所需要的。

这不可避免地是相当探索性的编码 。 我不确定是什么可能,翻译过程最终会变得多么复杂。 但是我从上面的一些简单示例开始。 但是,随着时间的流逝,由于库之间的许多差异使得我越来越难以完成翻译工作,因此复杂性也在增加。

sm羞耻任务_羞耻驱动的发展

经过10%的工作,我设法整理了一些很棒的东西:我翻译了几百个单元测试; 但是,这是由700行您曾经遇到过的最怪诞的代码完成的!
然后……然后上周,我得到了当天的一对伴侣。 他不得不分享这个恐怖。 用了10分钟的时间向他解释了问题,然后又用了15分钟的解释原因,这是一次性使用的代码,因此没有任何单元测试。 我很不好意思。
我们开始尝试进行一些小的更改; 但是如果没有测试框架,很难确定我们正在做的事情是否可行。 更糟的是,我们需要更改许多地方使用的核心功能。 这让我感到紧张,因为没有测试覆盖面-因此我们无法确定我们不会破坏已经存在的内容。 坦白说,这绝对是一场噩梦。 我已经习惯了进行测试覆盖并编写测试-在没有单元测试的情况下编写代码的想法使我无所适从。 但是,这里是我自己创建的一堆未经测试的代码。 为什么? 因为我原谅自己没有“做对了”。 毕竟,这只是一次性代码,不是吗? 这是探索性的,比生产代码更重要。 无论如何,一旦完成并迁移了测试,此代码将无用-那么为什么要使其漂亮呢? 我只是继续偷走…… 听起来多么合理,真是令人惊讶。 直到您意识到自己是个彻头彻尾的笨蛋。 即使是一次性代码,即使保质期相对较短

快速前进的唯一途径就是前进

所以我做了任何有理性的人都会做的事情。 我花了我的午餐时间来修复这种状况。 最终结果? 现在,我可以在Jasmine中编写单元测试,以验证我正在编写的重构。
现在,我不仅可以正确地测试驱动新代码。 我可以编写测试以涵盖现有的旧版代码,因此可以适当地对其进行重构。 惊人。 突然之间,进步的步伐跳了起来。 我没有一个漫长的调试周期,而是尝试手动查找和触发测试方案,而是有了一个易于运行,可重复的自动化测试套件,这使我对自己的工作充满信心。

这对我来说都不是新鲜事物:这是我日复一日地做的事情。 但是……但是…………我以某种方式原谅自己独自编码。 我能得出的唯一结论是,我们不能单靠编写任何价值的代码就值得信赖。 让另一个人看到您抱歉的代码借口的可耻之处是,配对时提高了质量: 如果您不配对编程,那么您编写的代码就必须是可耻的

参考: Actively Lazy博客上的JCG合作伙伴 David Green的羞耻驱动开发

翻译自: https://www.javacodegeeks.com/2012/03/shame-driven-development.html

sm羞耻任务

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/193341.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 第二章《数据库的基本操作》

    第二章《数据库的基本操作》

    2021年5月28日
    95
  • H3C 通配符掩码

    H3C 通配符掩码转载于:https://www.cnblogs.com/fanweisheng/p/11163784.html

    2022年7月24日
    11
  • docker部署服务器_docker服务启动

    docker部署服务器_docker服务启动部署Nginx寻找镜像dockersearchnginx:默认最新版官网查看不同的版本信息下载镜像dockerpullnginx[root@iZwz9hv1phm24s3jicy8x1Z~]#dockerimagesREPOSITORYTAGIMAGEIDCREATEDSIZEnginxlatest605c77e624dd3monthsago141MBcentos.

    2022年10月9日
    2
  • navicat 激活码-激活码分享

    (navicat 激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlKUKQYKZ5XE-eyJsaWN…

    2022年3月22日
    64
  • pycharm安装配置环境_如何在pycharm中配置anaconda

    pycharm安装配置环境_如何在pycharm中配置anacondapycharm安装及配置(anaconda)pycharm的下载与安装jetbrains官网开发者工具找到pycharm下载专业版等待下载完成anaconda的下载与安装anaconda官网 滑到页面最下方选择合适的版本,开始下载双击开始安装这里选择所有用户或者仅自己都行这里勾选上添加环境变量,就不用自己配置了查看开始菜单安装成功安装配置pycharm双击以后再重启,直接finish启动pycharm这里需要进行一下激活,我这里就用

    2022年8月29日
    3
  • 基本知识 100136

    基本知识 100136基本知识100136单选题A11.疑为多囊卵巢综合征,行超声检查的最佳时间是pcos超声检查在月经周期或黄体酮撤退后出血的3~5日进行,显示卵巢体积增大,双侧卵巢均有ge;12个直径2~9mm的小卵泡,即卵巢多囊改变。答案:(D)A:月经期B:月经来潮6小时内C:月经前数日D:月经周期的3~5日E:排卵期单选题A12.关于萎缩性阴道炎,叙述正确的是答案:(C)A:萎缩性阴道炎仅见于绝经后女性B:萎缩性阴道炎阴道pH

    2022年9月17日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号