携程工作感言(一)(6.30)

来携程也快有一个月了,趁着月底6.18版本已经上线,6.19刚刚开始,做一下总结,能方便我更快更踏实的前进~
---------我是愉快的分割线-------------------
day1:
在公司的机子上安装android studio,配置gradle,sdk,ndk
使用命令行处理git,并clone git上的最新版本代码
熟悉内部的各个网站,开发环境,测试环境等
day**:
然后就开始了熟悉代码阶段,嗯,我携果然功能众多,所以,代码实在是个硬骨头,即使不用了解全部,只用看其中一个部门的代码对于我也很吃力,然后技术专家亲自教我如何debug,学到了很多吃饭的本领⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄
1、熟悉代码时,熟悉业务的最快方法时自己使用应用跑一边,知道流程
(参数传递,方法间的关联,服务器下发的东西要处理好,使用debug最快,最详细,还可以知道参数的变化。不过debug有很多技能点,要知道断点的准确位置,要知道各个快捷键,知道跟踪)
(可以通过画时序图(花了几天debug了解了查询页,酒店标签数据显示,订单详情页,酒店列表页的步骤和参数传递)的方法去了解大局,毕竟没有办法一天看完代码,第二天有时候会忘记之前的东西)
option+command+r:结束当前断点,调到下一断点
option+f7:调用此对象的方法查询
option+command+L:格式化代码
3、熟悉使用到的model参数和暂存的cachebean
4、http://www.jianshu.com/p/f07e7436a7de git里撤销的所有操作命令,方便粗心的小伙伴
http://zhidao.baidu.com/link?url=bKqSTdg39NCdJloeqkponz5HD-IgqbIu4y2WhkJtLOlq0GfiRtGiD1IKlP_Ug8RdgA7xnLEtZuQk3qr_EY1aCfNw450rhKjM68bFbQKlpj7 git里提交命令
day16:
今天开了总结会,有些感悟
1、养成良好的编码习惯,一般公司会有系统专门查一些不规范的写法,与其之前不注意后面被查出来再改,不如之前就一步步做好
2、要敬畏代码生产,不要轻率对待,简洁和实用是主要的
3、要不断学习,代码水平和鲁棒性,新的架构和技术要多看看
4、通过code review,冒烟检查,解耦,监控和日志对问题进行预防处理
5、出现问题不要急,排障,回滚,故障转移,降级使用都是方法
day17–20:
1、痛苦的debug去了解我携sql的使用过程,一步步弄清楚数据怎么存的,怎么取的,怎么转换的,在哪里定义的,在哪里查询的,查询语句是啥。 handler和cursor的使用理解(督促自己弄个详细使用文章出来)
2、例会:团队的问题:
(1)执行力不够:小问题没有迅速动手解决
(2)不需要过多注释:从好的类名可以了解这个class在干嘛,不需要累赘,因为需求不断改变,为了代码的复用性和版本的更新,不要太多注释
(3)主动和其他成员沟通
(4)利用碎片时间学习:因为上班时间都在弄需求,要利用碎片时间和休息时间学习知识体系和新技术
(5)熟悉业务:这是是为了更好的去接需求,每期spring之前要看相应的prd并且看相应的代码块,了解逻辑,这样子开始的时候才知道怎么弄,对业务熟悉才有话语权
(6)重用接口和方法:减少重复造轮子
(7)用Google原生的控件可以减少代码的冗杂,但是自定义控件可以锻炼自己的技术,依情况而定
day21-24:
1、技术人才:提出问题的能力,解决问题的能力,知识整合的能力,人际沟通的能力
2、Android N技术分享:
隐式广播:action发送的广播
系统支持多窗口
3、button和页面轨迹埋点
4、请继续学习git命令行,很有用。
day30:(今天开始接需求了~(≧▽≦)/~)
1、读写分开:为了代码的简洁和易读性,读写分开,如果代码多或重用性大的话,另写个函数,然后调用
2、名字很长时,初始化一个局部或者类变量去使用:eg:a类.b方法.c函数.d变量 被反复使用,那就String name=a类.b方法.c函数.d变量,每次用name就行
3、遇到bug等问题时,自己debug:如果是data不显示,那就看哪个地方调用了这个data时debug看其中的参数是不是存在的,(存在则是显示不对,不存在有可能没传过来,也可能是服务器未下发,要一步步跟踪调用的函数去查原因)
4、==是判断对象(地址)是否相同;equals只判断内容(最好用android的TextUtil.isEmpty(CharSequence str)去判断null和““,会返回boolean)
String a = new String
String b = “”
String c =null
此时a是分配了内存空间,但值为空,是绝对的空,是一种有值(值存在为空而已)
此时b是分配了内存空间,值为空字符串,是相对的空,是一种有值(值存在为空字串)
此时c是未分配内存空间,无值,是一种无值(值不存在)
一个是对象为空(IsNull),一个是值为空(IsEmpty)
IsNull指任务类型变量是否为空包括对象类型的变量。
IsNull函数:
功能:返回Boolean的值,指明表达是否不包含任何有效数据。NULL表示的是数据值未知或不可用,它不表示零(数字值或二进制值)、零长度的字符串或空白(字符值)。
IsEmpty函数:(string,list都有这方法)
功能:用于判断一个变量是否已初始化,如果变量未初始化或显式地设置为Empty,则函数IsEmpty返回True;否则函数返回False。
5、大部分的sting类型的数据,如果经常进行增删的话,用Stringbuilder(.append .delect)(不用stringbuffer,因为一般莴携不考虑单线程的线程安全,如果用buffer会考虑线程安全,执行速度就慢)
6、为了防止崩溃,一般if判断时,判断null写在前面,防崩溃
7、为了防崩溃,用“”.equals(对象) 不用 对象.equals(“”)
8、只在函数里使用,使用完就消除的对象,用final去定义

你可能感兴趣的:(工作感悟,android,工作感悟)