前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >规范-项目开发规范

规范-项目开发规范

作者头像
秋日芒草
发布2022-01-12 17:12:27
1.1K0
发布2022-01-12 17:12:27
举报
文章被收录于专栏:JavaWebJavaWeb

在多个地方用到的值要抽取到常量类中

代码语言:javascript
复制
request.setAttribute(TableConstants.TOTAL_ROWS, (int) page.getTotalCount());

/*    */ public class TableConstants
/*    */ {
/*    */   public static final String TOTAL_ROWS = "totalRows";
/*    */ }

对于公共的值还可以抽取到父类中

代码语言:javascript
复制
public String execute() throws Exception {
	return SUCCESS;
}
public abstract interface Action
{
  public static final String SUCCESS = "success";
  public static final String NONE = "none";
  public static final String ERROR = "error";
  public static final String INPUT = "input";
  public static final String LOGIN = "login";
  
  public abstract String execute()
    throws Exception;
}

对于工具类或一些公共类可以使用优秀开源的api,如:guava-12.0.jar

代码语言:javascript
复制
public void save() {
	List majors = Lists.newArrayList();
}

建议统一异常处理,不仅要在日志中打印异常堆栈信息,还得给前端统一格式的响应信息,而不是前端页面直接提示给用户500

代码语言:javascript
复制
try {
	
} catch (Exception e) {
	e.printStackTrace();
}

对于list 实体需要进一步遍历处理的,需要考虑到list 为null的情况

代码语言:javascript
复制
List emp = collegeService.find(filters);
if (null != emp && emp.size() > 0) {
	jsonMap.put("result", "N");
}

对于后台采用map封装的key value 数据,在发回给前端的时候建议都统一转为json格式

代码语言:javascript
复制
public void checkUnique() {
	Map jsonMap = Maps.newHashMap();
	jsonMap.put("result", "Y");
	// map 转json
	Struts2Utils.renderJson(jsonMap);
}

对于多表insert、delete、update 的操作建议要根据每个操作的影响行数来判断操作是否成功,保证之后的逻辑安全性,金融项目尤其需要注意

代码语言:javascript
复制
int course =  courseStudentDao.convert(fromEmpNo, toEmpNo);
int talent = talentDao.convert(fromEmpNo, toEmpNo);
int idp = idpOnJobDao.convert(fromEmpNo, toEmpNo);

map.put("Training Record", course);
map.put("IDP - On the Job Training", idp);
map.put("Talent Program", talent);

除了将常量值和不变信息写到常量类中统一管理,其实针对不同的业务划分,其实也可以将常量信息放到指定的业务中。

代码语言:javascript
复制
public class GraduateEmpMgrAction extends ParentActionSupport{
	 public static List getGraduateStatus(){
		List list = Lists.newArrayList();
		list.add("已报名");
		list.add("已录取");
		list.add("已注册");
		list.add("在读中");
		list.add("已毕业");
		list.add("已中止");
		return list;
	}
}

不管是在web项目还是在app项目中,都不建议在java 后台拼接html 代码返回给前端,建议直接返回相关数据信息,前端去做

代码语言:javascript
复制
public String  getAllMajorByCollege(){
	  String id = Struts2Utils.getParameter("id");
	  College college=collegeService.get(id);
	  List list=college.getMajor();
	  String html="";
	  for(Major major:list){
		  html=html+""+major.getName()+"";
	  }
	  Struts2Utils.renderHtml(html);
	  return null;
}

当存在先使用主键id 获取实体后要对实体进行修改的,1)可以创建新的实体,通过set id,set 变更的值,调用update,2)可以直接使用内存中的旧实体,重新set 变更的值,再调用update。优缺点:第一种在内存中需要创建一个新实体,需要消耗性能,第二种需要在MySQL中做一次比较原值和修改值是否一致,一致不做修改的性能消耗

代码语言:javascript
复制
public String save(){
	GraduateStatus newGraduateStatus=graduateStatusService.get(entity.getId());
	newGraduateStatus.setIsDiploma(entity.getIsDiploma());
	newGraduateStatus.setIsFirstClaimForm(entity.getIsFirstClaimForm());
	newGraduateStatus.setIsPassExam(entity.getIsPassExam());
	newGraduateStatus.setIsZulassung(entity.getIsZulassung());
	newGraduateStatus.setAttachIds(entity.getAttachIds());
	graduateStatusService.save(newGraduateStatus);
	if(entitys!=null&&entitys.size()!=0){
		graduateReimburseService.saveList(entitys,entity.getId());
	}
	
	return S_P;
}

如何在使用BigDecimal的时候保证运算结果安全,BigDecimal的构造参数要选择String,divide(除法)都需要考虑一下除完后的精度问题。 在表单首部可以设置一个专门显示后台校验提示信息的div,设置统一的样式和布局,在所有的表单提交的功能上都加上该div。

在表单首部可以设置一个专门显示后台校验提示信息的div,设置统一的样式和布局,在所有的表单提交的功能上都加上该div。

代码语言:javascript
复制
<form action="${base}/exttraining/external-training!saveSubmitCreate.action" method="post" id="requrest-form">
	 <div class="validate-messages">
            <h2 class="validate-messages-title">${errorMsg}:</h2>
            <a href="javascript:;" class="validate-messages-close"></a>
            <ul class="validate-messages-list"></ul>
      </div>
</form>

实体中一个字段或多个字段需要同时校验的时候,可以在实体中新建一个hasXXX方法,用于校验

代码语言:javascript
复制
public Boolean hasTaskId(){
	return StringUtils.isNotEmpty(this.getTaskId());
}

if (null != taskInfo && taskInfo.hasTaskId() && "processing".equals(pageType)) {}

常量表和实体的设计

代码语言:javascript
复制
public class TrnConstants implements Serializable {
 
	private static final long serialVersionUID = 1L;
	
	public static final String TRN_CONSTANTS_TYPE_COURSE_TYPE = "COURSE_TYPE";
	public static final String TRN_CONSTANTS_TYPE_COURSE_CATEGORY = "COURSE_CATEGORY";
	 
	private String id; // 自增id
	private String title; // key
	private String value; // value
	private String type; // 类别
	private Integer sortNo; // 顺序
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019/03/05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档