网易实习第一阶段简单回顾
2016-08-20 11:56
190 查看
前几天顺哥面试的时候碰到HR明确说我转正答辩通过,趁此机会对这段时间的工作做个梳理。面试经历之前在已经在 Android实习生面试记录-蘑菇街、网易等 写了,结果就是网易发了offer,蘑菇街拿到终面机会但是我没去面:5月4号入职网易,同时蘑菇街通知5月5号现场终面(第五面...)。那天上午办完入职手续后顺哥来接,正在电梯间接到蘑菇街HR电话确认是否能够去终面,根本不确定是否可以请假&感觉刚入职又去面试不大好就拒了。过了几个礼拜蘑菇街HR又给我打电话说北京有面试问我去不去,虽然感动但还是拒了。
开始阶段
入职第一天,领机器配环境,自由网络一切都很爽。完事后老大扔了一本Clean Code 给我看了两天,笔记: [读书笔记]Clean
Code (1-8章),[读书笔记]Clean Code (8-完结)。之后就是熟悉工程源码看看git提交规范什么的,一周时间在周会的时候做了个汇报。项目还是蛮大的,当时住公司晚上待到九十点走也仅仅是看了个皮毛,深入细节的话一个礼拜还是不够的。汇报的时候也列出了我看源码的步骤还画了个大大的类图(第一次尝试
![](http://img.blog.csdn.net/20160820115921004?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
开发阶段
1. 企业云课堂
了解了怎么提代码,怎么写代码以及熟悉了项目源码后,正好又要开始新的需求。顺哥分了点任务给我,叫我先做设计。这点是与我之前写代码是很不一样的,一种“野路子”碰上正规军的感觉。以前自己做项目,基本就是把功能确定在纸上大概画画UI,然后脑子稍微想想怎么实现哪些地方可以复用大概的架子是怎样的就开始写代码了。有时候遇到问题就边做变查,甚至半路发现之前没有考虑到的点但却发现一时半会解决不了可能就可耻地改需求了。反正是自己做的东西,既是运动员又是裁判员~_~
对于一些书上讲的UML不屑一顾,嫌麻烦。但现在不一样,我面对的是一个商业产品:需求是确定的,不能说改就改;你需要对你的每一行代码负责,保证产品完成的质量。就这样开始了第一次开发的设计。
其实还好,这次做的是
网易云课堂企业版的第一个版本。企业版是针对企业的相对于线上的网易云课堂业务复杂度更小,好多东西都是可以复用的。因此也将相关的代码深入看了下,主要对比不同的地方,另外看当前的代码有哪些可以借鉴以及改进的点。照着这个思路做了自己的设计,在此期间@HY 同学也是提供了很大的帮助。设计的同时还要和后端沟通定接口。弄完后给顺哥看毫无悬念地——被打回来了。主要是UML详略不得当,一些关键的点没有体现出来。改过之后基本符合要求过了设计评审,然后还是在@HY的帮助下进行了项目排期。时间还算充裕,给了八天的时间,两天buffer。最后在规定时间内页完成了功能的开发,效果如下:
![](http://img.blog.csdn.net/20160820120017137?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
接下来是提测,但是我要滚回去准备期末考试,也就是说人跑了,bug留下来了。
回公司的时候也快要上线,我负责的那部分有两个bug,这两个bug倒不是代码逻辑不对,而是需求。
1. 在无数据的情况下,显示的图标不对。这个是因为没有和策划确认明确需求,自己想当然了
2. 遗漏了一个补充需求,这个锅我背一半 因为稿子上是没有明确在对应的页面标注的,而是写在最后面的补充说明里边。当然,这个以后也是特别要注意的
2. 代码静态检查
做完第一波需求后正好部门对代码质量提出了更高的要求,我们的提交的代码,每三个小时就会被程序自动检查一次,对于不合格的代码都会按照不同的严重级别进行标出。我的任务便是消灭严重级别较高的代码。所谓不合格代码基本是Clean Code,重构等书上讲的,细致到变量的命名不符合要求,if嵌套超过三层都会标出。工程量较大,着实 花了不少时间。不过这次也算对Clean Code的一个回顾吧。
3. 企业版换肤
做企业版1.0的时候视觉给的稿子将主色调从绿色改成了蓝色,由于我们两份代码是要共用,直接简单粗暴的改是不可取的。开始想了两个方案:
1. 采用Google的主题切换 它要求我们不能使用硬编码,改动会比较大 另外如果我们后续想把它做成动态更换是受限 的:切换主题的时候由于需要重启当前Activity,会产生闪屏,这是不能容忍的。
2. 遍历所有的View,对View的颜色进行动态改变。 这种方案不会造成闪屏,但是工作量大,侵入性太强。
以上两种方案均被否决,第三种方案被提出: 插件化换肤
PS: 左边是几个相关的概念: 插件化、组件化、动态加载
右边是Android插件化的应用
![](http://img.blog.csdn.net/20160820120101732?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
我们把图片/颜色 资源打包成一个插件Apk,然后用定义好的语法规则建立View和资源的对应关系生成一个配置文件。换肤的时候我们只需从插件中获取资源,然后将App中的View根据配置文件进行主题切换。这种方案有两个明显的优点:
1. 侵入性小,基本不需要对原有的代码进行太多更改,一次部署完成之后,以后想换其他主题只需再打包个插件并对 配置文件进行简单修改即可
2. 拓展性强,支持动态换肤,如果以后想直接从服务器下发资源进行换肤只需再整合下载模块即可
方案敲定后,顺哥给了详细的设计,大概就像下面这样(仅是我修改并简化的粗略类图)
![](http://img.blog.csdn.net/20160820120137427?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
后续的编码及部署也是花了不少功夫,完工效果如下
![](http://img.blog.csdn.net/20160820120216843?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
总结
这三个多月的实习,自己在工作方式思考方式变化较大:
1. 一切以事实说话,你需要拿出明确的理由说服他人
2. 没有模棱两可,没有想当然,确认后再动手
3. 设计要落实到纸上,而不是"应该是什么"
4. 对设计模式有了不一样的见解,浅浅地开始不是为了"模式"而"模式"
下面是自己对技术和产品的展望:
1. 技术
![](http://img.blog.csdn.net/20160820120250552?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
2. 产品
![](http://img.blog.csdn.net/20160820120321814?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
~~~~~~~~~~~~~~~~~~~ 这仅仅是个开始,第一阶段 ~~~~~~~~~~~~~~~~~~~~~
出处: http://blog.csdn.net/mummyding/article/details/52260513
GitHub地址: https://github.com/MummyDing/Leisure/
开始阶段
入职第一天,领机器配环境,自由网络一切都很爽。完事后老大扔了一本Clean Code 给我看了两天,笔记: [读书笔记]Clean
Code (1-8章),[读书笔记]Clean Code (8-完结)。之后就是熟悉工程源码看看git提交规范什么的,一周时间在周会的时候做了个汇报。项目还是蛮大的,当时住公司晚上待到九十点走也仅仅是看了个皮毛,深入细节的话一个礼拜还是不够的。汇报的时候也列出了我看源码的步骤还画了个大大的类图(第一次尝试
开发阶段
1. 企业云课堂
了解了怎么提代码,怎么写代码以及熟悉了项目源码后,正好又要开始新的需求。顺哥分了点任务给我,叫我先做设计。这点是与我之前写代码是很不一样的,一种“野路子”碰上正规军的感觉。以前自己做项目,基本就是把功能确定在纸上大概画画UI,然后脑子稍微想想怎么实现哪些地方可以复用大概的架子是怎样的就开始写代码了。有时候遇到问题就边做变查,甚至半路发现之前没有考虑到的点但却发现一时半会解决不了可能就可耻地改需求了。反正是自己做的东西,既是运动员又是裁判员~_~
对于一些书上讲的UML不屑一顾,嫌麻烦。但现在不一样,我面对的是一个商业产品:需求是确定的,不能说改就改;你需要对你的每一行代码负责,保证产品完成的质量。就这样开始了第一次开发的设计。
其实还好,这次做的是
网易云课堂企业版的第一个版本。企业版是针对企业的相对于线上的网易云课堂业务复杂度更小,好多东西都是可以复用的。因此也将相关的代码深入看了下,主要对比不同的地方,另外看当前的代码有哪些可以借鉴以及改进的点。照着这个思路做了自己的设计,在此期间@HY 同学也是提供了很大的帮助。设计的同时还要和后端沟通定接口。弄完后给顺哥看毫无悬念地——被打回来了。主要是UML详略不得当,一些关键的点没有体现出来。改过之后基本符合要求过了设计评审,然后还是在@HY的帮助下进行了项目排期。时间还算充裕,给了八天的时间,两天buffer。最后在规定时间内页完成了功能的开发,效果如下:
接下来是提测,但是我要滚回去准备期末考试,也就是说人跑了,bug留下来了。
回公司的时候也快要上线,我负责的那部分有两个bug,这两个bug倒不是代码逻辑不对,而是需求。
1. 在无数据的情况下,显示的图标不对。这个是因为没有和策划确认明确需求,自己想当然了
2. 遗漏了一个补充需求,这个锅我背一半 因为稿子上是没有明确在对应的页面标注的,而是写在最后面的补充说明里边。当然,这个以后也是特别要注意的
2. 代码静态检查
做完第一波需求后正好部门对代码质量提出了更高的要求,我们的提交的代码,每三个小时就会被程序自动检查一次,对于不合格的代码都会按照不同的严重级别进行标出。我的任务便是消灭严重级别较高的代码。所谓不合格代码基本是Clean Code,重构等书上讲的,细致到变量的命名不符合要求,if嵌套超过三层都会标出。工程量较大,着实 花了不少时间。不过这次也算对Clean Code的一个回顾吧。
3. 企业版换肤
做企业版1.0的时候视觉给的稿子将主色调从绿色改成了蓝色,由于我们两份代码是要共用,直接简单粗暴的改是不可取的。开始想了两个方案:
1. 采用Google的主题切换 它要求我们不能使用硬编码,改动会比较大 另外如果我们后续想把它做成动态更换是受限 的:切换主题的时候由于需要重启当前Activity,会产生闪屏,这是不能容忍的。
2. 遍历所有的View,对View的颜色进行动态改变。 这种方案不会造成闪屏,但是工作量大,侵入性太强。
以上两种方案均被否决,第三种方案被提出: 插件化换肤
PS: 左边是几个相关的概念: 插件化、组件化、动态加载
右边是Android插件化的应用
我们把图片/颜色 资源打包成一个插件Apk,然后用定义好的语法规则建立View和资源的对应关系生成一个配置文件。换肤的时候我们只需从插件中获取资源,然后将App中的View根据配置文件进行主题切换。这种方案有两个明显的优点:
1. 侵入性小,基本不需要对原有的代码进行太多更改,一次部署完成之后,以后想换其他主题只需再打包个插件并对 配置文件进行简单修改即可
2. 拓展性强,支持动态换肤,如果以后想直接从服务器下发资源进行换肤只需再整合下载模块即可
方案敲定后,顺哥给了详细的设计,大概就像下面这样(仅是我修改并简化的粗略类图)
后续的编码及部署也是花了不少功夫,完工效果如下
总结
这三个多月的实习,自己在工作方式思考方式变化较大:
1. 一切以事实说话,你需要拿出明确的理由说服他人
2. 没有模棱两可,没有想当然,确认后再动手
3. 设计要落实到纸上,而不是"应该是什么"
4. 对设计模式有了不一样的见解,浅浅地开始不是为了"模式"而"模式"
下面是自己对技术和产品的展望:
1. 技术
2. 产品
~~~~~~~~~~~~~~~~~~~ 这仅仅是个开始,第一阶段 ~~~~~~~~~~~~~~~~~~~~~
出处: http://blog.csdn.net/mummyding/article/details/52260513
GitHub地址: https://github.com/MummyDing/Leisure/
相关文章推荐
- 嵌入式GUI设计第一阶段回顾
- 实习第一阶段结束了
- 实习第一阶段总结
- kernel启动流程第一阶段简单说明
- 软件工程&软件专业实习第一阶段结束
- 超级接入系统构建(1)第一阶段简单原型(SuperAccess)
- 自己动手写第一阶段的处理器(1)——计算机的简单模型、架构、指令系统
- 2017网易游戏春招实习笔试回顾(机器学习工程师岗)
- 实习感想之第一阶段
- uboot第一阶段start.s简单分析
- Android摄像头基础——第一阶段 简单利用系统相机并且获取照片
- kernel启动流程第一阶段简单说明
- 自己动手写处理器之第一阶段(1)——计算机的简单模型、架构、指令集
- 2016网易游戏暑假实习第一场·第一题
- 嵌入式GUI设计第一阶段回顾
- 模块管理常规功能自定义系统的设计与实现(20--第一阶段回顾)
- NTES 网易游戏笔试题(2018实习笔试题第二题,2018秋招补招第一题)
- 自己动手写处理器之第一阶段(3)——MIPS32指令集架构简单介绍
- 中科院实习(1) -- 第一印象