这周接手了组里一个旧项目,Javadoc显示这是从2017年开始编写,@author显示的是一位前端员工的名字,他在我入职前已离职,好像是去了腾讯。

我十分好奇,为什么前端人员的名字会出现在后台代码里?问了下X叔,告知可能是当时该同学正在转后端,然后人手不够,就由他来写了。

上面都是题外话。

我浏览了一下,项目是用Groovy写的,我之前没有接触过Groovy,但是作为和Java一样运行在jvm上的语言,阅读二者代码不会有障碍。在格式方面,Groovy提供了更多的语法糖,让开发者能够更加愉悦地编写。

但是作为维护者,则恰恰相反。比如,Groovy用到了动态类型,这对于维护者阅读理解和调试都增加了一定的难度。

下面我想从两方面谈起,一是既生Java,何生Groovy?二者有什么区别?二是在开发前,如何进行语言选型。

Java自1995年诞生以来,遇到过几次重大波折,但都一一化解,并且一路高歌猛进,成为当前具有不二地位的老大哥。既然老大哥有着众多拥趸,那么千秋万代,岂不美哉?

但是,有人的地方就有江湖,语言也是,尤其以PHP信徒最为猖獗,这是后话。

Groovy诞生于2004年,是一种JVM上的替代语言,这里的替代不能理解为取代,而是一种对原有语言的完善和补充。所以说,Groovy的诞生不是为了革命,而是一种改良。

Groovy改良了什么?

Groovy的语法与Java很相似,基本上只要你会Java,你就能读懂Groovy,甚至能直接着手写。但是其设计理念是源于smalltalk和ruby,从这个维度来看Groovy更像是一门胶水语言。所以可以这么理解,它博采了其他门派的一些优点。

Groovy最大的特点是支持动态类型,相较于Java,它更简洁,表达能力也更强,具体特性可以搜索了解,这里暂不赘述。短期来看,它可以缩短你的开发周期,提升你的效率,但是长期来看,可能会导致一些问题,比如我现在维护就很吃力,一部分原因也是因为我菜。

大家可能会萌生这样一个问题:对于这二者,在开发时如何选用呢?

首先是技术选型,这是架构师的任务,学问比较高深,需要一定的技术视野和经验积累,而我们作为个人开发者或者是初级工程师,这方面比较欠缺,所以不敢自作主张。不过在开发除工作以外的自己的小项目时,可以尽量去自我培养这一种能力。

在语言选型上,有人说,超过200行代码的项目都不应该使用动态类型,虽然有一点夸张,但仍然有一些道理的,俗话说:“动态类型一时爽,代码重构火葬场”。有些代码写完后,一个月后回头再看,只有天知地知,你不知因为我也不知。

我认为,对于个人开发或者2-3人小团队合作,而且不用长期维护的项目,写法自由松散,追求速度是高效的。此时,Python、Ruby、Groovy这类的语言手到擒来,好不快活。但是对于中大型项目,时间跨度较长的,还是应该范式优先,即使Java有那么一点笨重。

首发于我的微信公众号:字节流

