Review&Refactor 张 戈 在短拍这边主要工作的总结

Slides:



Advertisements
Similar presentations
四川财经职业学院会计一系会计综合实训 目录 情境 1.1 企业认知 情境 1.3 日常经济业务核算 情境 1.4 产品成本核算 情境 1.5 编制报表前准备工作 情境 1.6 期末会计报表的编制 情境 1.2 建账.
Advertisements

主编:邓萌 【点按任意键进入】 【第六单元】 教育口语. 幼儿教师教育口 语概论 模块一 幼儿教师教育口语 分类训练 模块二 适应不同对象的教 育口语 模块三 《幼儿教师口语》编写组.
第一組 加減法 思澄、博軒、暐翔、寒菱. 大綱 1. 加減法本質 2. 迷思概念 3. 一 ~ 七冊分析 4. 教材特色.
海南医学院附 院妇产科教室 华少平 妊娠合并心脏病  概述  妊娠、分娩对心脏病的影响  心脏病对妊娠、分娩的影响  妊娠合病心脏病的种类  妊娠合并心脏病对胎儿的影响  诊断  防治.
植树节的由来 植树节的意义 各国的植树节 纪念中山先生 植树节的由来 历史发展到今天, “ 植树造林,绿化祖国 ” 的热潮漫卷 了中华大地。从沿海到内地,从城市到乡村,涌现了多少 造林模范,留下了多少感人的故事。婴儿出世,父母栽一 棵小白怕,盼望孩子和小树一样浴光吮露,茁壮成长;男 女成婚,新人双双植一株嫩柳,象征家庭美满,幸福久长;
客户协议书 填写样本和说明 河南省郑州市金水路 299 号浦发国际金融中 心 13 层 吉林钰鸿国创贵金属经营有 限公司.
浙江省县级公立医院改革与剖析 马 进 上海交通大学公共卫生学院
第二章 环境.
教师招聘考试 政策解读 讲师:卢建鹏
了解语文课程的基本理念,把握语文素养的构成要素。 把握语文教育的特点,特别是开放而有活力的语文课程的特点。
北台小学 构建和谐师生关系 做幸福教师 2012—2013上职工大会.
福榮街官立小學 我家孩子上小一.
第2期技職教育再造方案(草案) 教育部 101年12月12日 1 1.
企业员工心态管理培训 企业员工心态管理培训讲师:谭小琥.
历史人物的研究 ----曾国藩 组员: 乔立蓉 杜曜芳 杨慧 组长:马学思 杜志丹 史敦慧 王晶.
教育部高职高专英语类专业教学指导委员会 刘黛琳 山东 • 二○一一年八月
淡雅诗韵 七(12)班 第二组 蔡聿桐.
第七届全国英语专业院长/系主任高级论坛 汇报材料
小數怕長計, 高糖飲品要節制 瑪麗醫院營養師 張桂嫦.
制冷和空调设备运用与维修专业 全日制2+1中等职业技术专业.
歷史報告 自強運動 指 導 老 師: 盧雨芯 製 作 簡 報: 第三組
会计信息分析与运用 —浙江古越龙山酒股份有限公司财务分析 组员:2006级工商企业管理专业 金国芳 叶乐慧 魏观红 徐挺挺 虞琴琴.
組員:何浚壟4990Y031 詹昀蓉4990Y052 林怡汝4990Y053 黃亦雯4990Y055 王宜珺4990Y056
第六章 人体生命活动的调节 人体对外界环境的感知.
芹菜 英语051班 9号 黄秋迎 概论:芹菜是常用蔬菜之一,既可热炒,又能凉拌,深受人们喜爱。近年来诸多研究表明,这是一种具有很好药用价值的植物。 别名:旱芹、样芹菜、药芹、香芹、蒲芹 。 芹菜属于花,芽及茎类。
2012年 学生党支部书记工作交流 大连理工大学 建工学部 孟秀英
北京市职业技能鉴定管理中心试题管理科.
2014吉林市卫生局事业单位招聘153名工作人员公告解读
彰化縣永靖國小 504公益行動PPT.
各類所得扣繳法令 與申報實務 財政部北區國稅局桃園分局 103年9月25日
一、宴會含義 二、宴會作用 三、宴會特徵 四、宴會類型
105學年度國民中學技藝教育 專案編班申辦說明會
日月光·伯爵居项目介绍.
香港故事之 三年零八個月的艱苦歲月 組員: 梁珮瑩 吳遠莉 李琪 李青儀 方松皓.
地方教育發展基金簡介 新北市政府教育局 王麗真
谷雨节气模板.
学龄前儿童(3-6)行为与社会环境 组长:吾尔克西 讲述人:张紫桓 ppt制作:管吉 熊萌 资料收集:徐琰 李捷羚.
订单合并拆分功能详解 荷叶.
紓壓腹部撇步 彭易璟 老師 第10組 4A055935林資淳 4A155002詹柏廷 497C0095林千慈 498J3041 郭人慈.
指導老師:黃怡瑾老師 組員:喻紹嫻、蔡穎邵、邱韋竣、 吳燿明、陳俊宏、林雅婷
我的故事 ————往事回首.
工程物业部6月安全检查报告 无锡红星商业管理有限公司.
郭子光教授从肺肾虚损辨治早中期慢性肾功能不全的经验
女生成功靠什么? 09英本四班 傅柏双.
征 管 改 革 的 变 化 您感受到了吗 (纳税服务版) 开封市地方税务局宣 尊敬的纳税人,尊敬的领导,同志们大家好:
国际投资环境罗氏评级法 美国.
“创业之星”创新创业大赛经验分享 ---盛弘电气,丑小鸭变天鹅的故事 罗涛 2009年“创业之星”创新创业大赛负责人 国际事业部总监
社会保障学 第5章 失业保险.
主 题 班 会 团 结   协 作    力 量.
理想.
2015年第二学期“教研组长与教学常规”培训 静思笃行 持中秉正.
大学生常见心理问题 及其原因分析 09本日2班.
菜市場巡禮 四財三A 4980S030 王靖智 4980S070 陳婉莉 4980S071 蘇可芸 4980S075 陳惠卿
固定与搬运技术 义乌市中心医院 陈红卫.
♔乙武洋匡♔.
中鸣虚拟搜救比赛项目 (一人) 现场主题创作(40%)(一人) 3D虚拟搜救(60%)(一人).
主題:轉換時刻 班 級:四進幼保三A 指導教授:葉雅惠 老師 組 別:第一組 組 員: 劉婉瑜 王美能
案例分析 胎记美容记 第6小组
录入准备: 地址: 密码:
婚姻與家庭-田野調查 音樂二 第一組 S 沈蝶衣(組長) S 林長欣 S 余俐瑾
人生五色臉 年輕十歲必學的小動作,九個保持身體健康的的小訣竅 人們常在不經意間做些小動作,並認為這是身體的本能反應,
创办紫金矿业学院 为培养中国一流的矿业人才助力 ——合作创办紫金矿业学院的思路与实践
2015学年第一学期 探究型课程专题培训 社会实践阅读领航 教育处
我的职业生涯规划 林丽瑶 11英语商务班 去除PPT模板上的--无忧PPT整理发布的文字 首先打开PPT模板,选择视图,然后选择幻灯片母版
指導老師:支紹慈 老師 組員: 4990C048張祺峻 4990C029劉俊睿 4990C043翁廷翰 4990C021陳亮瑜
2018年安徽工程大学大学生高分子材料创新创业大赛
優良TA分享 分享人: 擔任???系(科、所)???老師TA.
WPS Office 酷 · 自由 DESIGNER:MING 2012年12月12日.
機構督導: 范盛翔 督導 實習生: 佛光大學社會學系江佳穎 實習日期: 7/1(二)~8/29(五)
基础信贷法律知识 讲解人:岳杨.
Presentation transcript:

