这样,我们就避免了在业务场景中大量地使用 if - else 了 。
此场景用到的设计模式有:策略模式.通过以上的学习,我们其实是可以写出很多优雅的代码,各位在实际中如果有什么问题,或者在实际应用中发现一段代码不知道如何优化也可以再本 chat 的读者圈随时向我提问 。
接下来,我将告诉大家一些 Java 编程的小技巧,利用这些技巧,可以避免一些低级 bug,也可以写出一些优雅的代码 。
Java 编程实用技巧重写方法务必加上 Override我们在集成一个类时,可能会重写父类方法,大家务必加上 Override 注解,请看下面的代码:
public class Parent {public void method(int type){}}public class Son extends Parent{public void method(String type) {}}
我们的本意是要重写 method,但是参数类型写错了,变成了重载,编译器不会报错,如果我们加上 @Override,编译器会报错,我们就能马上发现代码的错误,而避免运行一段时间导致的 bug 。
警告比错误更可怕为什么这么说呢?错误我们马上就能发现,而且如果是编译时错误,都无法运行,但是警告并不影响编译和运行,举个例子:
int i = 0;for(int j = 0;j < 10;j++){}
我的本意是 for 循环用 i,但是却写成了 j,这时编译不会报错,但是 IDE 会给出警告:
文章插图
它告诉我们i这个变量没有使用到,如果忽略警告,那么很可能运行一段时间出现致命性的 bug,但是如果我们重视警告,当编译器提出这个警告时,我们就会想,i为什么没有用到呢,检查代码,马上就能发现隐藏的 bug 。
尽量使用枚举类型在开发数据库项目时,经常会有一些譬如状态、类型、性别等具有固定值的字段,一般我们会用数字表示,在业务中,也会经常判断,比如状态为 1 时,执行什么操作,如果直接这样写数字,必须要写注释,否则很难懂 。类似这种字段,尽量封装成枚举类型,如:
/** * 验证码类型(1、注册2、动态码登录3、修改密码4、忘记密码) */public enum CaptchaType {/*** 注册*/REGISTER(1),/*** 动态码登录*/DYNAMIC(2),/*** 修改密码*/UPDATE_PASSWORD(3),/*** 忘记密码*/FORGET_PASSWORD(4);private int type;CaptchaType(int type){this.type = type;}public int getType() {return type;}}
我们在使用时直接调用枚举,可读性增加了,也利于扩展 。优秀的代码比注释更重要小王是公司的 Android 开发工程师,在开发应用时,封装了一些常量,用于提示语 。
架构师在 code review 时发现,变量命名很成问题,如:
String MSG0001 = "网络有问题,请检查网络设置!";
架构师要求小王更正,但小王给我的理由是这种编码是产品经理定的,我可以在每个调用者上面加上注释,而保留现状 。很明显,这样的代码是不可取的,如果换成一个可读变量名是不是更清晰呢?比如:
String NET_CONNECT_ERROR = "网络有问题,请检查网络设置!";
坚持单一职责原则这个原则很好理解,即一个方法只做一件事,如果一个方法做了太多的事,请考虑重构此方法,合理运用类似上面提到的设计模式 。equals 判断时常量放在前面下面对两种代码进行比较:
if("1".equals(type)){}
if(type.equals("1")){}
如果变量放在前面,一旦变量为 null,则会出现空指针异常,但是常量放在前面,则不会出现空指针异常 。谨慎使用位运算各位看到网上经常再说,位运算效率高怎么怎么样的,但事实真的如此吗,我们不妨做个测试:
long start = System.currentTimeMillis();for (int i = 0;i < 1000000;i++){int sum = i * 2;}long end = System.currentTimeMillis();System.out.println((end - start)+"ms");start = System.currentTimeMillis();for (int i = 0;i < 1000000;i++){int sum = i >> 1;}end = System.currentTimeMillis();System.out.println((end - start)+"ms");
以上代码,我分别测试了 1 万次,10 万次和 100 万次,得出的结论是 1 万次速度一样,10 万次和 100 万次都只相差 2 毫秒,如今计算机计算性能越来越好,利用位运算和四则运算效率相差太小,而位运算的可读性非常低,除非有详细的注释,否则一般人真看不懂 。因此,尽量少用位运算 。当然有些场景是避免不了的,比如:密码生成、图像处理等,但实际应用中,我们很少自己写这类算法 。
避免使用 float 和 double 进行精确计算我们如果要精确计算浮点数,切记不要用 float 和 double,它们的计算结果往往不是你想要的,比如:
推荐阅读
- 立夏如何养生,推荐三款家常食谱
- 如何处理没电的汽车电池
- 诸葛亮如何评价庞统,庞统和诸葛亮被称为什么
- 燃脂|女人如何减掉大肚腩?建议:不妨少吃4种食物,多喝3种“燃脂水”
- 勾践是如何成功复国的,勾践美人计的美人是谁
- 小青柑能不能冷泡,小青柑功效
- 重庆|如何提前知道新领导好不好?
- 求职|2022国考面试技巧:公务员面试中求职动机如何说
- 娑罗子的别名,福鼎白茶的等级是如何划分的
- 哺乳期如何降肝火,个症状说明你的肝火太旺需要降肝火了