编程中踩过的坑

Posted wanghaiming

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编程中踩过的坑相关的知识,希望对你有一定的参考价值。

从今天开始在这纪录我编程过程中所遇到的坑,这些坑是完全可以避免的,分享出来希望大家不要再入坑,大家也可以分享出踩过的坑

1、生成文件的坑

编程过程中生成文件是一个很常见的需求,为了图方便我使用了反射去获取所有的字段,再一次写入文件中,我以为这是个很巧的方式,结果后来发现BUG了,花了很长的时间去找到这个根源所在,话不多说先贴出我的代码

 protected static String getLineString(Object obj) throws IllegalAccessException, IOException{
        StringBuilder sb = new StringBuilder();
        Field[] fields = obj.getClass().getDeclaredFields();
        boolean access = false;
        for(int i = 1; i < fields.length; i++){
            access = fields[i].isAccessible();
            if(!access){
                fields[i].setAccessible(true);
            }
            if(fields[i].get(obj) == null || fields[i].get(obj).equals("null")){//null不显示
            }else {
                sb.append(String.valueOf(fields[i].get(obj)));
            }
            if(i != fields.length -1) {//最后一行不加
                sb.append(SEPARATOR);
            }
            if(!access){
                fields[i].setAccessible(false);
            }
        }

        return sb.toString();
    }

后来我去读文件的时候发现读一个字段一直读得都不对,这可害苦了我,后来我才想起来是不是我生成文件的地方有问题,把实体类和数据库字段顺序一比对,果然,其中有几个字段和数据库字段的顺序不一样。下次千万不能因为省事去用反射了,还是一个个字段的写吧,而且这样也有好处,就是后来加字段和改字段了都不会受到影响,不然另外一个同事某天修改了这块你不知道,那问题可就大了。

以上是关于编程中踩过的坑的主要内容,如果未能解决你的问题,请参考以下文章

转:Flutter开发中踩过的坑

Spring Data JPA中踩过的坑

~~在python中踩过的坑~~(不断更新)

JasperReport 使用中踩过的坑

JasperReport 使用中踩过的坑

ng-zorro-antd中踩过的坑