一群产品经理讨论应用为何这么占内容,PMcaff产品经理社区潜伏的一大批技术能人给出了很好的答案。该问题的贡献者:原猎豹产品总监 胡国中,Google 资深RD 春哥,百度浏览器 资深RD 杨坤

有些硬盘比较小的用户或者是苹果手机容量比较小的的用户可能经常抱怨app或者安装的应用程序太大导致设备空间不够用。特别是微软Outlook为何要1G安装包,而foxmai只要60M,为何同样的竞品APP有的点160M手机空间,有的只占5M?下面为大家简单解释一下为什么有些app或者应用程序总是那么大。

1. 历史原因

为了兼容老版本或者一些旧有的用户习惯,可能会有一些旧的特性包含在里面,但是有的时候可能项目开发周期短,程序员哥哥是不会去动旧有的东西的,因为一旦牵涉到修改代码,成本是很高的;随便去掉一个功能点,需要考虑整个业务流程逻辑是否通顺完整,改完以后还需要QA再进行回归测试,就好像是从一整栋完整的大厦里面抽掉一块砖,一不小心就有瞬间崩塌的危险。

2. 为了适应不同的用户群体

比如像office光安装包就1G多,安装完成之后发现各种组件都已经给你装过了,包括什么ppt啊,visio啊各种乱七八糟的组件,excel里面甚至还包含了vbscript这类开发者用到的组件;正常人类只希望用一个文档或者excel的功能,office就会给你安装了这么一大堆东西。

3. 追求炫酷

有些app为了追求狂拽酷炫屌炸天的界面效果会使用一些精度比较高的资源(图片、音频、视频),让你看起来好像觉得很牛X的样子,但是这些资源图片占用了整个app容量的大头,其实二进制文件编译出来之后,把符号文件去掉,二进制的执行文件本身就是非常小的。

4. 第三方库

有些开发者为了图省事,会直接使用一些开源框架,比如做游戏需要用cocos2d, unity3d等,应用程序可能会用到reactjs等,这样子的好处是直接一套代码跨平台,节省了开发时间,提升了开发效率,但是这些第三方库本身是非常大的,因为第三方库它不知道你要用哪些功能,干脆把所有的东西一股脑都给你。

5. 用户数据

当用户使用这些app(应用程序)的时候会产生很多使用痕迹的,有些app(应用程序)就索性直接用完之后扔在某个地方不管了,比如说产生一些日志文件或者一些临时性的配置文件或者是一些数据记录,就跟随地扔垃圾的人一样讨厌,毫无节操可言。

看完上述种种,作为一个PM/RD肯定会有各种理由:我项目周期紧张啊、我的程序员哥哥不甩我啊、占用空间大小的事情只要不影响功能就行了啊、、、等,但是。。。这些都不能成为合理非法大量占用用户使用空间的理由,如何让自己的app更加轻快,更加好用,这才是作为一个有情怀的互联网人所需要追求的,而且是需要PM和RD共同努力的,下面给出我自己针对上述问题的一些建议:

1. 解耦你的程序:现在大家都是用的面向对象语言,如果你的程序的类不能拆分成一个最简单的功能,或者类依赖过多的类,肯定是很有问题的,需要程序员哥哥在写代码之前就要考虑清楚该如何做扩展,如何写基础模块,如何写业务模块,哪些功能做成一个单独的模块,模块里面每个类负责最小化什么样的解耦功能;最好把工具类拆分出来,工具类有可能又分为业务型工具类和通用型工具类,说不定可以用到以后的项目中。
类似Chrome的插件模型永远是客户端程序最经典的架构。推荐没事多看看《设计模式》,尽管你可能觉得过时了,不管时代怎么变化,有些基础的思想永远不会变。

2. 动态的加载所需要的库:如果做到了上一点,第二点就很好解决了,因为所有的模块都是热插拔模式的,可以根据用户的需要把一些不需要的功能模块删掉,保持占用空间最小化。

