用T4消除代码重复,对了,也错了 背景 我需要为int.long.float等这些数值类型写一些扩展方法,但是我发现他们不是一个继承体系,我的第一个思维就是需要为每个类型重复写一遍扩展方法,这让我觉得非常不爽,但是我还是不情愿的写了,等int和long写完后,我突然觉得我可以让T4帮我写,而且C#支持部分类,就更爽了. 用T4实现 模板(写代码的代码) 1 <#@ template debug="false" hostspecific="false" lang…
背景 我需要为int.long.float等这些数值类型写一些扩展方法,但是我发现他们不是一个继承体系,我的第一个思维就是需要为每个类型重复写一遍扩展方法,这让我觉得非常不爽,但是我还是不情愿的写了,等int和long写完后,我突然觉得我可以让T4帮我写,而且C#支持部分类,就更爽了. 用T4实现 模板(写代码的代码) <#@ template debug="false" hostspecific="false" language="C#"…
背景 我们经常在配置文件中配置各种:id.name,然后在程序中使用这些配置获取信息,这导致了字符串重复出现在系统的多个地方,非常不利于维护,本文介绍采用 T4 来消除这种重复. T4 消除重复 配置文件 <?xml version="1.0" encoding="utf-8" ?> <sqlMap namespace="Accounts" xmlns="http://ibatis.apache.org/mapping…
本文转自:http://www.cnblogs.com/artech/archive/2010/10/23/1859529.html 在之前写一篇文章<从数据到代码>(上篇.下篇)中,我通过基于CodeDOM+Custom Tool的代码生成方式实现了将一个XML表示的消息列表转换成了相应的C#代码,从而达到了强类型编程的目的.实际上,我们最常用的代码生成当时不是CodeDOM,而是T4,这是一个更为强大,并且适用范围更广的代码生成技术.今天,我将相同的例子通过T4的方式再实现一次,希望为那些…
代码重复检测: cpd --minimum-tokens 100 --files g:\source\python\ --language python >log.txt 输出类似: ===================================================================== Found a 381 line (1849 tokens) duplication in the following files: Starting at line 24 o…
消除 list重复值 Java代码  public void removeDuplicate(List list) { HashSet h = new HashSet(list); list.clear(); list.addAll(h); } 交集: Java代码  list.retainAll(Arrays.asList(arr)); // list 中的就是交集了  arr为数组 差集: Java代码  list1.removeAll(list2); 并集: Java代码  list1.a…
高阶函数可以把其它函数当作函数参数,帮助我们减少代码重复,例如: object FileMatcher { private def fileHere = (new File(".\\file").listFiles()) def fileEnding(query : String) = { for(file <- fileHere if file.getName.endsWith(query)) yield file } def fileMathching(query: Stri…
通过Groovy来消除代码噪声 Java是在JVM上运行的最广泛使用的编程语言.不过,还有很多其他基于JVM的语言,比如Groovy,Scala,JRuby,Jython,Kotlin等等.其中,Groovy和Scala现在在Java社区中已经被广泛采用并大受欢迎. 本文介绍如何在Spring Boo中使用Groovy语言来编程. Groovy Groovy是一种基于Java的语法的基于JVM的编程语言.Groovy支持动态输入,闭包,元编程,运算符重载等等语法.除此之外,Groovy还提供了许…
转: http://www.wxzzz.com/1438.html 资料: https://cnsmartcodegenerator.codeplex.com/SourceControl/latest   什么是T4模板? T4,即4个T开头的英文字母组合:Text Template Transformation Toolkit.T4文本模板将按照预期定义的一些代码进行动态生成一些所需的字符串内容. 如何动态编译T4模板? 通常我们在VS中进行*.tt (T4模板的编写),那么如何将t4模板代码…
简介 Optional类是Java 8新增的一个类,Optional 类主要解决的问题是臭名昭著的空指针异常(NullPointerException). —— 每个 Java 程序员都非常了解的异常. 本篇文章将详细介绍optional类,以及如何用它消除代码中的null检查. 本质上,这是一个包含有可选值的包装类,这意味着 Optional 类既可以含有对象也可以为空. Optional 是 Java 实现函数式编程的强劲一步,并且帮助在范式中实现. 但是,Optional 的意义显然不止于…