既生Java,何生Groovy?相关推荐

  1. java应届生如何找工作?

    在找工作前,你需要了解下大多数应届生的java水平. 1 虽然学了一大堆数据结构,算法,网络和操作系统等方面的技能,但不知道怎么用在项目里,或者根本不知道这些技能大多数是用不到项目里的. 2 java ...

  2. java应届生实习期满,转正的感想

    java应届生实习期满,转正的感想 为什么不喜欢hibernate,个人觉得hibernate是那种重量型的数据访问框架,不太适合轻量级开发,与其说mybatis的配置文件繁琐,但是你集成通用mapp ...

  3. Java兔子生兔子问题(递归法)

    Java兔子生兔子问题(递归法) 该问题与上楼梯的问题一样,是从反方向思考推导递归公式 /**生兔子问题 * 问题描述: * 新诞生的兔子三个月后会每个月都会产小兔子 * 即: 1 1 2 3 5 8 ...

  4. 基于JAVA医学生在线学习交流平台计算机毕业设计源码+系统+数据库+lw文档+部署

    基于JAVA医学生在线学习交流平台计算机毕业设计源码+系统+数据库+lw文档+部署 基于JAVA医学生在线学习交流平台计算机毕业设计源码+系统+数据库+lw文档+部署 本源码技术栈: 项目架构:B/S ...

  5. 初级Java应届生面试题(持续更新。。。)

    初级Java应届生面试题 初识Java 1.Write Once,Run Anywhere 2.为什么要配置path环境变量?如何配置? 3.编写代码,使得发生VirtualMachineExcept ...

  6. 为什么大厂都在抢应届生,应届生比老员工更吃香?

    看到了一个话题还挺有趣的,问题如下: 华为天才少年.阿里星.腾讯大咖.美团北斗.快star,都在争抢一些应届生.为什么这么多大厂都要去争抢应届生?应届生们去了就能带来高产出吗? 大厂渴望引进人才来提升 ...

  7. 【Groovy】Groovy 代码创建 ( 使用 Java 语法实现 Groovy 类和主函数并运行 | 按照 Groovy 语法改造上述 Java 语法规则代码 )

    文章目录 一.创建 Groovy 代码文件 二.使用 Java 语法实现 Groovy 类和主函数并运行 三.按照 Groovy 语法改造上述 Java 语法规则代码 一.创建 Groovy 代码文件 ...

  8. 小学生计算机舞蹈,最近“泼水成画”很火?舞蹈生VS体育生,看到计算机:你是来添乱的?...

    最近泼水拍照非常的流行,不知道大家在私底下有没有关注过这个视频,而且在这个视频中,这些花放在水里确实也特别的好看,接下来就一起来看一下,不同的学生拍出来的泼水照片都是什么样的. 首先大家看到的就是舞蹈 ...

  9. 既生瑜何生亮 access_token VS refresh_token

    中国有句老话, 既生瑜何生亮, 既然有我周瑜在世, 为什么老天还要一个诸葛亮啊? 同样的, 众所周知, 在 OAuth 2.0 授权协议中, 也有两个令牌 token , 分别是 access_tok ...

最新文章

  1. mybatis与php,浅谈mybatis中的#和$的区别
  2. Caffe部署中的几个train-test-solver-prototxt-deploy等说明二
  3. Linux路由器的架设
  4. 首届中国高校计算机大赛-人工智能创意赛启动,百度加盟全面赋能
  5. 51单片机的定时器深入讲解
  6. LVM的创建与快照和SSM存储管理器的使用
  7. ECMAScript 2019(ES10)新特性简介
  8. Oracle脚本笔记
  9. OSChina 周六乱弹 —— 有人骂你神经病怎么办?
  10. C#命名空间与类名的冲突
  11. 【2015年第4期】大数据时代的数据挖掘 —— 从应用的角度看大数据挖掘(下)...
  12. vba代码编程800例_VBA编程常用过程代码实例2630
  13. startService与bindService
  14. 65 ----点到平面及直线的距离、两异面直线间的距离
  15. DataSnap 2009 系列之三 (生命周期篇)
  16. Python的三大神器,你知道是哪三大吗?史上最详细的入门教程!
  17. 艾里斑大小与像元尺寸的匹配问题
  18. 计数器+按钮控制数码管显示
  19. 有个程序猿很忧桑:一个命令rm -rf/ ,他把整个公司删没了...
  20. Centos 8查询和设置当前时区

热门文章

  1. 【GBASE】南大通用GBase 8a MPP Cluster技术特点
  2. 杭州还不错的IT公司,想跳槽了,不知道下一站在哪里
  3. 【读书笔记】《偷影子的人》[法]马克·李维 —— 不想被叫醒的梦
  4. python初中必背语法_全初中必背英语语法知识汇总
  5. WINDOW中判断文件是否存在的方法
  6. 滴滴oracle,滴滴-数据分析
  7. 如何书写游戏设计文档
  8. jq 之 download下载图片或文件功能,以及一个神奇的download属性!
  9. 骑鹤下江南 mysql 安装及配置
  10. 如何提高你的沟通能力25个要点