3. 尽量多用绘制库:现在的绘制库都是很牛X的了,各种算法都给你写好了,而且优化的非常好,只要运用得好,就不要去用一些图片去解决问题,经常用图片解决问题的程序员是很懒的,懒得去了解绘制库的用法,只要稍微多了解一下你的绘制库,基本上秒杀各种特效了。

4. 削减第三方库: 很多第三方库都包含了很多用不到的功能,把这些功能都去掉吧,这些东西哪天要用到再加上也是可以的,如果你不会削减证明你根本不了解你的生产环境,这样子是很可怕的;赶紧动起来,去了解你的底层。

5. 尽量把一些重要的用户数据自动上传到云端:比如一些最近的聊天记录,聊天记录中一些图片文件等最好也要存成ID号上传到业务服务器,图片另外用图床存都是可以的。还有一些用户的使用偏好配置等信息也要保存到云端,本地可以留少许的数据;我有一个朋友前两天发朋友圈说自己某信所有聊天信息都没有了(是个美女),不知道是咋回事,结果各种倒腾了一天终于搞好,但是损失的时间成本和沟通成本是无法估量的,由此可见像这种极端异常情况如果处理好了,带来的价值远远是高于做这些优化所付出的成本的。

最后建议一点,PM在日常开发过程中也需要把这些细节作为整个项目的一个需求去认真的落地,因为只有像这样才能够打磨出真正的精品。

注意:本文为PMcaff产品经理社区原创,转载请标明出处


更多推荐

回复“61”——马化腾内部分享:三个问题说透如何做产品

回复“62”——鸟哥笔记VS知乎刘锤:一个运营牛人的进化论

回复“63”——前苹果副总裁:20-40-60法则

回复“64”——鹅厂顶级产品课程:产品细节中的情感化设计

回复“65”——如何用互联网思维卖辣条

回复“66”——马化腾亲身分享:腾讯兵法教你做一款高口碑的产品

回复“67”——去哪儿产品总监:先解构,再设计,把握产品经理的核心竞争力

回复“68”——一份优秀的竞品分析报告的撰写方法

回复“69”——阿里收购惊人内幕,支付宝出大招颠覆式创新-人人都是ATM

回复“70”——你的微信朋友圈让你焦虑了吗?

原创或推荐文章请发送至邮箱:xiaoxi@pmcaff.com

PMcaff合作媒体:Chinaz

