实战 Groovy: 用 Groovy 减少代码冗余

简介:Groovy 简洁的语法将开发人员从那种需要进行代码编译但却无助于表 达 什么 是程序真正想 要实现的典型的 Java 结构中解放了出来。在实战 Groovy 系列的这一复 兴篇中,Groovy 开发 人员兼特约专栏作家 J. Scott Hickey 带您进行一系列对常规 Java 代码和 Groovy 代码的比较,展示 这门令人兴奋的语言如何将您解放出来,让您能够专注于编码的重要方面。

通常,程序员们转而选择诸如 Groovy 之类的编程语言,是为了构建快速的实 用程序,快速编写测试 代码,甚至创建构成大型的 Java 应用程序的组件,而 Groovy 先天具有这样一 种能力,它能够减少传 统的基于 Java 系统所固有的许多冗余并降低其复杂度。Groovy 简洁而灵活的语 法将开发人员从那种需 要进行代码编译却无助于表达什么 是程序真正想要实现的典型的 Java 结构中解 放出来。不仅如此, Groovy 轻松的类型通过减少一些接口和超类使代码不再复杂,这些接口和超类都 是常规 Java 应用程序 用以支持不同具体类型间的通用行为所需的。

为了举例说明 Groovy 如何减少 Java 应用程序所涉及的无用数据,我将使用 Bruce Tate 和 Justin Ghetland 的 Spring: A Developer's Notebook(参见 参考资料)中的 样例代码,该书介绍了 如何使用 Spring 进行控制反转。每当回顾一个 Java 样例,我都会将其与实现 相同功能的相应的 Groovy 源代码进行比较,您将很快发现 Groovy 通过减少 Java 编程的不同方面 (冗余且不必要地传递 了应用程序的行为)而使应用程序代码变得多么地清晰。

Groovy 之声

在 Bruce 和 Justin 这本书的第一章中,创建了一个简单的自行车商店应用 程序,其中包含有四个 类。首先,我将向您展示一个简单的名为 Bike 的 JavaBean 类,该类代表了一 辆库存的自行车。然后 ,我会考查自行车商店的类型,名为 RentABike。它包含了一个 Bike 集。还有 一个命名为 CommandLineView 的用于显示自行车列表的类,该类依赖于 RentABike 类型。最 后,有一个用于集成这 些部分以创建工作应用程序的类,该类利用 Spring 来传递完整地配置了 RentABike 类型的 CommandLineView 类 —— 免去了复杂的硬编码。

停用 JavaBean!

清单 1 中一个代表自行车的类在常规 Java 代码中被实现为一个简单的 JavaBean,它是 Java 开发 人员可能已经编写好的成百上千的类的一个典型。通常来说,JavaBean 并没有什 么特殊之处 —— 其属 性被声明为 private,且可通过 public getter 和 setter 对其进行访问。

清单 1. Java 代码中的 Bike JavaBean

import java.math.BigDecimal;public class Bike {   private String manufacturer;   private String model;   private int frame;   private String serialNo;   private double weight;   private String status;   private BigDecimal cost;   public Bike(String manufacturer, String model, int frame,     String serialNo, double weight, String status) {      this.manufacturer = manufacturer;      this.model = model;      this.frame = frame;      this.serialNo = serialNo;      this.weight = weight;      this.status = status;   }   public String toString() {      return "com.springbook.Bike : " +            "manufacturer -- " + manufacturer +            "\n: model -- " + model +            "\n: frame -- " + frame +            "\n: serialNo -- " + serialNo +            "\n: weight -- " + weight +            "\n: status -- " + status +            ".\n"; }   public String getManufacturer() { return manufacturer; }   public void setManufacturer(String manufacturer) {      this.manufacturer = manufacturer;   }   public String getModel() { return model; }   public void setModel(String model) { this.model = model; }   public int getFrame() { return frame; }   public void setFrame(int frame) { this.frame = frame; }   public String getSerialNo() { return serialNo; }   public void setSerialNo(String serialNo) { this.serialNo = serialNo; }   public double getWeight() { return weight; }   public void setWeight(double weight) { this.weight = weight; }   public String getStatus() { return status; }   public void setStatus(String status) { this.status = status; }   public BigDecimal getCost() { return cost; }   public void setCost(BigDecimal cost) {     this.cost = cost.setScale(3,BigDecimal.ROUND_HALF_UP);   }}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索string
, bigdecimal
, groovy
, 代码
, this
, public
, weight
, 冗余代码
代码冗余
减少代码冗余、如何减少代码的冗余、数据库减少了数据冗余、代码冗余、代码冗余是什么意思,以便于您获取更多的相关知识。

时间: 2024-12-03 08:43:41

实战 Groovy: 用 Groovy 减少代码冗余的相关文章

saas 云 异构-【系统设计】如何把公司所有不同需求的业务系统集中管理,而且减少代码冗余,保证代码复用性高了?