Review&Refactor 张 戈 2015.12.05 在短拍这边主要工作的总结 来YY这么久了就没有写过一些实际性的PPT(分享给大家看) 张 戈 2015.12.05

目录 工作概述 视频生产流程重构 断点续传 本地视频 录制 编辑发布

工作概述 搜索本地视频 滤镜编辑 话题分类 录制视频 配乐编辑 平台分享 图片合成视频 标签编辑 发布上传 欢聚云SDK 录制、转码、截图 视频特效 续点上传 HttpRequestManager BS2欢聚云点播服务 后端支持 神曲Web后端服务 神曲Service后端服务

重构做了什么 从录制到发布的流程控制设计 断点续传状态机 录制,编辑的MVP模式 本地视频搜索 其他小点: 去掉废弃的业务代码,更改不规范的变量命名,方法命名,类名,布局文件名,布局id名,规范化所打的日志,包括等级,适当的时机,日志的标记,延迟加载view,布局overdraw问题,层级优化…………. Core层一些sdk的回调,http网络回调,协议回调,FileRequest的回调,都是使用UI线程的Handler处理的,如果我们的操作不涉及UI,就用ScheduleTask来处理。 每重构一个地方都要跑一次测试,并通知测试进行回归。 一直都在改善代码,从未停止………

