最近几个月的一些工做心得

一、不一样编译环境下的long型长度不一致,使用long long类型解决。面试

  日前遇到一个long型数据由C++传递到Android环境中发生数据错误的问题,缘由网络

在于不一样环境下long型数据的字节长度不一。架构

  如下为不一样环境下对应的long型的字节长度框架

  Lua脚本环境数值类型 8字节异步

  32位系统VC下    4字节 函数

  Android GCC下    4字节工具

  Java          8字节布局

  个人流程是Lua->C++->Jni Java,因此在中间丢失了4个字节的数据致使了奇怪的结果。性能

最终将C++代码中的 long定义为 long long,这样的写法能够同时经过VC以及GCC的编译,并得到测试

正确结果。

  其实也能够直接使用double类型。

二、编写测试代码,建立测试

  编写测试代码挺花时间,不过能够在系统正式运行前就进行测试,能够

提早解决隐藏的不少问题。

 

三、安卓定时推送的测试技巧

  在Android中测试某个时刻,好比Alarm定时器服务的启动,能够经过设定系统时间来测试。

若是你须要严格根据系统时间来测试程序逻辑,又不想等待很长(如一个小时)的时间来观察的话,

可使用安卓系统上相似加速齿轮的工具来加速时钟周期(推荐烧饼加速器)

 

四、一套自定义UI须要具有的重要东西

  在UI布局的设计过程当中,支持锚点对于提高工做效率和提升屏幕适配是有帮助的。

 

五、配置参数独立在一个配置文件中,便于查找、修改和维护

 

六、对于一些不须要实时排序或者计算但又耗费时间的任务。能够经过设置一个脏位标识,在一个定时周期

     后检查脏位进行处理,提升性能。

 

七、网络数据显示的用户体验设计

     显示网络数据的界面是先获取数据再打开,仍是先打开再获取数据?

     用户体验上来讲,玩家但愿点击以后立刻有响应,立刻显示界面加loading动画再加载数据是大多数APP或者程序的实现选择。

     前者间接把界面显示变成了异步,很差管理(好比要立刻对界面作一些操做或对象保存)。后者界面上是同步的,好管理,能

立刻获取到界面的UI进行管理。

 

八、MVC 在界面开发中的应用

     Controller是根节点,Model 和 View 是其两个平行的子节点。

     View只显示界面,把全部的按钮等用户交互事件经过事件机制或者回调函数传递到Controller中。

     Model负责主要逻辑,好比网络读取、文件操做等,提供接口供Controller调用。

   Controller做为View和Model通讯的中介,负责一些界面加载逻辑,经过View的回调访问Model,再将Model返回的数据调用对应

的View显示出来。同时它做为根节点的一个特性是,它能够和其余Controller进行交互,而View和Model是不行的,保持了他们的可重用性。

 

(PS:昨天给面试官问这不是也是一棵跟三层结构同样的垂直结构吗,当时脑壳不清晰没跟他说是由于Controller能够进行交互的缘由,因此

C是根节点,不一样于常见的三层架构)

 

九、若是一个列表,前边是可变长文本,右边是一个按钮,那么能够选择让按钮在父框架中靠右边框对齐,不须要根据变长文本的宽度来更改

     它本身的位置。编码方便且运行更加高效。

 

十、在编码的过程当中先列好功能入口点,会避免粗心遗漏掉的地方致使产生潜在的BUG;

相关文章
相关标签/搜索