加入收藏 | 设为首页 | 会员中心 | 我要投稿 盐城站长网 (https://www.0515zz.cn/)- 运维、云管理、管理运维、智能数字人、AI硬件!
当前位置: 首页 > 站长资讯 > 传媒 > 正文

从GitHub上看到了编程语言八年变迁史

发布时间:2021-02-12 13:11:27 所属栏目:传媒 来源:互联网
导读:好了,我相信你已经知道这个系统是用来干嘛的了。那为什么要有这个系统呢? 为什么要有消息管理平台? 可以说,只要是做APP的公司几乎都会有消息管理平台。 我们很多时候都会想给用户发消息: 有可能是用户想要这样的功能(预约活动提醒通知) 也有可能是我们想

好了,我相信你已经知道这个系统是用来干嘛的了。那为什么要有这个系统呢?

为什么要有消息管理平台?

可以说,只要是做APP的公司几乎都会有消息管理平台。

我们很多时候都会想给用户发消息:

  • 有可能是用户想要这样的功能(预约活动提醒通知)
  • 也有可能是我们想通过发消息来「唤醒」/「告知」等操作,告诉用户我们还在(大爷来玩啊)

那么问题来了,发消息困难吗?发消息复杂吗?

显然,发消息非常简单,一点儿也不复杂。

发短信无非就是调用第三方短信的API、发邮件无非就是调用邮件的API、发微信类的消息(手Q/小程序/微信服务号)无非就是调用微信的API、发通知栏消息(Push)无非就是调APNS/手机厂商的API、发IM消息也可以使用云服务,调云服务的API...

可能很多人的项目都是这么干的,无非发条消息,自己实现也不是不可以。

但这样会带来的问题就是在一个公司内部,会有很多个项目都会有「发送消息」的代码实现。假设发消息出了问题,还得去自己解决。

首先是系统不好维护,其次是没必要。我一个搞广告的,虽然我要发消息,凭什么要我自己去实现?

我们在写代码时,可能会把公用的代码抽成方法,供当前的项目重复调用。如果该公用的代码被多个项目使用,可能我们又会抽成组件包,供多个项目使用。只要该公用的代码被足够多的人去用,那它就很有可能从组件上升为一个平台(系统)级的东西。

如何实现消息管理平台?

回到消息管理平台的本质,它就是一个可以发消息的系统。那怎么设计和实现呢?我们从接口说起吧。

接口设计

消息管理平台是一个提供消息发送服务的平台,如果让我去实现,我的想法可能是把每种类型的消息都写一个接口,然后把这些接口对外暴露。

所以,可能会有以下的接口:
 

自上而下的代码分析

最近,刚好因为项目的关系,需要分析某一系统的代码行数。通过一系列的复制 + 粘贴和 Excel 操作,我大致有了一套 DIY 的自动化分析方案:自上而下的代码分析。当然了,这肯定不是我先发明的,在某处一定有论文和代码、工具。只是我依据自己的想法和需求,完善了一下现有的方案。要知道,已经有大量地代码分析工具了。

其实总体的思路非常简单:项目行数 -> 包行数 -> 修改历史 -> 引用分析。

具体来说,就是:

  1. 通过代码行数(LOC)统计工具,统计总体的代码情况。
  2. 结合代码行数(LOC)统计工具,统计各个包的代码情况
  3. 获取 Git 提交历史,统计出经常修改的包或者是类。
  4. 构建语法树、制品(如 jar)分析,统计出引用次数最多的包。

唯一麻烦的地方就是做一些自动化。所以,这些功能就被我完善到 Coca 里了,笑~。

好了,让我们来看个示例。这里以开源项目 intelli-community (即 IDEA 的社区版)为例。

项目级代码行数

市面上已经有大量的行数统计工具,大家可以自行寻找。这里我用的是 Coca (GitHub:https://github.com/phodal/coca ),集成了三方用 Go 实现的 CLOC 统计功能。

首先呢,我们要实现的是分析整个项目的行数情况 coca cloc . :

(编辑:盐城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读