重构前存在的问题 毫无面向对象的思想,尽管我知道,但是代码里面全都是面向过程的步骤,何来封装?何来抽象?何来多态?何来继承?只会模块化分成多个方法(函数),或者抽取一些通用的代码到工具类里面去而已。 所有的代码都写在同一个类里面去了,录制两千多,编辑三千多,发布一千多,上传两千多,cameracore三千多 虽然有把代码抽离成多个类,那纯粹是类的抽离而已,没有做到真正的模块独立性,时间长了依旧会变成几千行,耦合性依然越来越大。 在开发需求的时候,速度很快,很直观,流程化地完成工作,毕竟同步总比异步易于理解,代码也易读,但是时间久了,需求再反复地变化了,出现bug维护起来简直痛不欲生,完全忘记了之前为什么写这么烂的代码,如果让下一个人接受,肯定得到一篇骂声。 这不是知识,也不是智商的问题,是态度和意识问题,总是想着现在简简单单完成需求功能,没有意识到怎么去设计让自己的代码更加合理。不要等到以后重构再做这样的工作,带来的开发和测试成本也不低

视频生产流程 话题 大于2M才转码,后来改成所有都转码 本地视频 转码 带有话题和跳转路径? 区分合成的视频有没有加特效 放弃编辑? 首页等入口 录制 编辑 合成 发布 只保存录制的高清视频? 放弃发布? 带有话题,发布成功回到本页面? 保存本地/发布 图片合成 本地作品 web

出现问题 逻辑复杂,不好理解,原本只是一个简单的流程却变得极其复杂 耦合度太高了,牵一发而动全身,之前温灿改一下代码就导致本地视频被删除了。 实在不易于维护和扩展,假设需求又增加一个入口,那么又必须去修改后面流程的每一个步骤,并且不能应该影响到原有的功能 ………

重构的设计原则 解决方法: 注意录制,本地视频,本地作品,图片合成,编辑,发布这些都是独立的模块,是需求只是调用这些模块来完成视频的生产发布而已。于是想到工作流的模式,但是这些模块都是Activity的界面,是系统管理的,想要在工作流中用拦截器是比较困难的,想用代理模式的,但是代理activity是插件化的黑科技,引进的东西会比较多。 最后采用的是策略模式,一个工作流也就是一个模块,或者多个模块组成的策略流程,这有点像递归的抽象思想,比较像进程的fork机制,父进程可以跟子进程通信,这里的父workflow也是可以跟子workflow通信的。 这肯定是把简单的东西复杂化了的,不然就不叫设计模式了。 低耦合,高内聚。每个模块都只干自己的事情,所有的控制都交给策略。 在不改变原来的逻辑前提下新增逻辑,而且不会引入新bug。 并不是说简单调几行代码就是很好的设计了,那样耦合的逻辑太多了,容易出现问题,虽然是看起来开发简单,实际上带来的维护成本很高了。更好的方式是开放更多扩展性的接口让开发者去编程,而不是写几行代码来调用方法。 工作流策略只是控制工作流,入口跟出口参数,未来如果可能希望重构策略可以控制界面。 父工作流策略知道子工作流采用什么策略,实际是父工作流指定子工作流的。 代码会越来越多,但是多而不乱,新增一个需求的成本比以前(仅调用方法)要高,但是带来的维护成本低。

工作流+策略控制 工作流 录制策略 编辑策略 发布策略 …….. 录制模块 编辑模块 发布模块 录制完成以后直接分享出去,或在IM发出去,或直接上传,或直接发布 编辑完成以后直接发布上传 直接编辑某视频 直接发布某视频 假设编辑完成以后,红灿有一个奇葩需求,再进行一次编辑处理,那么就需要新增加一个模块了。 ……..

断点续传 总体的短视频上传和发布设计归纳为下图

上传有限状态机

END Thank you