代码优化之合理利用编译器

来源:互联网 发布:人体辉光 知乎 编辑:程序博客网 时间:2024/05/16 15:00

工具:利用Android studio的快捷键 Ctr + F1给出的warning提示,规范化代码,并去除无用代码,使用快捷键Alt+Enter,但是并非所有的场景是能依靠编译器解决,有些是需要自己亲自更改的。

编译器: https://github.com/JetBrains/intellij-community 【在这里可以找到所有的提示信息】

  • 1

    导读:检查到当前全部变量建议改为局部变量,直接使用快捷键Alt+Enter -> Convert to local 并行修改即可,原因是它仅仅只在一个方法中使用到了,定义变量的一个原则,尽量最小化变量的作用域,一来可读性提高了,二来降低了代码的错误率。
    http://stackoverflow.com/questions/31713073/field-can-be-converted-to-a-local-variable-message-appearing-when-setting-acti
    http://blog.csdn.net/ys743276112/article/details/50517524

  • 2

    导读:把长整形小l替换成大L,原因是字母l容易和数字1混淆,可读性变差。
    http://arguscodewatch.sourceforge.net/documentation/lowercasel.html

  • 3

    导读:删除无用代码,进行安全删除 ,删除变量。

  • 4

    导读:这个三目运算可以直接替换为二目运算,多此一举 ,直接简化。

  • 5

    导读:条对于多分支判断语句,编译器提示存在一个判断语句是一个常量值。
    https://github.com/JetBrains/intellij-community/blob/master/resources-en/src/inspectionDescriptions/ConstantConditions.html

  • 6

    导读:条件语句需要添加方法体

  • 7

  • 8
  • 9

    参考文档:
    http://badlogicgames.com/forum/viewtopic.php?t=22199&p=91529
    https://code.google.com/p/android/issues/detail?id=191249

  • 10

  • 11

    导读:这里需要区分两者之间的差别了,StringBuffer 缓存,是线程安全的,意味着在需要多线程场景中,同步方法中一次仅仅只允许一个线程来访问缓存对象,这样StringBuffer objects are generally safe to use in a multi-threaded environment where multiple threads may be trying to access the same StringBuffer object at the same time.而StringBuilder 创建者访问不同步,所以是非线程安全的,意味着在多线程场景下会出现多个线程同时访问同一个对象,造成脏数据的异常,但是在非同步,单线程场景中,builder 的性能是优于 buffer 的,局部变量这种也是需要使用builder 的。
    http://stackoverflow.com/questions/6174259/why-use-stringbuilder-stringbuffer-can-work-with-multiple-thread-as-well-as-one

  • 12

    导读:赋空值是多余的。还是一种场景是赋了值也从来没有使用过,一旦被重新赋值,立刻就会被废弃掉but that value is never used. It is discarded immediately when you reassign it。

  • 13

    导读:提示可能存在空指针异常的风险,这种场景需要做一层判空操作。

  • 14

    导读:静态域和方法需要通过类实例而不是类本身来引用,Activity.RESULT_OK来替换getActivity.RESULT_OK。

未完待续。。。

0 0