常用套路之师弟可能不知道

原创 2017年01月03日 17:08:59

序言

作为一名有抱负、有理想、有追求的食客,必须记录下这些富含营养的编程时刻。


.class

Collections.emptyList();

当从一个函数当中获取一个数组且我们并不希望返回数组为 null 的情况下,可使用 Collections.emptyList() 来代替 new ArrayList() 或者 new LinkedList(),既可省去对返回数组对象的 null 判断,亦可省去不必要的内存开销。


String[] strs = {"a","b","c"};

List<String> strList = Arrays.asList(strs);// String[]转ArrayList<String>
String[] strs2 = strLs.toArray(new String[strLs.size()]);// ArrayList<String>反转String[]
strList.replaceAll(",","");// 输出"abc"
Collections.swap(strList, 0, 2);// 输出"cba"

拒绝繁琐的工作方式,让便捷成为一种辅助你偷懒的工具。


TextUtils.isEmpty(string);

可以通过 string.equals(null) 判断 string 是否为 null ,但更多时候也需要判断 string 的长度是否为0,即 string.equals(“”) ,但如果 string 为 null 会导致判断时出现 NullPointerException 异常。固然 TextUtils.isEmpty(string) 才是两全齐美的选择。


private static String sExact = "123";

if(sExact.equals(str));// 判断 str 的值是否等同于设定的值 "123"

或许有些人较为习惯 if(str.equals(sExact)); 这种写法,但是你可能不经意忘记 str 它自身存在 null 的情况,所以为了避免其造成 NullPointerException 异常,需要加多个判断 if(null != str && str.equals(sExact)); 。

然而实际上可直接用 if(sExact.equals(str)); 的来代替 if(null != str && str.equals(sExact)); 。前提是已经确认 sExact 为预设常量,并不存在 null 的情况。

PS:之前关于这一点引用 if(null != object) 的形式提及是有误区的,我正在努力自我反省当中。同时也谢谢一楼的评论,否则我不会发现给自己和大家埋了那么大一个坑。


ArrayList<String> mList = ...;

if(null != mList && mList.isEmpty()){};

与 TextUtils.isEmpty() 同理,对于数组内容大小是否为0,引用 isEmpty() 便可直接代替 mList.size() == 0 这一判断。


private final static int ADULT_AGE = 18;

String type = year >= ADULT_AGE ? "young man" : "childer";

可以一行代码解决的判断,就不要依赖 if else 了,更何况这种写法效率更高。


private final static int ADULT_AGE = 18;

public void toXXOO(){
    if(year < ADULT_AGE ){
        Toast.makeText(context, "Minors are not allowed in!", Toast.LENGTH_SHORT).show();
        return;
    }

    ... // do anything
}

这里代码上并没有什么特别之处,只是我们通过 return 省去了 else 编辑以及之后代码的执行,让代码不至于往右方向缩进。当然并非所有环境下都能适用,若判定顺序以及内容比较复杂的情况,仍建议用回 else ,恢复提高代码的可读性。


for(int i = 0, k = list.length(); i < k; i ++);

是不是感到有些许蒙逼了呢? 骚年,其实际上只是帮你上去了一行代码而已,切莫惊慌。


for(Object object : objectList);

继JDK 5.0之后 for 循环的增强版,简化编程。建议使用(除了集合以及需要索引的场景以外)。


.xml

<TextView
    ...
    tools:text="预览效果"
    android:visibility="gone"
    tools:visibility="visible"/>

根布局记得引入 xmlns:tools=”http://schemas.android.com/tools”。简单点说吧, tools 可实现任意属性并实现“预览效果”,但实际代码运行这些属性的设置是不会出现的。


<ViewStub   
    ...
    android:layout="@layout/viewstub_view"/>
viewStub.inflate();
viewStub.setVisibility(View.VISIBLE);

布局的延迟加载,占用资源小。执行 inflate() 时 viewStub 所指向的布局仍然会被实例化,也就是说其依然会占用相应的内存资源。建议使用但实际上并不常用,注意 inflate() 只能执行一次。


<style name="MyTvStyle">
    <item name="android:textSize">@dimen/font_main</item>
    <item name="android:textColor">@color/black</item>
    <item name="android:gravity">center</item>
