zoukankan      html  css  js  c++  java
  • 少一些套路,多一些真诚 ——groovy消灭表现层套路

    1st初次认识groovy是在2009年,当时看了Manning出版的《Groovy in Action 1st Edition》,对groovy这个语言的交互性shell,以及灵活的语法留下了深刻的印象,但限制于自己对脚本语言的特性了解甚少,社区基础的薄弱,以及所谓java is best的年少轻狂,没有进行实际应用,只是作为一种兴趣的萌芽种在了知识的土壤里。

    转眼间到了2016年9月,突然在Manning网站上发现一本似曾相似的书籍-《Groovy in Action 2nd Edition》封面2nd颜色做了改变,从萌芽的鲜绿色变成了硕果的深红色。奥,这么多年来,你一直在… 

    “少小离家老大回,乡音无改鬓毛催”。遇见好久不见老朋友的感觉突然从我的心底悠然洒出来,化成氤氲,久久的萦绕在我的笔记本上,淌在桌子上,落在饭碗里,最后清晰的刻在脑海里。这就是解决长期散漫在表现层的繁琐套路的工具.其各方面战力如下:

    颜值:已经从名落孙山变成了金榜题名,在TIOBE榜上2006年的6月108名升到了2016年8月的16名。看看这升势,简直是大牛市。

    groovy_tent

    四个字,恭喜发财。社区发展的也很旺盛,其语言本身和java互可调用,有一个强大的干爹Java,发展出了许多应用:如gradle(构建工具,类似maven),grape,grails(web开发框架)。

    平易近人:

    1. 换装便利性:引用几个jar依赖包,配置下编译的插件指定groovy-eclipse-compiler编译器,装IDE插件,无缝集成开发环境。

    2. 调用的便利性:源代码文件换了个后缀名,叫.groovy,里面语法可以用java的也可以用groovy并可直接调用java的lib,简直是各种用法无障碍。

    真诚无套路:

    • 经典套路1:布尔表达式套路

    if(list!=null&&list.size()>0)

         天衣无缝,譬如每次看到不管生什么病,回答都是多喝点水感觉烦不烦…

        if(obj!=null&&obj.getA()==1)

         受不了了,给你们统一

           if(list)

    • 经典套路2:初始化代码

    简单任务,新建一个对象并赋值


    CityCommArea c=new CityCommArea();

    c.setCode(310000);

    c.setName("上海市");

    c.setCbds(new ArrayList<CBD>());


    这个以前看着没啥,表现层经常有从http 提交的参数组装成对象的代码,或者从后台的DO对象转成VO对象的代码。老太婆的裹脚布,又长又臭。


    CityCommArea area= new CityCommArea(code:310000,name:"上海市",cbds:[]);


    化对象set方法调用为key:value形式传入。

    • 经典套路3:集合统计:

    给你一段话,统计下单词数量。


    List<String>words=new ArrayList<String>();

    Map<String,Integer>freq=new HashMap<String,Integer>();

    for(int i=0;i<words.size();i++){

         String word=words.get(i);

         if(freq.contains(word)==false){

         freq.put(word,0);

         }

         else{

         freq.put(word,freq.get(word)+1);

         }

    }


    这就是java的回答,一如既往,专业牛B.

    Groovy的当头棒喝:


    Map<String,Integer>freq=[:];

    words.each {

    word->freq[word]=freq.get(word,0)+1};

    }


    • 简单套路4:转换集合

    for (int j = 0; j < unbindList.size(); j++) {

        PlatformInfoDTO temp = unbindList.get(j);

        int id = temp.getPlatformId();

         String name = temp.getPlatformName();

         Map<String, Object> dteam = new HashMap<String, Object>();

         dteam.put("id", id);

         dteam.put("name", name);

         dteam.put("selected", false);

         deliveryTeams.add(dteam);

    }

    其实就是一个映射关系转换:

    deliveryTeams=unbindList.collect(new ArrayList<Map<String,Object>>()){

        Map<String,Object>dteam=["id":it.getPlatformId(),

                                 "name":it.getPlatformName(),

                                 "selected":false];

        return dteam;

    }

    • 经典套路5:集合变换组合(这个有点像sql的感觉,能筛选,转换,连接一个集合,跟jquery的思路也差不多)

    String ww=words.findAll(){

        it.equals("it")

       }.collect(){

           return "a";

        }.join(" ");

    Java从1995年诞生已经20年了,成为了又一个经典语言。经典语言有光荣的过去,但瞬息莫测的未来不能仅靠过去的光辉去支撑。有人说,java已经过时了,big and ugly,但目前没有任何一门语言在商业逻辑开发上能够完全取代java,这不仅仅是经典的语法和精英程序员社团:James Gosling, Doug Lea,Joshua Bloch, Rod Johnson,Gavin King等的努力,因为它也一直在变,better and stronger。

    Groovy 吸取了python,xxscript等语言的精简语法,让程序员有更好的开发效率,或许有人说,这是不是就不是严谨的,可读性强的java了,难道不停的重复,不停的说第一步,第二步,第三步来打一个冰箱,对一个简单意义的表达(如真假判断,集合转换,对象初始化)那么的单调的繁复的描述是可读性强?是严谨?我觉得让简单的事回归简单是最好的可读性,Less is more.

  • 相关阅读:
    poj 1466 Girls and Boys
    poj 1486 Sorting Slides
    poj 2112 Optimal Milking
    poj 1274 The Perfect Stall
    SHoj 420 购买装备
    poj 2987 Firing
    SHoj A序列
    FOJ Problem 2271 X
    XidianOJ 1028 数字工程
    XidianOJ 1030 三数和
  • 原文地址:https://www.cnblogs.com/jinspire/p/5879693.html
Copyright © 2011-2022 走看看