自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Feilong-core,一個讓Java開發(fā)更簡便的工具包

開發(fā) 開發(fā)工具
Reduce development,Release ideas (減少開發(fā),釋放思想), 希望可以減少書寫重復(fù)且繁雜的代碼,讓你從大量重復(fù)的底層代碼中脫身,提高工作效率;多思考業(yè)務(wù)的完整性,讓你的代碼更簡煉,易寫、易讀、易于維護.

[[373381]]

 還是那句話,既然吃了面向?qū)ο缶幊踢@碗飯,能不重復(fù)造輪子就盡量不造,今天介紹一款Java開發(fā)工具包feilong-core

一、背景

在JAVA開發(fā)過程中,經(jīng)常看到小伙伴直接從網(wǎng)上copy一長段代碼來使用,又或者寫的代碼很長很長很長...

痛點在于

  • 難以閱讀
  • 難以維護
  • sonar掃描結(jié)果債務(wù)長
  • codereview 被小伙伴鄙視
  • ....

feilong-core focus on J2SE是feilong platform的核心項目,創(chuàng)建于2008年

愿景: Reduce development,Release ideas (減少開發(fā),釋放思想), 希望可以減少書寫重復(fù)且繁雜的代碼,讓你從大量重復(fù)的底層代碼中脫身,提高工作效率;多思考業(yè)務(wù)的完整性,讓你的代碼更簡煉,易寫、易讀、易于維護;

經(jīng)過多個版本迭代,已經(jīng)逐步走向穩(wěn)定

二、feilong-core介紹

1. 簡介:

  • 讓你從大量重復(fù)的底層代碼中脫身,提高工作效率;
  • 讓你的代碼更簡煉,易寫、易讀、易于維護;

2. feilong-core 優(yōu)點:

使用 feilong-core 的理由

  • 有常用的工具類 (如 小巧實用日期處理 - DateUtil ,集合處理利器 - CollectionsUtil 等)
  • 有常用的JAVA常量類 (如 常用時間模式 — DatePattern , 常用時間間隔 —TimeInterval 等)
  • 不必要的Exception 轉(zhuǎn)成了RuntimeException,減少不必要的代碼
  • 國內(nèi)中文注釋最完善的API
  • 有完善的單元測試

3. feilong-core亮點之處

  • 有常用專屬工具類 (如處理日期的 DateUtil,處理集合的CollectionsUtil,類型轉(zhuǎn)換的ConvertUtil 等等等)
  • 有常用JAVA常量類 (如日期格式 DatePattern, 時間間隔 TimeInterval 等等等)
  • 不必要的Exception 轉(zhuǎn)成RuntimeException,減少不必要的代碼
  • 國內(nèi)中文注釋最完善的API
  • 有完善的單元測試

4. feilong-core工具包大全

feilong-core工具包

5. 部分功能圖解

feilong-core功能圖解

三、feilong-core常用API操作

1. ConvertUtil操作集合工具類

以前調(diào)用某個api時,該api需要一個list參數(shù),但是你現(xiàn)在只有單對象,這個場景你的代碼會怎么寫?

以前你要這么寫:

  1. List<Long> itemIds = new ArrayList<>(); 
  2. itemIds.add(itemId); 
  3.  
  4. sdkItemManager.findItemImageByItemIds(itemIds); 

現(xiàn)在你可以這么寫:

  1. sdkItemManager.findItemImageByItemIds(ConvertUtil.toList(itemId)); 

使用ConvertUtil.toList()方法,你只需要一行代碼就可以搞定,代碼簡潔又清爽。

同樣,下面的代碼

以前你是這么寫:

  1. List<Long> skuIds = new ArrayList<>(); 
  2. skuIds.add(9L); 
  3. skuIds.add(10L); 
  4. skuIds.add(13L); 
  5. skuIds.add(18L); 
  6. skuIds.add(20L); 
  7. BundleValidateResult result = bundleManager.validateBundle(skuIds); 

