首页
关于
友链
开往

实习阶段性小结

时间飞逝,不知不觉已经实习了快两个月了,从懵懂无知的小白白到懵懂无知的小白,可谓经历颇多啊,下面就来小结下这两个月来的收获

布局性能的优化

减少层级

首先,嵌套的层级越多,就意味着在渲染的时候的时间越长,性能就越低,所以应该去除掉没必要的层级

FrameLayout替代RelativeLayout

当做一个比如说左边是图标,然后最右边是文字的界面需求时(就是两端都有东西),我之前最开始想到的就是RelativeLayout布局了,为什么,因为好用嘛,直接一个alignParentRightalignParentLeft就可以放到两端了,然后再来一个什么centerHorizontal啊,简直方便的不要不要的,为什么不用??

因为RelativeLayout在绘制的时候要经过两次测绘,性能极差,在正常情况下最好不用。

这种两端都有控件的需求其实可以用FrameLayout帧布局来做的,之前的我一直图快,都没有去留意这些东西,那怎么做呢。可以用layout_gravity属性去控制控件的位置,甚至可以多个控制,比如layout_gravity = "right|center_vertical"就是把这个控件放在右边,然后又让它在竖直的中间,这些我还是第一次了解到

代码规范化

代码规范化其实是为了给维护的人看的,包括必要的空格啊,必要的换行啊之类的

必要的空格

  • 注释后空格
  • 花括号前要空格
  • 逗号后要空格
  • ==!=前后都要空格,类似的又很多

类似的有很多,其实这我一开始也没理解为什么要空格,其实一 是为了提高阅读性,二呢也是为了提高可维护性

简化代码

想起了一个这几天发生的事情,哈哈,就是我要判断一个布尔值是不是为true嘛,然后我居然写了这样的代码

if(isShow == true){
    .....
}

哈哈 现在想起来真是好笑,像是刚学会飞的小鸟,笨拙的扑棱着翅膀

其实还有一些可以简化的代码,比如

public boolean isOk(String name){
    if(mName.equal(name)){
        return true;
    }
    return false;
}

其实不就是想判断是否相等嘛,其实可以直接返回的,不用这么麻烦,这种冗余的代码表示我就犯过几次。。。

public boolean isOk(String name){
    return mName.equal(name);
}

类似的代码还有很多,还有什么三元运算符之类的, 就不一一例举了

让自己更加意识到自己的不足

每一次code review的时候都会被大佬灵魂拷问许多东西,比如类是什么,static是什么之类的问题,看似很简单,也很基础,可我就是偏偏答不上来,我虽然知道static,但是没有去想过它本质是个什么,然后被大佬突然这么一问,简直脑袋一片空白,毫无概念。再来列一些自己最常犯的错误。。

判断String类型和另一个String类型的时候

这个是比较无语的错误

我经常写着写着就顺着写成这样了:

if(isShow == "1"){
    ....
}

实际上,这样的话如果isShow为1的话还是会判为false的,事实上应该用equals去判断是否相等。

思考的太局限

有时候在做一个功能的时候,总是只想着怎么把它给做出来,然后就局限在一个类里边或者一个方法里边,没有往大的方面去思考,不去思考以后功能扩展的话会怎么样,就会局限在一块小小的空间里。

记得有一次在feed流里改造一个item view 但是它们传过来的数据稍微有些不一样,然后我就不管了,直接用原来的bean结构,这其实就不符合面向对象思想,因为数据结构不一样的就不能视为一个对象,当时的我并没有意识到这一点,大佬还给我讲了很久的面向对象😥。

防止空指针错误,防止越界错误

越简单的问题,越容易被忽略,而往往就是这些简单的问题,就会导致一些莫名其妙的crash。我就犯过好多次。。。

思维过程应该是这样先想变量是否可用?(是否不为null)然后,才想其他的东西

#实习 #随笔