less than 1 minute read

(1)

区分哪些接口是自己用的,哪些接口是给别人用的,据此至少要分两个 controller(如:wmail 接口,lp 项目)

(2)

区分哪些接口是跳转接口(返回 ModelAndView),哪些接口是 ajax 接口(response.write(JSON or JS))。考虑初始化页面是用跳转接口,还是用 ajax 接口?(如:blog 页面,前端大作业项目)

(3)

Controller 里时常有这样的逻辑:

Data1 data1 = getData1();
if (data1 == null) { response.write(errorCode1); return; }

Data2 data2 = getData2(data1); 
if (data2 == null) { response.write(errorCode2); return; }

// build json from data2 and write it to page

此时应该设计一个 Enum DataError 来包含 errorCodeerrorMsg,然后设计一个 Exception(DataError),接着在 Service 里写一个 getData2() 方法,隐藏获取 data1 的逻辑。如果出错,抛 Exception(DataError) 给 Controller,Controller 根据 DataError 来写 error

如果 Controller 后续还需要 data1,可以在 Service 写一个 getData() 方法返回 TwoTuple(data1, data2)

(4)

需要联合多个 PO 大段拼 json 的逻辑,都放到 Controller 的 private 方法里吧,保持 @RequestMapping 方法都是较高层次的逻辑,或者说确保逻辑层次的落差不是太大(比如说你获取 data2 只用了一行 Service 代码,用 data2 来拼 json 却花了 30 行,还是两个 for 嵌套,附带大量字符串常量横飞,那么我觉得这两处逻辑的层次是不对等的)

Comments