現(xiàn)在你可以簡寫:

  1. List<Long> skuIds=ConvertUtil.toList(9L, 10L, 13L, 18L, 20L); 
  2. BundleValidateResult result = bundleManager.validateBundle(skuIds); 

代碼的可讀性更高,更簡潔

2.CollectionsUtil.getPropertyValueList(Collection, String)

CollectionsUtil.getPropertyValueList(Collection, String) : 表示簡化循環(huán)遍歷集合,取到對象指定的屬性 propertyName 的值,然后調(diào)用list.add()方法添加到集合中,拼成 List(ArrayList) 這一過程

比如: 要提取SalesOrderCommand list里面的id屬性組成 List

以前你要這么寫:

  1. List<SalesOrderCommand> salesOrderList = sdkOrderDao.findOrdersWithOutPage(sorts, searchParam); 
  2.  
  3. //... 
  4.  
  5. List<Long> idList = new ArrayList<>(salesOrderList.size()); 
  6. for (SalesOrderCommand cmd : salesOrderList){ 
  7.     idList.add(cmd.getId()); 
  8.  
  9. //查詢訂單行 
  10. List<OrderLineCommand> allLineList = sdkOrderLineDao.findOrderDetailListByOrderIds(idList); 

現(xiàn)在你可以這么寫:

  1. List<SalesOrderCommand> salesOrderList = sdkOrderDao.findOrdersWithOutPage(sorts, searchParam); 
  2.  
  3. //... 
  4.  
  5. List<Long> idList =CollectionsUtil.getPropertyValueList(salesOrderList, "id"); 
  6.  
  7. //查詢訂單行 
  8. List<OrderLineCommand> allLineList = sdkOrderLineDao.findOrderDetailListByOrderIds(idList); 

現(xiàn)在只需寫CollectionsUtil.getPropertyValueList(salesOrderPage, "id") 這段代碼,可以一行搞定 。

Tips: 相似的方法,還有CollectionsUtil.getPropertyValueSet(Collection, String)以及 CollectionsUtil.getPropertyValueMap(Collection, String, String)。

3. 不能不說的異常處理

眾所周知,JAVA有checked exception 和 uncheckedException之分,也就是我們常說的 RuntimeException和 Exception。

checked exception有其使用場景,但是我們?nèi)粘i_發(fā)過程中,并沒有對他做特殊的代碼處理