问题描述 [系统设计]如何把公司所有不同需求的业务系统集中管理,而且减少代码冗余,保证代码复用性高了? 如题所讲,谢谢各位大神!没有金币了,不好意思啊.. 希望大家都能给点思路,谢谢! 还有,在这里想向大家咨询一个问题,saas-当前市场如何在做了?有实例最好,谢谢 解决方案 宏观层面上来说,你可以用单点登录等把用户和权限从所有系统中拿出来 微观上说,你可以用aop(面向方面编程)来将程序中相同的逻辑从代码中抽出. saas主要是指你的系统要能承载多租户的用户环境.这个取决于市场需求,对于定制化

合并ThinkPHP配置文件以消除代码冗余的实现方法_php实例

很多时候我们在使用ThinkPHP配置网站前台和网站后台的数据库连接时,往往都是分别在前台的配置文件和后台的配置文件单独都写了配置的.但是有很多时候配置前台和后台的数据库可能是一样的配置,但是在二个文件中用的都是一样的配置,那么这时代码就产生了冗余. 网站前台好使用数据库,比方说用户的注册.用户的登录还有评论等,这些都需要我们在前台使用到数据库,既然使用了数据库那么就得连接数据库!网站后台那就更不用讲了,使用数据库无处不在. 大部分的网站前台和后台都是使用的一个数据库,也就是前台和后台连接数据库

jQuery 通过事件委派一次绑定多种事件,以减少事件冗余_jquery

于是乎,在日常的开发中大量使用连缀写法,而事件方法连缀就是一个特例.若给一个Dom对象使用了绑定了多个事件,便于阅读和书写,习惯了使用连缀写法,但这样的书写方式会造成时间的冗余. 1.事件冗余:多个事件方法中多次调用相同的代码 下面的代码是一个事件方法连缀的写法: 复制代码 代码如下: jQuery(function($) { $('<div id="livetip"></div>').hide().appendTo('body'); var tipTitle

如何用CodeSmith减少代码重复编写

  上次简单介绍了下CodeSmith,今天做些详细介绍(转),希望可以对大家有帮助:CodeSmith 是一种语法类似于asp.net的基于模板的代码生成器,程序可以自定义模板,从而减少重复编码的劳动量,提高效率.     安装CodeSmith 2.6注册后发现有两个可运行程序CodeSmith Studio.exe和CodeSmith Explorer.exe     CodeSmith Studio.exe用来创建自定义模板     CodeSmith Explorer.exe用来导入模

利用FindBugs减少代码中的bug数学习

FindBugs 作用 开发人员在开发了一部分代码后,可以使用FindBugs进行代码缺陷的检查.提高代码的质量,同时也可以减少测试人员给你报的bug数. 静态分析工具承诺无需开发人员费劲就能找出代码中已有的缺陷.当然,如果有多年的编写经验,就会知道这些承诺并不是一定能兑现. 代码缺陷分类 根据缺陷的性质,大致可以分为下列几类 ·Bad practice  不好的做法·Correctness   可能有不正确·Dodgy code     糟糕的代码·Experimental  实验·Inter

《Swift iOS应用开发实战》——2.5与代码进行关联

2.5与代码进行关联 通过前面的学习,我们已经知道如何在故事板中创建用户界面,但在搭建好用户界面以后又要做什么呢?接下来就需要将控件对象和程序代码关联起来.我们在创建Calculator项目的时候使用了默认的Single View Controller模板,该模板关联了故事板中的View Controller场景和ViewController.swift文件中的ViewController类.现在我们在故事板中查验一下.在故事板中选中View Controller场景,使用Command+Opt

如何减少代码中的BUG

问题描述 刚开始工作,代码中BUG总是一个一个.为了减少BUG,我增加了自己测试的时间.当然BUG少了一些,请问还有其它的思路么? 解决方案 解决方案二:买瓶杀虫剂放手边随时准备着解决方案三:与其事后修补,为何事先不弄得好一些呢很多的BUG都是由于很不好的编码习惯造成的,比如说:从来不对public方法传入的参数进行有效性或者非空检查之类的.解决方案四:自己积累一些框架,用的时候套用曾写过的代码...解决方案五:没事的,刚刚开始工作嘛,以后就会好的.BUG允许出现一次,但是下次我想不会再出现同样

Ajax实战:绑定事件处理函数代码

JavaScript文件(代码清单4-3)采用编程方式将事件绑定到键上. 代码清单4-3 musical.js window.onload调用了assignKeys()函数(可以在这个文件中直接定义window. onload,但是这限制了它的可移植性).通过唯一的ID来发现keyboard元素,然 后使用getElementsByTagName()遍历访问其内部所有的DIV元素.这需要知道一 些关于页面结构的知识,但是它允许页面设计师自由地在页面中将键盘DIV以希 望的方式任意移动. 表示键的

asp.net 反射减少代码书写量_实用技巧

  复制代码 代码如下: public bool Add(Liuyan refmodel)    {        string sql = "insert into liuyan(name,phone,zhiwei,gongsi,addr,country,dianyou,content,adddate)values(@name,@phone,@zhiwei,@gongsi,@addr,@country,@dianyou,@content,@adddate)";        OleD