Kotlin 普及度增加,代码质量比 Java 更高?
Google 在 I/O 2017 上宣布 Android 加入了对 Kotlin 编程语言的支持。如今,在所有开源的 Android 应用程序中,我们能发现有 12% 都是由 Kotlin 开发。Google 在 2017 年底表示 Kotlin 已经渗透了超过 17% 的使用 IDE,Android Studio 3.0 开发的 Android 应用程序。
Kotlin 是一个运行在 Java 虚拟机上的静态类型编程语言,于 2012 年开源,采用 Apache 2.0 许可证。它与 Java 的语法不兼容,但设计成可以与 Java 代码互操作,可复用现有的 Java 类库,并且被认为所需代码量更少,而代码更少通常也意味着 bug 更少。Google 当时发布的 Android Studio 3.0 就添加了 Kotlin 支持,详情你可以看这里:
一年后,法国 Valenciennes 大学的计算机科学家 Bruno Gois Mateus 和 Matias Martinez 发表了一篇论文《An Empirical Study on Quality of Android Applications written in Kotlin language》,对用 Kotlin 编写的 Android 应用程序的质量进行了研究。
论文原文:
他们在论文中描述了如何从开源应用商店 F-Droid 收集 925 个应用程序,以及如何测量 Kotlin 代码在每个应用中的表现,并将分析代码“异味”(Smells)作为衡量代码质量的指标。
注:“异味”(Smells)是“反模式”(anti-patterns)的另一种说法,“反模式”是一种用于指代不良编码模式的术语。 在 Java 中,The Blob(a.k.a God Objects)代表了一种常被引用的反模式。
通过对这 925 个应用进行分析,发现 109 个应用至少有一个版本是使用 Kotlin 语言写的,其中又有 35% 的应用只使用 Kotlin 语言。在包括 Java 代码和 Kotlin 代码的应用中,较近的版本中 Kotlin 代码比例提高而 Java 代码下降。
然后分析代码质量:
面向对象(OO)的反模式包括:Blob Class(BLOB),Swiss Army Knife(SAK),Long Method(LM)和 Complex Class(CC)。
Android 反模式包括:重型广播接收器(Heavy Broadcast Receiver,HBR),重型异步传输(Heavy AsyncTask,HAS),重型服务启动(Heavy Service Start,HSS),初始 OnDraw(Init OnDraw,IOD),无内存解析器(No Low Memory Resolver,NLMR)和 UI 重写(UI Overdraw,UIO)。
在面向对象的反模式中,LM,CC 和 BLOB 出现在至少 92% 的 Kotlin 和 Java 应用中,其中 OO “异味”在 Kotlin 应用更为常见。但研究者发现,在这 Android“异味”中,Java 比 Kotlin 更容易受到三种“异味”的影响。
研究者还在论文中提到,Kotlin 的采用使得至少 50% 的 Android 应用程序的质量提高了。因此认为,Kotlin 的代码质量更高。
另外,这两位研究员也比较了 Objective-C 应用程序和 Swift 应用程序,结果发现 Android 应用程序的异常值高于 iOS 应用程序,感兴趣的同学可以看这里:
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
关于编程语言 Julia,开发团队有这些想告诉你
Julia 1.0 正式版发布已过去一周多,官方表示 1.0 版本积累了富有野心的程序员们的十年心血。Julia 可以看作是一门集众家之所长的编程语言,在首次公开时开发团队就已明确其需求: 我们想要一种拥有自由许可的开源语言,同时拥有 C 的速度和 Ruby 的灵活。我们想要一种同像性语言,有像 Lisp 这样真正的宏,也有像 Matlab 这样的浅显熟悉的数学符号。我们想要一门像 Python 一样可用于通用编程,像 R 一样易于统计,像 Perl 一样自然地用于字符串处理,像 Matlab 一样强大的线性代数,像 shell 一样擅长将程序粘合在一起的语言。它简单易学,却能让严苛的黑客为之倾心。我们希望它是交互式的,具备可编译性。 编程语言排行榜每月都有,排名前 10 常见 Java,JavaScript,Python,PHP 和 C#等,大家已不足为奇。但是在 RedMonk 的语言排行榜中,开源编程语言 Julia 成功引起了大家的注意,连续四个季度增长(52,40,39,36),本季度成功升至第36位。 与此同时,Julia 的开发人员在 Reddit 上参与了 AMA(As...
- 下一篇
PHP 现反序列化漏洞,或使 WordPress 遭远程攻击
英国安全公司 Secarma 的研究主管 Sam Thomas 本月在 Black Hat 和 BSides 安全会议上展示了 PHP 编程语言的安全漏洞,并指出该漏洞影响了所有接受用户资料的 PHP 应用程序和库,包括 WordPress 等内容管理系统(CMS),并将允许远程程序攻击。 序列化(Serialization)与反序列化(Deserialization)是所有编程语言都具备的功能,序列化将对象转换为字符串,以将数据迁移到不同服务器,服务或应用程序上,然后通过反序列将字符串还原到对象。 安全研究员 Stefan Essar 在 2009 年就透露了 PHP 中反序列化黑客控制的数据带来的风险,而相关的漏洞不仅存在于 PHP 中,还存在于其他编程语言中。 Thomas 公布的是 PHP 的新攻击技术,可用于各种场景,例如 XML External Entity(XEE)漏洞或服务器端伪造请求(SSFR)漏洞等。 Thomas 表示,过去外界认为XXE 漏洞带来的最大问题是信息外泄,但现在可出发程序执行。相关攻击分为两个阶段。 首先,将包含恶意对象的 Phar 存档上传到攻击...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Mario游戏-低调大师作品
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS8编译安装MySQL8.0.19
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7