比如,大部分小伙伴的代碼是這樣的:

  1. public ContactCommand toContactCommand(ContactCommand command) { 
  2.     try { 
  3.         BeanUtils.copyProperties(command, this); 
  4.     } catch (Exception e){ 
  5.         log.error("", e); 
  6.         //or e.printStackTrace(); 
  7.     } 
  8.     return command; 

其實細究下來,上述代碼是不合理的, 如果轉(zhuǎn)換的時候出現(xiàn)了異常,這里就會出現(xiàn)數(shù)據(jù)沒有轉(zhuǎn)換過去的情況,

這理論上是 RuntimeException,但是org.apache.commons.beanutils.BeanUtils ``里面使用的是Exception,所以小伙伴不能不try... catch一下,可是catch `代碼里面有可能僅僅寫了log記錄,這有可能會出現(xiàn)邏輯問題 (本來需要拋出異常讓事務(wù)回滾)。

這時可以使用com.feilong.core.bean.BeanUtil

  1. public ContactCommand toContactCommand(ContactCommand command){ 
  2.     com.feilong.core.bean.BeanUtil.copyProperties(command, this); 
  3.     return command; 

當(dāng)然,如果你確定copy的對象相同屬性名稱的類型是一致的,你可以使用 PropertyUtil,可以有效的避免不必要的類型轉(zhuǎn)換,提高效率

代碼簡潔,而且內(nèi)部包裝成的是自定義的 BeanOperationException(RuntimeException),如果需要特殊處理,依然可以 try...catch...

4. 有豐富的javadoc

調(diào)用方法的時候,可以清晰的感知這個方法的 作用,示例,說明點,參數(shù),返回值,異常等信息。

源碼示例:

  1. /** 
  2.  * 計算兩個時間相差的的天數(shù)(<span style="color:red">絕對值</span>). 
  3.  *  
  4.  * <h3>說明:</h3> 
  5.  * <blockquote> 
  6.  * <p> 
  7.  * 值=兩個時間相差毫秒的絕對值/{@link TimeInterval#MILLISECOND_PER_DAY} 
  8.  * </p> 
  9.  * </blockquote> 
  10.  *  
  11.  * <h3>示例:</h3> 
  12.  *  
  13.  * <blockquote> 
  14.  *  
  15.  * <pre class="code"
  16.  * DateExtensionUtil.getIntervalDay( 
  17.  *      toDate("2008-08-24",COMMON_DATE), 
  18.  *      toDate("2008-08-27",COMMON_DATE)) = 3 
  19.  *  
  20.  * DateExtensionUtil.getIntervalDay( 
  21.  *      toDate("2016-08-21 12:00:00",COMMON_DATE_AND_TIME), 
  22.  *      toDate("2016-08-22 11:00:00",COMMON_DATE_AND_TIME)) = 0 
  23.  *  
  24.  * DateExtensionUtil.getIntervalDay( 
  25.  *      toDate("2016-08-21",COMMON_DATE), 
  26.  *      toDate("2016-08-22",COMMON_DATE)) = 1 
  27.  *       
  28.  * DateExtensionUtil.getIntervalDay( 
  29.  *      toDate("2016-02-28",COMMON_DATE), 
  30.  *      toDate("2016-03-02",COMMON_DATE)) = 3 
  31.  *  
  32.  * DateExtensionUtil.getIntervalDay( 
  33.  *      toDate("2016-08-31",COMMON_DATE), 
  34.  *      toDate("2016-09-02",COMMON_DATE)) = 2 
  35.  *  
  36.  * </pre> 
  37.  *  
  38.  * </blockquote> 
  39.  *  
  40.  * @param date1 
  41.  *            date1 
  42.  * @param date2 
  43.  *            date2 
  44.  * @return 如果 <code>date1</code> 是null,拋出 {@link NullPointerException}<br> 
  45.  *         如果 <code>date2</code> 是null,拋出 {@link NullPointerException} 
  46.  * @see #getIntervalTime(DateDate
  47.  * @see #getIntervalDay(long) 
  48.  * @since 1.6.0 
  49.  */ 
  50. public static int getIntervalDay(Date date1,Date date2){ 
  51.     return getIntervalDay(getIntervalTime(date1, date2)); 

 如果你使用maven的話,只需要在依賴的jar 右鍵,maven--> download javadoc 或者 download sources會自動下載。

四、Maven使用配置

1. 如果你是導(dǎo)入jar包到工程

下載地址: https://github.com/venusdrogon/feilong-platform/tree/repository/com/feilong/platform/feilong-core

2. 如果你是Maven構(gòu)建

  • pom.xml引入feilong-core及倉庫地址

  1. <project> 
  2.         .... 
  3.         <properties> 
  4.             <version.feilong-platform>2.1.0</version.feilong-platform> 
  5.             .... 
  6.         </properties> 
  7.         .... 
  8.         <repositories> 
  9.             <repository> 
  10.                 <id>feilong-repository</id> 
  11.                 <url>https://raw.github.com/venusdrogon/feilong-platform/repository</url> 
  12.             </repository> 
  13.         </repositories> 
  14.         .... 
  15.         <dependencies> 
  16.             .... 
  17.             <dependency> 
  18.                 <groupId>com.feilong.platform</groupId> 
  19.                 <artifactId>feilong-core</artifactId> 
  20.                 <version>${version.feilong-platform}</version> 
  21.             </dependency> 
  22.             .... 
  23.         </dependencies> 
  24.         .... 
  25.     </project> 

3. feilong-util-all(全家桶,含IO操作,Net操作,Json,等工具類)

  • pom.xml引入feilong-util-all及倉庫地址

  1. <project> 
  2.  
  3.     .... 
  4.     <properties> 
  5.         <version.feilong-platform>2.1.0</version.feilong-platform> 
  6.         .... 
  7.     </properties> 
  8.  
  9.     .... 
  10.     <repositories> 
  11.         <repository> 
  12.             <id>feilong-repository</id> 
  13.             <url>https://raw.github.com/venusdrogon/feilong-platform/repository</url> 
  14.         </repository> 
  15.     </repositories> 
  16.  
  17.     .... 
  18.     <dependencies> 
  19.         .... 
  20.         <dependency> 
  21.             <groupId>com.feilong.platform</groupId> 
  22.             <artifactId>feilong-util-all</artifactId> 
  23.             <version>${version.feilong-platform}</version> 
  24.         </dependency> 
  25.         .... 
  26.     </dependencies> 
  27.     .... 
  28. </project> 

五、feilong依賴的第三方包

1. maven 依賴

  1. <dependencies> 
  2.        <dependency> 
  3.            <groupId>org.apache.commons</groupId> 
  4.            <artifactId>commons-lang3</artifactId> 
  5.            <version>3.6</version> 
  6.        </dependency> 
  7.         
  8.        <dependency> 
  9.            <groupId>org.apache.commons</groupId> 
  10.            <artifactId>commons-collections4</artifactId> 
  11.            <version>4.1</version> 
  12.        </dependency> 
  13.         
  14.        <dependency> 
  15.            <groupId>commons-beanutils</groupId> 
  16.            <artifactId>commons-beanutils</artifactId> 
  17.            <version>1.9.3</version> 
  18.        </dependency> 
  19.      </dependencies> 

2. 你也可以自行下載:

commons-lang3

  • 官方地址: http://commons.apache.org/proper/commons-lang/download_lang.cgi
  • maven地址: http://search.maven.org/#search%7Cga%7C1%7Ca%3A%22commons-lang3%22%20AND%20g%3A%22org.apache.commons%22

commons-collections4

  • 官方地址: http://commons.apache.org/proper/commons-collections/download_collections.cgi
  • 官方地址: http://search.maven.org/#search%7Cga%7C1%7Ca%3A%22commons-collections4%22%20AND%20g%3A%22org.apache.commons%22

commons-beanutils

  • 官方地址: http://commons.apache.org/proper/commons-beanutils/download_beanutils.cgi
  • maven地址: http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22commons-beanutils%22%20AND%20a%3A%22commons-beanutils%22

六、feilong-core API大綱

七、參考
feilong-core: http://feilong-core.mydoc.io/

 

責(zé)任編輯:姜華 來源: Thinking曹
相關(guān)推薦

2020-07-09 10:02:27

Python開發(fā)工具

2020-03-12 13:55:05

工具代碼開發(fā)

2023-08-11 08:39:36

工具AI

2021-03-10 10:00:31

Go語言strconv包類型轉(zhuǎn)換工具

2021-03-05 10:03:21

網(wǎng)絡(luò)釣魚LogoKit網(wǎng)絡(luò)犯罪

2009-04-03 11:12:43

PalmwebOS開發(fā)

2023-09-28 21:39:26

HutoolJava工具包

2010-02-23 10:04:16

Silverlight

2009-04-03 08:36:53

PalmWebOSsdk

2022-09-20 15:43:58

Python工具包編程

2023-02-15 08:26:29

iOS工具

2009-10-28 10:18:52

GWTWeb開發(fā)

2015-01-14 13:07:03

2022-10-31 07:09:15

拷貝代碼項目

2009-08-11 09:30:37

Windows 7開發(fā)

2025-03-12 13:04:01

2014-10-21 11:36:06

Android 5.0Google

2021-07-14 09:56:27

谷歌Android游戲開發(fā)工具包

2009-06-04 14:18:44

Windows Mob工具包

2012-07-12 13:13:28

HTML5
點贊
收藏

51CTO技術(shù)棧公眾號