正式工作一年了,这次脚骨折请假在家(强行给自己放了个小暑假……),正好有时间做下工作总结。
总体情况
工作一年多,刚开始上班时有些吃力,因为并不是计算机专业,基础很薄弱,同时要弄懂:
- 游戏的各个模块功能
- 游戏的各个模块代码
- 整体工作流程
- 遗留代码(框架设计)
常常别人10分钟搞定的事情,到我这里就变成了做3个小时。这些东西只能静下心来,自己吃透。现在工作已经好多了,定位问题、开发功能,都已经熟练上手。已经开始思考代码的整洁性、框架,能熟练运用Java的语言机制。总的来说就是:工作起来已经得心应手。
Debug
在查一个线上问题时,我总是有一些抵触,因为毕竟这个项目已经8年,代码经过了无数人之手,甚至连产品文档都找不到了。为了查bug,只能先看看能否复现,然后再看代码定位。而我在大多数时候,也并不理解为什么代码是这样的。
总结下定位-修复线上问题的流程:
- 日志(Logcenter)中是否有相应错误?
- 是否能查到相应的打点、用户记录?
- 服务器流量是否正常?
- QA是否能够复现问题?
- 定位到对应代码
- 和产品确认,是否需要修改?为了监控,增加log记录。
所有的事情,只要按照一定的步骤,在做之前先问自己几个问题,就能够大大节省时间。
效率
我经常在两个IDE中切换:Eclipse 和 IntelliJ IDEA。用Eclipse是因为部署快,几秒钟就能够把后端服务启动起来;而使用IntelliJ是因为它在代码开发方面,具有非常高的效率。
这样就导致:我在IntelliJ上开发,在调试阶段把代码放到Eclipse工程中,有非常多重复性的工作。
- 这部分重复性工作是否有必要?即我真的要在Eclipse和IntelliJ两个IDE中进行切换吗?
- 这部分重复性工作,是否可以用shell脚本替代?这样能够规范流程、大大节省时间和精力。
在开发时,我能否只用记事本(Notepad++)写代码?因为很多时候有固定的模板,只需要在其中进行逻辑的开发。使用记事本编辑,几乎是零延迟,同时能够让开发者更专注于代码本身。也就是说,我可否直接放弃IntelliJ,而直接使用记事本开发,Eclipse调试?
(我承认使用两个IDE有些蹩脚,正确的做法应该是:只使用IntelliJ。)
在工作过程中,还有哪些地方,是能够提高效率的?
- 不要频繁切换标签、程序
- 标签和列表项不要过多
- 能用脚本解决的,就不要手工了,一劳永逸
代码
最近有时间,又看了一遍《Java编程思想》和《Effective Java》,结合自己的工作经验,有一些体会:
- 越是简洁的代码,越不容易出错。写代码就像是做一件艺术品,不要啰嗦,每一句话都要仔细推敲。
- 代码要符合良好的规范,要让别人能够直接看懂。
- 注释写详细,为什么要这么设计。要让别人在看我的代码时,完全不需要问我。
- 仔细推敲每一句话,每一条逻辑。能够做到心中无愧,临危不乱。
- 代码尽可能复用。
如何才能做得更好?
- 代码不容一丝瑕疵,每一个空格不放过。
- 认真写注释
看源码
最近看了JDK的源码,学到了很多编程技巧,对JDK源码及设计模式有了更高层次的认识,感觉以后看其他源码更快了。
如何看源码(自己的经验)?
- 不能只看单个类,要把类放在框架的整体中。比如看
异常
的源码,并不是看Throwable这一个类,而是一组。 - 写出最简单的使用示例,并分析最常用的方法。
- 分析类的结构:域、对象、方法
- 不必深入分析代码细节,领会设计要领即可。当然细节中可能有对部分代码的优化,可以借鉴。
应该如何工作
知乎上看到的一段话:
你可以把基础知识彻底吃透,同时把面对的问题彻底搞明白,然后写下清楚明白、明显没有错误的代码。等到下班时,你就可以放心大胆的走人。
——我没法完全避免错误,但我可以错的心安理得:因为全公司再没有别的人,能比我在同样时间内完成的项目更多、写出的bug更少。
做事情就应该做到最好,做到问心无愧,这样不仅是对别人负责,更是对自己负责。把所有工作尽可能做到最好,不必一直加班到很晚来表明态度。