产品研究:安装程序 或 移动端APP 为什么这么占用空间?相关推荐

  1. 使用第三方安装程序将Windows桌面应用打包

    使用第三方安装程序将桌面应用打包 - MSIX | Microsoft Docs Advanced Installer Express Edition Development (wixtoolset. ...

  2. 啦啦外卖公众号+小程序 V43.0开源至尊独立版+独家用户授权升级+小程序端+APP源码+小程序端VUE源码安装教程

    啦啦外卖跑腿平台开源至尊独立稳定版公众号+小程序 V43.0版系统为独立开源版,最大优势全开源,使用的都知道该系统功能非常强大,是目前外卖平台功能最全的一套系统.拿来即用,也非常合适做二开的朋友,包括 ...

  3. 移动端--app,小程序,h5

    ## 1.app: 一个应用程序,常见的手机系统有鸿蒙.安卓.IOS:在功能方面,App更加完整,灵活性更强.正规的App需上架IOS的AppStore和安卓应用市场,由中央网信办.工业和信息化部.公 ...

  4. 安装VMware时警告此产品安装程序不支持降级

    安装VMware时警告此产品安装程序不支持降级 安装VMware出现下面的情况 原因就是你之前安装了,没有卸载完 现在我们利用工具卸载(百度网盘下载工具) 链接:https://pan.baidu.c ...

  5. android 程序 读logo,Android端APP更换logo和名称后都需要些测试哪些内容呢?

    原标题:Android端APP更换logo和名称后都需要些测试哪些内容呢? 之前有人在搜狗测试粉丝群中问过APP更换logo和名称后需要怎么测试呢?小编正好经历过这样的需求,下面来系统整理一下APP更 ...

  6. 无法打开此修补程序包”或“这个产品的安装来源无法使用”解决(转)

    机器上的office突然不能用了,一点就提示无法打开此修补程序包"或"这个产品的安装来源无法使用". 本来想卸载了重装,可是卸载不掉. 网上找了下,找到了解决的方法. 步 ...

  7. 智慧楼宇管理运营端app、运维管理、工单管理、报修管理、维保管理、巡检查询、巡检管理、能源管理、维保查询、智慧社区、巡检统计、工单统计、能源管理、智能楼宇、设备监控、智能社区、系统运营、楼宇运维小程序

    智慧楼宇管理运营端app.运维管理.工单管理.报修管理.维保管理.巡检查询.巡检管理.能源管理.维保查询.智慧社区.巡检统计.工单统计.能源管理.智能楼宇.设备监控.智能社区.系统运营.楼宇运维小程序 ...

  8. uniapp开发:瀑布流 灵活配置 简单易用 兼容vue2vue3小程序、H5、app等多端

    概要 支持的平台 使用方式 属性说明 事件说明 组件方法 refresh的使用示例 隐藏单项图片示例 完整示例 温馨提示 关注我,不迷路 概要 custom-waterfalls-flow是一个瀑布流 ...

  9. 骑手app、配送、外卖送餐、自动接单、进行中、待接单、移动端app、高保真原型、Axure原型、配送里程、结算、取货、送货、送餐订单、外卖平台、送餐小程序、外卖app、点餐平台、移动端骑手app

    骑手app.配送.外卖送餐.自动接单.进行中.待接单.移动端app.高保真原型.Axure原型.配送里程.结算.取货.送货.送餐订单.外卖平台.送餐小程序.外卖app.点餐平台.移动端骑手app Ax ...

最新文章

  1. scrapy的几个文件属性
  2. 战略资产配置matlab,资产组合有效前沿的解和最优解(MATLAB语言)
  3. DPDK pci驱动探测(十八)
  4. python3.6小程序_python3.6 tkinter实现屏保小程序
  5. 算法工程与计算机科学,合并的分水岭算法-计算机工程与科学.PDF
  6. 常见回归和分类损失函数比较
  7. QT的QGraphicsItemGroup类的使用
  8. 系统学Android从零开始,搞懂这些直接来阿里入职
  9. springboot 创建地址_使用 SpringBoot Admin监控Spring Boot 服务
  10. android xml图片旋转,如何在Android中进行平滑的图像旋转?
  11. 深度学习三巨头共获 2018 年图灵奖(经典重温)!
  12. 软件测试是什么,测试从一个点出发。
  13. 课堂练习--最大子数组和
  14. POJ 2449 Remmarguts' Date (SPFA + A星算法) - from lanshui_Yang
  15. 使用企业邮箱的好处优点
  16. JavaScript监听浏览器刷新或是关闭事件
  17. QT 中控件内坐标转换为父窗口坐标或屏幕坐标
  18. HTML和CSS面试题—整理过的48题,关注收藏,持续更新
  19. MacOS 64位GaussView5的破解
  20. linux怎么把dos改成unix_Linux命令之dos2unix – 将DOS格式文本文件转换成UNIX格式

热门文章

  1. CNCF 公布 2020 年 TOC 选举结果 | 云原生生态周报 Vol. 36
  2. Java 并发编程-不懂原理多吃亏(送书福利)
  3. 实现同步请求_Redis的复制是如何实现的?
  4. 鸿蒙系统会支持youtube吗,华为鸿蒙系统,会受到人们的欢迎吗?
  5. element 表格单元格内容不换行_实例29_在Word表格中将上下行相同内容的单元格自动合并...
  6. flink sql udf jar包_FlinkSQL 动态加载 UDF 实现思路
  7. ie8 js未指明的错误_修复ueditor百度编辑器在IE8下shCore.js报错'undefined'错误的问题...
  8. linux的python2.7的paramiko_Python使用paramiko操作linux的方法讲解
  9. jq 通过标签名称获取标签_怎样利用tag标签来获取长尾关键词排名
  10. 【技术综述】人脸妆造迁移核心技术总结