好程序员分享Java开发常用规范技巧二

1、使用一些日期类的时候,推荐使用LocalDateTime来替代Calendar类,或者说使用Instant来替代掉Date类。

2、尽量避免在for循环里面执行try-catch操作,可以选择将try-catch操作放在循环体外部使用。

 正确做法:

try {

         for (int i = 0; i < 100; i++) {

             doSomeThing();

          }

       }catch (Exception e){

            e.printStackTrace();

       }

不推荐做法:

for (int i = 0; i < 100; i++) {

      try {

                doSomeThing();

            } catch (Exception e) {

                e.printStackTrace();

            }

        }

3、对于大段的代码进行try-catch操作,这是一种不负责任的行为,将稳定的代码也都包围在了try-catch语句块里面没能很好的分清代码的稳定性范围。

通常我们称在运行中不会出错的代码块为稳定性代码,可能会有异常出错的部分为非稳定性代码块,后者才是try-catch重点需要关注的对象。

4、在jdk7之后,对于流这类需要关闭连接释放资源的对象,可以使用try-with-resource处理机制来应对。

例如下方代码:

File file = new File("*****");

        try (FileInputStream fin = new FileInputStream(file)) {

            //执行相关操作

        } catch (Exception e) {

            //异常捕获操作

        }

5.使用ArrayList的时候,如果清楚它的指定大小的话,可以尽量在初始化的时候进行大小指定,因为随着arraylist不断添加新的元素之后,链表的体积会不断增大扩容。

private void grow(int minCapacity) {

        // overflow-conscious code

        int oldCapacity = elementData.length;

        int newCapacity = oldCapacity + (oldCapacity >> 1);

        if (newCapacity - minCapacity < 0)

            newCapacity = minCapacity;

        if (newCapacity - MAX_ARRAY_SIZE > 0)

            newCapacity = hugeCapacity(minCapacity);

        // minCapacity is usually close to size, so this is a win:

        elementData = Arrays.copyOf(elementData, newCapacity);

}

6、对于一些短信,邮件,电话,下单,支付等应用场景而言,开发的时候需要设置相关的防重复功能限制,防止出现某些恶意刷单,滥刷这类型情况。

7、对于敏感词汇发表的时候,需要考虑一些文本过滤的策略。

这一块的功能可以考虑直接接入市面上已有的成熟的UGC监控服务,或者使用公司内部自研的ugc过滤工具,防止用户发表恶意评论等情况出现。

8、在建立索引的时候,对于索引的命名需要遵循一定的规范:

索引类型

命名规则

案例

主键索引

pk_字段名,pk是指primary key

pk_order_id

唯一索引

uk_字段名,uk是指 unique key

uk_order_id

普通索引

idx_字段名,idx是指 index

idx_order_id

9、当我们需要存储一段文本信息的时候,需要先考虑存储文本的长度。

如果文本的长度超过了5000,则不建议再选择使用varchar类型来进行存储,可以考虑使用text类型进行数据存储,这个时候可以考虑单独用一张表来进行存储数据,并且通过一个额外的主键id来对应,从而避免影响其他字段的查询。

10、在进行数据库命名的时候尽量保证数据库的名称和项目工程的名称一致。

11、在进行表结构设计的时候,只要具有唯一性质的字段都需要建立唯一索引。

这样有助于后期进行查询的时候提高查询的效率,没有唯一索引这一层的保障,即使在业务层加入了拦截,但是依然容易造成线上脏数据的产生。

12、在进行order by这类型sql查询的时候,需要注意查询索引的有序性。

关于索引的建立,可以去了解一下索引的星级评定,例如三星索引。但是个人认为索引没有所谓的最优性,需要结合实际的业务场景来设计。

13、在MySQL中,使用count(*)会统计值为 NULL 的行,而 count(列名)不会统计此列为 NULL 值的行。

28、在进行数据库存储引擎选择的时候,需要结合相关的应用场景来选择,如果是需要应用在select操作较多的情况下,可以选择使用MyIsAM存储引擎,如果是对于数据的insert,update,这类修改操作较多的业务场景,则优先推荐使用innodb存储引擎。目前普遍互联网公司都推荐使用innodb较多。

免责声明:内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容

猜你喜欢

转载自www.cnblogs.com/gcghcxy/p/11133961.html