JAVA代码规范
Java編碼規范
1.標識符命名規范
/*** 類命名使用駝峰式MarcoPolo,見樣例【1】。*/// 樣例【1】,用戶類命名規則UserController、UserService、UserServiceImpl/*** 方法名命名規范* 1)獲取單個對象使用get作為前綴,見樣例【2】。* 2)獲取多個對象使用list作為前綴,見樣例【3】。* 3)獲取統計數據使用count作為前綴,見樣例【4】。* 4)插入數據使用install作為前綴,見樣例【5】。* 5)修改數據使用update作為前綴,見樣例【6】。* 6)刪除數據使用delete作為前綴,見樣例【7】。* ps:方法命名使用小駝峰英文命名,禁止出現中文拼音。批量操作使用batchXXX開頭。*/// 樣例【2】,根據用戶id查詢單個用戶數據public User getUserByUserId(Long userId);// 樣例【3】,根據用戶對象查詢用戶列表數據public List<User> listUserByUser(User user);// 樣例【4】,根據用戶部門統計用戶總數public T countUserByDeptId(String deptId);// 樣例【5】,新增用戶數據public int installUser(User user);// 樣例【6】,修改用戶數據public int updateUser(User user);// 樣例【7】,根據用戶id刪除用戶數據public int deleteUserByUserId(Long userId);/*** 變量與常量命名規范* 1.變量名使用小駝峰命名,并且使用英文,禁止出現中文拼音,見樣例【8】。* 2.常量名使用全大寫命名,并且使用英文,禁止出現中文拼音,見樣例【9】。* ps:boolean類型,變量不要用is開頭。*/// 樣例【8】,變量命名規則,字符串、對象、數字String userId = "";User userInfo = new UserInfo();int userAge = 0;// 樣例【9】,常量命名規則,系統文件上傳路徑private final String SYSTEM_FILE_UPLOAD_URL = "/home/upload";2. 代碼格式
/*** 1.縮進:程序塊要采用縮進風格編寫,縮進只使用TAB鍵,不能使用空格鍵;* 方法體的開始、類的定義、以及if、for、do、while、switch、case語句中的代碼都要采用縮進方式;* * 2.對齊:程序塊的分界符左大括號"{" 和右大括號"}"都另起一行,應各獨占一行并且位于同一列,* 同時與引用它們的語句左對齊;對齊只使用TAB鍵,不使用空格鍵;不允許把多個短語句寫在一行中,* 即一行只寫一條語句;if、for、do、while、case、switch、default等語句自占一行,見樣例【10】.** 3.換行:一行的長度超過80個字符需要換行,見樣例【11】。** 4.間隔:類、方法及相對獨立的程序塊之間、變量說明之后必須加空行;關鍵字之后要留空格,見樣例【12】。**/// 樣例【10】,對其方案// 錯誤的樣例if (useAge > 18) youngMan = false;String[] strings = new String[]{"文字1", "文字2", "文字3"};for (String str : strings) System.out.println(StringUtils.isNotEmpty(str));// 正確的樣例if (useAge > 18) {youngMan = false;}String[] strings = new String[]{"文字1", "文字2", "文字3"};for (String str : strings) {System.out.println(StringUtils.isNotEmpty(str));}// 樣例【11】,換行方案// 錯誤的樣例String[] strings = new String[]{"文字1", "文字2", "文字3"};List<String> stringsNew = Arrays.stream(strings).distinct().map(item -> return strings + "+").filter(item -> item.length() > 10).collect(Collectors.toList());// 正確的樣例List<String> stringsNew = Arrays.stream(strings).distinct().map(item -> strings + "+").filter(item -> item.length() > 10).collect(Collectors.toList());// 樣例【12】,間隔方案// 錯誤的樣例if(userAge>18){youngMan = false;}else{youngMan = true;}for(int i=0;i<=10;i++){userAge++;}// 正確的樣例if (userAge > 18) {youngMan = false;} else {youngMan = true;}for (int i=0; i<=10; i++){userAge++;}3.注釋
1、基本注釋(必須加)
(a) 類(接口)的注釋。(b) 構造函數的注釋。(c) 方法的注釋。(d) 全局變量的注釋。2、特殊必加注釋(必須加)
(a) 典型算法必須有注釋。(b) 在代碼不明晰處必須有注釋。(c) 在代碼修改處加上修改標識的注釋。(d) 在循環和邏輯分支組成的代碼中加注釋。(e) 為他人提供的接口必須加詳細注釋。4.常用工具類
/*** 通用工具類一般存放在,caiwei-common包的util下*/// 工具類【1】,【BeanUtils】Bean 工具類,常用于對象拷貝。BeanUtils.copyBeanProp(目標對象,源對象);// 工具類【2】,【file】文件處理工具類,包含文件增刪改、圖片處理、文件上傳。FileUtils、ImageUtils、FileUploadUtils// 工具類【3】,【html】通用html工具封裝,一般為系統放Xss攔截使用。// 工具類【4】,【http】通用http發送方法,包含通用Get、Post發送方法。// 發送Post請求 HttpResponse response = HttpUtils.doPost("請求地址", "請求接口", "請求方式", "請求header", "請求參數", bodys);System.out.println(response.toString());// 發送Get請求String rspStr = HttpUtils.sendGet("請求地址", "請求參數(xx=1&xx=2)", "編碼類型(Constants.GBK)");// 工具類【5】,【ip】IpUtils可用于獲取用戶ip地址、AddressUtils根據用戶ip地址獲取地址。// 獲取用戶ip地址IpUtils.getIpAddr(request);// 根據用戶ip地址,獲取地址AddressUtils.getRealAddressByIP(ip);// 工具類【6】,【Excel】Excel文檔處理可讀、寫文檔。// 導出ExcelExcelUtil<實體> util = new ExcelUtil<實體>(實體.class);return util.exportExcel(列表數據, "文件名");// 工具類【7】,【sign】加密方法,包含Base64加解密與解密。// 加密Base64.encode// 解密Base64.decodeStr// 工具類【8】,【spring】方便在非spring管理環境中獲取bean。// 獲取當前的用戶LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());// 工具類【9】,【uuid】包含兩個id生成工具類。IdUtils.randomUUID();UUID.randomUUID();// 工具類【10】,【AesUtil】用于用戶登錄加密與解密。AesUtil.encrypt("要加密的數據","加密key","加密iv");AesUtil.desEncrypt("要解密的數據","解密key","解密iv");// 工具類【11】,【DateUtils】包含一些常用的時間處理方法。// 獲取當前時間DateUtils.getNowDate();// 格式化時間DateUtils.parseDateToStr("格式化類型","時間");// 工具類【12】,【DictUtils】系統字典操作的工具類。DictUtils.getDictCache("字典key");// 工具類【13】,【JDBCUtils】數據庫鏈接工具類。總結
- 上一篇: 网站总结 和 相关控件 总结
- 下一篇: XP Embedded:不同的用户使用不