Android Notes思码逸问题处理记录

目录
  • 前言
  • Static non-final field names should comply with a naming convention
  • Jump statements should not be redundant
  • Deprecated code should be removed
  • Unused method parameters should be removed
  • [p3c]To judge the equivalence of floating-point numbers, == cannot be used for primitive types, while equals cannot be used for wrapper classes.
  • THK

前言

从年初开始,我司便开始将思码逸作为了 OKR 必选项,从开始的抵触,到现在的坦然,也算是被锤之路...

简单附上对应问题解决的思路或者方式,以便于小伙伴类似直接操作。

个人对于思码逸的看法,其实多属于还是基于阿里一些规范,虽说有点繁琐,甚至有些许难受,长远来看,未尝不是一件好事儿。

点滴做起,基于思码逸,一起来改善自己代码吧~

先附上阿里编码指南:

p3c

Static non-final field names should comply with a naming convention

提示如下:

大概的意思就是静态非 final 命名不规范,这里直接追加 final 即可。

Jump statements should not be redundant

问题代码如下:

提示如下:

Jump statements such as return and continue let you change the default flow of program execution, but jump statements that direct the control flow to the original direction are just a waste of keystrokes.

Fix:

  • 独立出来,不满足条件直接 return 即可。

Deprecated code should be removed

问题代码如下:

提示如下:

  • 此规则旨在用作跟踪标记为已弃用的代码的一种方式。弃用的代码最终应该被删除。