</style>
<TextView
    ...
    style="@style/MyTvStyle"/>

单个布局以及跨布局出现重复视图样式的情况,建议在 style.xml 当中自定义通用的样式属性,一方面方便布局文件的浏览,减少了代码的编辑量,另一方面还有利于项目的后期维护。


other

  • 尽可能的避免创建全局变量,能局部就局部(打比方 listView.getAdapter(); 既然这里能获取就可以尽量避免 new 一个 Adapter 在
    全局上,当然如果局部调用较为频繁那就给放全局吧);

  • 布局设计尽可能不要过多的嵌套(除非真的没辙,一定要这么做);

  • 无论是代码实现还是 UI 设计,为了创建美好幸福将来,能脱离复用就脱离复用;

  • 接手别人项目的能参考就参考,不能参考得改的就该批量改,不要局部改。

版权声明:本文为博博原创文章,未经博博允许不得转载。

写作套路:如何写论文摘要

前言 第一次写论文,也不是很清楚该怎么写,论文倒是看了不少,索性就分析下论文的各个部分究竟该怎么写。  论文主要分为Abstract、Introduction、Related works、Me...
  • u014696921
  • u014696921
  • 2017年01月13日 16:29
  • 484

策略模式:网络小说的固定套路

策略模式:网络小说的固定套路近日小舅子让我推荐几本好看的玄幻小说,下好了发给他。想当初我唐家三少、天蚕土豆、跳舞等网络作者的小说也没少看,便满口答应了。百度一搜“唐家三少”,好家伙,几年不见又出了这么...
  • u011240877
  • u011240877
  • 2016年08月28日 17:10
  • 5100

一些框架的设计套路

先定义接口,声明公共的方法:
  • zhangzeyuaaa
  • zhangzeyuaaa
  • 2014年07月16日 11:19
  • 1235

Android 开发那些走不完的配置套路一

Android 开发那些走不完的配置套路一      现实的软件看似有条不紊,但是各种平台滋生了各种配置套路,这几天配置了:代码管理相关的OSChina Git\GitHub、Android 虚拟机G...
  • Dnnis
  • Dnnis
  • 2016年06月04日 12:47
  • 528

最牛B的编码套路

当你能编写精彩的代码、并且能用精彩的言辞向世人解释那些代码时,到那时候,我会觉得你已经掌握了最牛的编码套路!...
  • happydeer
  • happydeer
  • 2013年12月02日 08:38
  • 50952

Android app 开发套路

1、一些概念 模式的定义: 每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心。通过这种方式,你可以无数次地使用那些已有的解决方案,无需在重复相同的工作。 什么是...
  • nnmmbb
  • nnmmbb
  • 2015年06月23日 11:48
  • 565

Android开发套路收集整理与讨论

以下做法纯属个人习惯,欢迎讨论:DinitView()与updateView()通常,我会添加一个initView()方法来初始化所有的View对象,在这个方法的具体实现中,可能会有两种不同的细微差别...
  • h670283005
  • h670283005
  • 2016年01月21日 10:51
  • 1011

Android进程保活的一般套路

一、进程初步了解 每一个Android应用启动后至少对应一个进程,有的是多个进程,而且主流应用中多个进程的应用比例较大 Paste_Image.png 1、如何查看进程解基本信息 对于任...
  • jim19890923
  • jim19890923
  • 2017年05月09日 15:55
  • 269

缓存更新的套路

缓存更新的套路原文地址:http://coolshell.cn/articles/17416.html看到好些人在写更新缓存数据代码时,先删除缓存,然后再更新数据库,而后续的操作会把数据再装载的缓存中...
  • xuchuangqi
  • xuchuangqi
  • 2018年01月02日 15:52
  • 40

写作套路:如何写论文摘要

如何撰写科研论文是一个很重要的问题,特别是在面对一张白纸如何下手,本文介绍了通过对比分析各个论文的摘要部分,详细阐述撰写科研论文的摘要部分有哪些套路,应该如何使用现有的论文资源,利用他们的语言组织结构...
  • xizero00
  • xizero00
  • 2016年10月03日 17:19
  • 2135
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:常用套路之师弟可能不知道
举报原因:
原因补充:

(最多只允许输入30个字)