zoukankan      html  css  js  c++  java
  • 部分开发经验总结

    1、MyBatis 不要为了多个查询条件而写 1 = 1 请熟练使用动态sql拼接的关键字

    原因有二:

    • 当遇到多个查询条件时,虽然使用where 1=1可以很方便的解决问题,但是这样会造成非常大的性能损失,因为添加了where 1=1的过滤条件之后,数据库将不会使用索引等查询优化策略,数据库将会进行全表扫描,当数据量大时查询速度将非常慢;
    • 这种方式也可能会存在SQL注入的风险。

    2、迭代entrySet() 获取Map 的key 和value

    当循环中只需要获取Map的key时,迭代keySet()是正确的;但是当需要获取key和value时,迭代entrySet()才是更高效的做法,其比先迭代keySet()获得key后在去通过get(key)取值性能更好。如下代码所示:

    Map<String, String> map = new HashMap<>(16);
    map.put("hello", "world!");
    map.put("hello1", "world!");
    map.put("hello2", "world!");
    
    for (Map.Entry<String, String> m : map.entrySet()) {
        String key = m.getKey();
        String value = m.getValue();
        System.out.println("key=" + key + " " + value);
    }
    

    3、使用list.isEmpty()来检测空或者null

    使用list.size()来检测是否为空在逻辑上没有问题,但是使用list.isEmpty()使得代码更易读并且可以获得更好的性能;除此之外,任何list.isEmpty()实现的时间复杂度都是O(1),不需要多次遍历。但是某些通过list.size()方法实现的时间复杂度可能是O(n)。代码如下所示:

    List<String> stringList = new ArrayList<>();
    stringList.add("00");
    if (stringList.isEmpty()) {
        System.out.println("list is empty ");
    }
    
    // 检测是否为null或者空 可以使用CollectionUtils工具类
    if (CollectionUtils.isEmpty(stringList)) {
        System.out.println("list is null");
    }
    

    4、初始化集合时尽量指定其大小

    初始化集合时尽量指定其大小,能有效减少集合的扩容次数,因为集合每次扩容的时间复杂度很可能是O(n),这样比较耗费时间和性能。

    5、使用StringBuilder 拼接字符串

    一般的字符串拼接在编译器java会对其进行优化,但是在循环中进行字符串的拼接操作,java编译器无法执行优化,所以需要使用StringBuilder 进行字符串拼接。

    6、删除未使用的局部变量、方法参数、私有方法、字段和多余的括号,要保证留下来的每行代码都是必不可少的,不要有多余的无用代码。

    7、字符串转化使用String.valueOf(value) 代替 " " + value

    把其他对象或类型转化为字符串时,使用字符串转化使用String.valueOf(value) 比" " + value的效率更高。如下代码所示:

    int num = 10;
    String str = String.valueOf(num);
    System.out.println(str);
    

    8、优先使用常量或确定值调用equals 方法

    对象的equals 方法容易抛空指针异常,应使用常量或确定有值的对象来调用equals 方法。

    9、tring.split(String regex)部分关键字需要转译

    使用字符串String 的split 方法时,传入的分隔字符串是正则表达式,则部分关键字(比如 .[]()| 等)需要转义。如下代码所示:

    String[] strings = "a|ab|abc".split("\|");
    for (String string : strings) {
        System.out.println(string);
    }
    

    写出简洁规范的代码对于开发者而言非常重要,它体现了开发者自己的专业性和技术水平,而且能够赢得别人的赞赏。对团队来说,团队成员遵循统一的代码规范,能够更好地维护代码库的稳定和谐。

  • 相关阅读:
    OKR实施方法——关于思路和流程的思考
    如何制作一份疫情场所分布地图?(附数据和源码)
    经纬度编码方法推荐-plus code简介
    快递到车服务的实现思路和问题思考
    ACC自适应巡航控制系统介绍
    《无人驾驶》-了解无人驾驶最佳读物
    手把手教你制作微信小程序,开源、免费、快速搞定
    2点GPS坐标求方位角
    GPRS 应用详解_GPRSsim800c(转)
    STM32的ADC采样与多通道ADC采样(转)
  • 原文地址:https://www.cnblogs.com/jasonboren/p/13751223.html
Copyright © 2011-2022 走看看