Fix:

  • 历史包袱,只能看具体代码,具体分析,如果有替代则使用推荐的。(真是一句废话...

Unused method parameters should be removed

问题代码如下:

提示如下:

  • 未使用的参数具有误导性。无论传递给此类参数的值如何,行为都是相同的。

附上对应代码图:

当然以下是一些例外情况:

  • that are annotated with @javax.enterprise.event.Observes
  • in overrides and implementation methods
  • in interface default methods
  • in non-private methods that only throw or that have empty bodies
  • in annotated methods, unless the annotation is @SuppressWarning("unchecked") or @SuppressWarning("rawtypes"), in which case the annotation will be ignored
  • in overridable methods (non-final, or not member of a final class, non-static, non-private), if the parameter is documented with a proper javadoc.

[p3c]To judge the equivalence of floating-point numbers, == cannot be used for primitive types, while equals cannot be used for wrapper classes.

问题代码如下:

提示如下:

  • 浮点数之间的等值判断,基本数据类型不能用 == 来比较,包装数据类型不能用 equals 来判断

如何 Fix?

  • 本质理解为一个精度问题,例如某些情况下 0.1 和 0.111 是相等的。

只需要将原本的 == 替换为 Float.compare(a,b) == 0 即可。

Others 知识点回顾:

回顾基本数据类型和包装类型:

基本类型 包装类型
boolean Boolean
char Character
int Integer
byte Byte
short Short
long Long
float Float
double Double

而它们之间区别如下:

  • 基本类型均有默认值,而包装类型初始化则是 NULL。也就是说基本类型可以用直接使用,而包装类型必须实例化后才可以使用;
  • 包装类型实际是对象的引用,new 一个包装类型的时候,实际上生成了一个指针指向此对象,而基本类型则事直接存储数据值;

这里额外回顾下 == 和 equals 区别吧:

  • == 对于基本类型来说是比较值,对于引用类型来说则是比较引用地址;
  • equals 默认情况下是比较引用地址,只是很多类重写了 equals 方法,比如 String、Integer 等把它变成了比较值,所以说一般情况下 equals 比较的是值是否相等。

THK

  • 你真的懂 == 和 equals 的区别吗?

以上就是Android Notes思码逸问题处理记录的详细内容,更多关于Android Notes思码逸问题处理的资料请关注我们其它相关文章!

(0)

相关推荐

  • android开发PathEffect问题处理

    我要画出一块由不规则path组成的区域,并且这个path因为视觉效果需要设置圆角,我就通过Paint.setPathEffect(new CornerPathEffect(300)); 给设置了圆角,但是在通过这个path组合成区域的时候因为这个圆角的设置整个区域都有圆角的效果了,这不是我想要的. 如图,黑色是我的path,红色是我设置了圆角的由path组成的区域.四个角落都有了圆角的效果,这不是我想要的. 而蓝色区域是未设置圆角的,此时path一侧的区域就不符合标准了. 以下是我的全部代码 p

  • Mac Android Studio 3.0 Terminal 中文乱码问题处理

    前几天,收到 AS 发布的 3.0 更新,就迫不及待的更新了,更新后发现整个界面的画风都变了,和 IDEA 更像了 本人是命令行重度使用患者,平时都是使用 AS 下面的 Terminal,升级完成后,使用 git log 命令查看历史 log,发现中文全部显示不出来 开始以为是 git 的问题,经测试现象如下 直接输入中文会显示 <00e6><0096> 云云,使用 ls 命令查看会显示 ??? 一堆问号,使用 ls | grep 反而正常,具体原因不详 后来在 Google 上找

  • Android NavigationBar问题处理的方法

    如图,现在全面屏手机下面的 按钮在屏幕上,如果做沉浸式的话,下面的菜单会沉入NavigationBar下方,造成重叠. 样品机为华为.png 下面是解决办法: getWindow().getDecorView().findViewById(android.R.id.content).setPadding(0, 0, 0, getNavigationBarHeight()); public int getNavigationBarHeight() { boolean hasMenuKey = Vi

  • Android Notes思码逸问题处理记录

    目录 前言 Static non-final field names should comply with a naming convention Jump statements should not be redundant Deprecated code should be removed Unused method parameters should be removed [p3c]To judge the equivalence of floating-point numbers, ==

  • 分析Android Choreographer源码

    一.前言 目前大部分手机都是 60Hz 的刷新率,也就是 16.6ms 刷新一次,系统为了配合屏幕的刷新频率,将 Vsync 的周期也设置为 16.6 ms,每个 16.6 ms , Vsync 信号唤醒 Choreographer 来做 App 的绘制操作,这就是引入 Choreographer 的主要作用.了解 Choreographer 还可以帮助 App 开发者知道程序每一帧运行的基本原理,也可以加深对 Message.Handler.Looper.MessageQueue.Measur

  • Android Choreographer源码详细分析

    目录 一.首先介绍一些基础知识 二.android源码中Choreographer是如何运行 一.首先介绍一些基础知识 1.刷新率(Refresh Rate): 刷新率代表屏幕在一秒内刷新屏幕的次数,用赫兹来表示.赫兹是频率的单位,一秒震动的次数.这个刷新率取决于硬件固定的参数.这个值一般是60Hz.即每16.66ms刷新一次屏幕. 2.帧速率(Frame Rate): 帧速率代表了GPU在一秒内绘制操作的帧数.比如30FPS.60FPS.Frame Per Second. 3.如果两个设备独立

  • Android Handler源码深入探究

    1.android 消息循环有4个重要的类Handler.Message.Looper.MessageQueue handler 用来发送.处理消息. Message 是消息的载体. MessageQueue 是一个消息队列,既然是队列,就有入队.出队的处理. Looper 创建一个消息循环.不断的从MessageQueue中读取消息.并分发给相应的Handler进行处理. 2.我们都知道main函数是Java程序的入口,android程序也不例外. android App的唯一入口就是Acti

  • Android中二维码的生成方法(普通二维码、中心Logo 二维码、及扫描解析二维码)

    首先声明我们通篇用的都是Google开源框架Zxing,要实现的功能有三个 ,生成普通二维码.生成带有中心图片Logo 的二维码,扫描解析二维码,直接上效果图吧 首先我们需要一个这样的 Zxing 的包类似于这样 接下来需要引入资源 1.drawable 中引入图片 navbar.png 2.layout中引入camera.xml.main.xml.qrcode_capture_page.xml 3.创建raw文件夹并添加beep.ogg 扫描声音 4.合并color.xml,copy ids.

  • Android二维码的生成与扫码-zxing示例代码

    由于GitHub上面的zxing功能太多,有的用不到,我就抽取了重要的出来使用,这个可以生成二维码,扫描二维码和相册中的二维码 Demo效果: 1.在project的build.gradle添加如下代码: allprojects { repositories { maven { url 'https://jitpack.io' } } } 2.在build.gradle添加依赖: dependencies { compile 'com.github.goodboy321:Scan-Zxing:1

  • Android ViewPager源码详细分析

    1.问题 由于Android Framework源码很庞大,所以读源码必须带着问题来读!没有问题,创造问题再来读!否则很容易迷失在无数的方法与属性之中,最后无功而返. 那么,关于ViewPager有什么问题呢? 1). setOffsreenPageLimit()方法是如何实现页面缓存的? 2). 在布局文件中,ViewPager布局内部能否添加其他View? 3). 为什么ViewPager初始化时,显示了一个页面却不会触发onPageSelected回调? 问题肯定不止这三个,但是有这三个问

  • Android二维码创建实例

    Android二维码之创建 实现效果图: 1.Android 有自带的jar包可以生成二维码core-3.0.0.jar,其中的com.google.zxing包 2.写一个二维码生成的工具类,网上搜的话应该一大堆. 实例代码: package com.example.administrator.twocodedemo; import android.content.Context; import android.graphics.Bitmap; import android.graphics.

  • Android DownloadProvider 源码详解

    Android DownloadProvider 源码分析: Download的源码编译分为两个部分,一个是DownloadProvider.apk, 一个是DownloadProviderUi.apk. 这两个apk的源码分别位于 packages/providers/DownloadProvider/ui/src packages/providers/DownloadProvider/src 其中,DownloadProvider的部分是下载逻辑的实现,而DownloadProviderUi

  • Android流式布局实现历史搜索记录功能

    最近在开发项目的时候,有一个需求是展示历史搜索记录 ,展示的样式是流式布局(就是根据内容自动换行).在网上看到了一个不错的类库跟大家分享一下 首先在AndroidStudio简历一个工程项目导入module类库,我会把项目demo方法GitHub上 说一下demo中的实现方式 在 activity_main.xml中 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android

随机推荐