如何优雅的编写业务代码

/ JavaWeb / 544浏览

Controller规范

Controller层负责调度作用,统一返回的结果集,Result或者String模板资源。

Service规范

service层负责核心的业务逻辑层,每个函数的参数一定要明确,不建议传入json、map这样的参数,目的是看到这个函数以及参数就知道它是干什么的,提升可读性。不要出现和业务无关的参数。

日志

注释

注释:函数参数一定要注释用意,函数中重要变量也需要加注释。

换行:代码段中功能语义之间最好加换行,增加可读性。

下面是一个排序函数的不建议示范:

/**
 * 冒泡排序 <<!! 不建议示范 >>
 * @param arr
 * @return
 */
public int[] sort(int[] arr){
    for (int i = 0; i < arr.length; i++) {
        boolean flag = false;
        //依次比较,将较小的数进行交换
        for (int j = 0; j < arr.length-i-1; j++) {
            if (arr[j]>arr[j+1]){
                int temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
                flag = true;
            }
        }
        if (!flag){
            break;
        }
    }
    return arr;
}

建议示范:

/**
 * 冒泡排序 << 建议示范 >>
 * @param arr
 * @return
 */
public int[] sort(int[] arr){
    for (int i = 0; i < arr.length; i++) {
        // 数据交换确认标记
        boolean flag = false;

        // 依次比较,将较小的数进行交换
        for (int j = 0; j < arr.length-i-1; j++) {
            if (arr[j]>arr[j+1]){
                int temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
                flag = true;  // 表示有数据交换
            }
        }

        // 没有数据交换,提前退出
        if (!flag){
            break;
        }
    }
    return arr;
}

其中,建议示范中主要有几点:

工具类

一个项目不可能没有工具类,工具类的初衷是良好的,代码重用,但到了后面工具类越来越乱,有可能同样的工具类就有好几个,看的眼花缭乱,还有不少重复。所以建议:

数据库

库名、表名、字段名:小写,下划线风格,不超过32个字符,必须见名知意,禁止拼音英文混用。

数据表、数据字段必须加入中文注释(数据库文档更新不及时,N年后谁知道这个r1,r2,r3字段是干嘛的)

表设计:

字段设计:

索引设计:

SQL 规范:

Git提交

提交前,先更新,避免出现冲突问题额外花更多的时间解决冲突。

提交时,注释一定要写清楚,不要写不明确的备注(如优化、完善等内容)。

如何应对需求变更

先看个程序员的段子娱乐一下 :

客户被绑,蒙眼,惊问:“想干什么?”
对方不语,鞭笞之,客户求饶:“别打,要钱?”
又一鞭,“十万够不?”
又一鞭,“一百万?”
又一鞭。客户崩溃:“你们TMD到底要啥?”
“要什么?我帮你做项目,写代码的时候也很想知道你TMD到底想要啥!”

有没有可能存在明确的、不再改动的需求呢?其实很难的。 现在我们属(lei)于(si)敏捷开发模式,文档大量简化(几乎没有),于是需求没有考虑清楚就开始开发,需求是边开发边变动。 敏捷开发模式间接变成了加班开发模式

如何应对?

⭐ 最起码的要求,把代码写到最简单。改1行简单代码和改10行复杂代码,工作量是不一样的!测试一个20行的函数和测试一个3、5行的函数工作量是不一样的!

⭐ 把可能变化的封装成函数。

⭐ 先做确定的需求。多个功能中先做不会变的功能,一个功能中先做不会变的部分,兵法中叫攻其必救之地。

⭐ 解耦。解耦是编程里面重要的思想,解耦的关键在于:多引入“第三者”,不要直接发生关系。

⭐ 主动思考。就像下棋一样,主动思考,多走一步,不要被动接受看到的需求,要对需求的将来变化做好心中有数。

alt

配图:挪威,罗弗敦群岛