> åæé¾æ¥ï¼https://www.cnblogs.com/liqiangchn/p/12000361.html ç®æ´æ¸ ç½ç代ç 飿 ¼åºè¯¥æ¯å¤§å¤æ°å·¥ç¨å¸ææå¾ çãå¨å·¥ä½ä¸ç¬è 常常å 为起ååèçº ç»ï¼å¤¸å¼ ç¹å¯ä»¥è¯´æ¯ç¼ç¨5åéï¼å½å䏤尿¶ï¼ç©¶ç«ä¸ºä»ä¹å½åæä¸ºäºå·¥ä½ä¸çæ¦è·¯èã æ¯ä¸ªå ¬å¸é½æä¸åçæ åï¼ç®çæ¯ä¸ºäºä¿æç»ä¸ï¼åå°æ²éææ¬ï¼æåå¢éç åæè½ãæä»¥æ¬æä¸æ¯ç¬è ç»åé¿éå·´å·´å¼åè§èï¼ä»¥åå·¥ä½ä¸çè§é»é对Javaé¢åç¸å ³å½åè¿è¡æ´çåæ»ç»ï¼ä» ä¾åèã ## ä¸ï¼Javaä¸çå½åè§è 好çå½åè½ä½ç°åºä»£ç çç¹å¾ï¼å«ä¹æè æ¯ç¨éï¼è®©é 读è å¯ä»¥æ ¹æ®åç§°çå«ä¹å¿«é忏 ç¨åºçèç»ãä¸åè¯è¨ä¸éç¨çå½åå½¢å¼å¤§ç¸å¾åºï¼Javaä¸å¸¸ç¨å°çå½åå½¢å¼å ±æä¸ç§ï¼æ¢é¦åæ¯å¤§åçUpperCamelCaseï¼é¦åæ¯å°åçlowerCamelCase以åå ¨é¨å¤§åçå¹¶ç¨ä¸å线åå²åè¯çUPPER_CAMEL_UNSER_SCOREãé常约å®ï¼**ç±»ä¸è¬éç¨å¤§é©¼å³°å½åï¼æ¹æ³åå±é¨åé使ç¨å°é©¼å³°å½åï¼è大åä¸å线å½åé常æ¯å¸¸éåæä¸¾ä¸ä½¿ç¨ã** | ç±»å | 约æ | ä¾ | | :----: | :----------------------------------------------------------: | :--------------------------------------------: | | 项ç®å | å ¨é¨å°åï¼å¤ä¸ªåè¯ç¨ä¸å线åéâ-â | spring-cloud | | å å | å ¨é¨å°å | com.alibaba.fastjson | | ç±»å | åè¯é¦åæ¯å¤§å | Feature, ParserConfig,DefaultFieldDeserializer | | åéå | é¦åæ¯å°åï¼å¤ä¸ªåè¯ç»ææ¶ï¼é¤é¦ä¸ªåè¯ï¼å ¶ä»åè¯é¦åæ¯é½è¦å¤§å | password, userName | | 常éå | å ¨é¨å¤§åï¼å¤ä¸ªåè¯ï¼ç¨'_'åé | CACHE_EXPIRED_TIME | | æ¹æ³ | ååé | read(), readObject(), getById() | ## äºï¼å å½å **å å**ç»ä¸ä½¿ç¨**å°å**ï¼**ç¹åé符**ä¹é´æä¸ä» æä¸ä¸ªèªç¶è¯ä¹çè±æåè¯æè å¤ä¸ªåè¯èªç¶è¿æ¥å°ä¸åï¼å¦ springframeworkï¼deepspaceä¸éè¦ä½¿ç¨ä»»ä½åå²ï¼ãå åç»ä¸ä½¿ç¨åæ°å½¢å¼ï¼å¦æç±»å½æå¤æ°å«ä¹ï¼åå¯ä»¥ä½¿ç¨å¤æ°å½¢å¼ã å åçææå¯ä»¥å为以ä¸å åé¨åãåç¼ã ãåèµ·è åãã项ç®åããæ¨¡ååãã常è§çåç¼å¯ä»¥å为以ä¸å ç§ï¼ | åç¼å | ä¾ | å«ä¹ | | :-------------: | :----------------------------: | :----------------------------------------------------------: | | indiï¼æonem ï¼ | indi.åèµ·è å.项ç®å.模åå.â¦â¦ | 个ä½é¡¹ç®ï¼æä¸ªäººåèµ·ï¼ä½éèªå·±ç¬èªå®æç项ç®ï¼å¯å ¬å¼æç§æé¡¹ç®ï¼copyright主è¦å±äºåèµ·è ã | | pers | pers.个人å.项ç®å.模åå.â¦â¦ | 个人项ç®ï¼æä¸ªäººåèµ·ï¼ç¬èªå®æï¼å¯å享ç项ç®ï¼copyright主è¦å±äºä¸ªäºº | | priv | priv.个人å.项ç®å.模åå.â¦â¦ | ç§æé¡¹ç®ï¼æä¸ªäººåèµ·ï¼ç¬èªå®æï¼éå ¬å¼çç§äººä½¿ç¨ç项ç®ï¼copyrightå±äºä¸ªäººã | | team | team.å¢éå.项ç®å.模åå.â¦â¦ | å¢é项ç®ï¼æç±å¢éåèµ·ï¼å¹¶ç±è¯¥å¢éå¼åç项ç®ï¼copyrightå±äºè¯¥å¢éææ | | 顶级åå | com.å ¬å¸å.项ç®å.模åå.â¦â¦ | å ¬å¸é¡¹ç®ï¼copyrightç±é¡¹ç®åèµ·çå ¬å¸ææ | ## ä¸ï¼ç±»å½å **ç±»å使ç¨å¤§é©¼å³°å½åå½¢å¼**ï¼ç±»å½é常æ¶**åè¯æåè¯çè¯**ï¼æ¥å£åé¤äºç¨åè¯ååè¯çè¯ä»¥å¤ï¼è¿å¯ä»¥ä½¿ç¨å½¢å®¹è¯æå½¢å®¹è¯çè¯ï¼å¦Cloneableï¼Callableçï¼è¡¨ç¤ºå®ç°è¯¥æ¥å£çç±»ææç§åè½æè½åãå¯¹äºæµè¯ç±»å以å®è¦æµè¯çç±»å¼å¤´ï¼ä»¥Testç»å°¾ï¼å¦HashMapTestã 对äºä¸äºç¹æ®ç¹æåè¯ç¼©åä¹å¯ä»¥ä½¿ç¨å ¨å¤§åå½åï¼æ¯å¦XMLHttpRequestï¼ä¸è¿ç¬è 认为缩åä¸ä¸ªåæ¯ä»¥å é½å¤§åï¼è¶ è¿ä¸ä¸ªåæ¯åæç §è¦ç»åè¯ç®ãè¿ä¸ªæ²¡ææ åå¦é¿éå·´å·´ä¸fastjsonç¨JSONObjectä½ä¸ºç±»å½ï¼ègoogleå使ç¨JsonObjectRequestå½åï¼å¯¹äºè¿ç§ç¹æ®ç缩åï¼å忝ç»ä¸å°±å¥½ã | 屿§ | 约æ | ä¾ | | -------------- | ----------------------------------------- | ------------------------------------------------------------ | | æ½è±¡ç±» | Abstract æè Base å¼å¤´ | BaseUserService | | æä¸¾ç±» | Enum ä½ä¸ºåç¼ | GenderEnum | | å·¥å ·ç±» | Utilsä½ä¸ºåç¼ | StringUtils | | å¼å¸¸ç±» | Exceptionç»å°¾ | RuntimeException | | æ¥å£å®ç°ç±» | æ¥å£å+ Impl | UserServiceImpl | | é¢å模åç¸å ³ | /DO/DTO/VO/DAO | æ£ä¾ï¼UserDAO åä¾ï¼ UserDoï¼ UserDao | | 设计模å¼ç¸å ³ç±» | Builderï¼Factoryç | å½ä½¿ç¨å°è®¾è®¡æ¨¡å¼æ¶ï¼éè¦ä½¿ç¨å¯¹åºç设计模å¼ä½ä¸ºåç¼ï¼å¦ThreadFactory | | å¤çç¹å®åè½ç | Handlerï¼Predicate, Validator | 表示å¤çå¨ï¼æ ¡éªå¨ï¼æè¨ï¼è¿äºç±»å·¥åè¿æé å¥çæ¹æ³åå¦handleï¼predicateï¼validate | | æµè¯ç±» | Testç»å°¾ | UserServiceTestï¼ è¡¨ç¤ºç¨æ¥æµè¯UserServiceç±»ç | | MVCåå± | Controllerï¼Serviceï¼ServiceImplï¼DAOåç¼ | UserManageControllerï¼UserManageDAO | ## åï¼æ¹æ³ **æ¹æ³å½åéç¨å°é©¼å³°çå½¢å¼**ï¼é¦åå°åï¼å¾åçæ¯ä¸ªåè¯é¦åæ¯é½è¦å¤§åã åç±»åä¸åçæ¯ï¼æ¹æ³å½åä¸è¬ä¸º**å¨è¯æå¨è¯çè¯**ï¼ä¸åæ°æåæ°åå ±åç»æå¨å®¾çè¯ï¼å³å¨è¯ + åè¯ãä¸ä¸ªå¥½ç彿°åä¸è¬è½éè¿ååç´æ¥è·ç¥è¯¥å½æ°å®ç°ä»ä¹æ ·çåè½ã ### 4.1 è¿åç伪å¼çæ¹æ³ 注ï¼Prefix-åç¼ï¼Suffix-åç¼ï¼Alone-åç¬ä½¿ç¨ | ä½ç½® | åè¯ | æä¹ | ä¾ | | ------ | ------ | ------------------------------------------------------------ | ------------- | | Prefix | is | 对象æ¯å¦ç¬¦åæå¾ çç¶æ | isValid | | Prefix | can | 对象**è½å¦æ§è¡**ææå¾ çå¨ä½ | canRemove | | Prefix | should | è°ç¨æ¹æ§è¡æä¸ªå½ä»¤ææ¹æ³æ¯**å¥½è¿æ¯ä¸å¥½**,**åºä¸åºè¯¥**ï¼æè 说**æ¨èè¿æ¯ä¸æ¨è** | shouldMigrate | | Prefix | has | 对象**æ¯å¦ææ**ææå¾ çæ°æ®å屿§ | hasObservers | | Prefix | needs | è°ç¨æ¹**æ¯å¦éè¦**æ§è¡æä¸ªå½ä»¤ææ¹æ³ | needsMigrate | ### 4.2 ç¨æ¥æ£æ¥çæ¹æ³ | åè¯ | æä¹ | ä¾ | | -------- | ---------------------------------------------------- | -------------- | | ensure | æ£æ¥æ¯å¦ä¸ºæå¾ çç¶æï¼ä¸æ¯åæåºå¼å¸¸æè¿åerror code | ensureCapacity | | validate | æ£æ¥æ¯å¦ä¸ºæ£ç¡®çç¶æï¼ä¸æ¯åæåºå¼å¸¸æè¿åerror code | validateInputs | ### 4.3 æéæ±ææ§è¡çæ¹æ³ | ä½ç½® | åè¯ | æä¹ | ä¾ | | ------ | --------- | ----------------------------------------- | ---------------------- | | Suffix | IfNeeded | éè¦çæ¶åæ§è¡ï¼ä¸éè¦çæ¶åä»ä¹é½ä¸å | drawIfNeeded | | Prefix | might | åä¸ | mightCreate | | Prefix | try | å°è¯æ§è¡ï¼å¤±è´¥æ¶æåºå¼å¸¸ææ¯è¿åerrorcode | tryCreate | | Suffix | OrDefault | å°è¯æ§è¡ï¼å¤±è´¥æ¶è¿åé»è®¤å¼ | getOrDefault | | Suffix | OrElse | å°è¯æ§è¡ã失败æ¶è¿åå®é 忰䏿å®çå¼ | getOrElse | | Prefix | force | 强å¶å°è¯æ§è¡ãerroræåºå¼å¸¸ææ¯è¿åå¼ | forceCreate, forceStop | ### 4.4 弿¥ç¸å ³æ¹æ³ | ä½ç½® | åè¯ | æä¹ | ä¾ | | --------------- | ------------ | -------------------------------------------- | --------------------- | | Prefix | blocking | 线ç¨é»å¡æ¹æ³ | blockingGetUser | | Suffix | InBackground | æ§è¡å¨åå°ççº¿ç¨ | doInBackground | | Suffix | Async | 弿¥æ¹æ³ | sendAsync | | Suffix | Sync | 对åºå·²æå¼æ¥æ¹æ³çåæ¥æ¹æ³ | sendSync | | Prefix or Alone | schedule | JobåTaskæ¾å ¥éå | schedule, scheduleJob | | Prefix or Alone | post | åä¸ | postJob | | Prefix or Alone | execute | æ§è¡å¼æ¥æ¹æ³ï¼æ³¨ï¼æä¸è¬æ¿è¿ä¸ªååæ¥æ¹æ³åï¼ | execute, executeTask | | Prefix or Alone | start | åä¸ | start, startJob | | Prefix or Alone | cancel | 忢弿¥æ¹æ³ | cancel, cancelJob | | Prefix or Alone | stop | åä¸ | stop, stopJob | ### 4.5 åè°æ¹æ³ | ä½ç½® | åè¯ | æä¹ | ä¾ | | ------ | ------ | -------------------------- | ------------ | | Prefix | on | äºä»¶åçæ¶æ§è¡ | onCompleted | | Prefix | before | äºä»¶åçåæ§è¡ | beforeUpdate | | Prefix | pre | åä¸ | preUpdate | | Prefix | will | åä¸ | willUpdate | | Prefix | after | äºä»¶åçåæ§è¡ | afterUpdate | | Prefix | post | åä¸ | postUpdate | | Prefix | did | åä¸ | didUpdate | | Prefix | should | 确认äºä»¶æ¯å¦å¯ä»¥åçæ¶æ§è¡ | shouldUpdate | ### 4.6 æä½å¯¹è±¡çå½å¨æçæ¹æ³ | åè¯ | æä¹ | ä¾ | | ---------- | ------------------------------ | --------------- | | initialize | åå§åãä¹å¯ä½ä¸ºå»¶è¿åå§åä½¿ç¨ | initialize | | pause | æå | onPause ï¼pause | | stop | 忢 | onStopï¼stop | | abandon | éæ¯çæ¿ä»£ | abandon | | destroy | åä¸ | destroy | | dispose | åä¸ | dispose | ### 4.7 ä¸éåæä½ç¸å ³çæ¹æ³ | åè¯ | æä¹ | ä¾ | | -------- | ---------------------------- | ---------- | | contains | æ¯å¦ææä¸æå®å¯¹è±¡ç¸åç对象 | contains | | add | æ·»å | addJob | | append | æ·»å | appendJob | | insert | æå ¥å°ä¸æ n | insertJob | | put | æ·»å ä¸key对åºçå ç´ | putJob | | remove | ç§»é¤å ç´ | removeJob | | enqueue | æ·»å å°éåçææ«ä½ | enqueueJob | | dequeue | ä»éåä¸å¤´é¨ååºå¹¶ç§»é¤ | dequeueJob | | push | æ·»å å°æ 头 | pushJob | | pop | 仿 头ååºå¹¶ç§»é¤ | popJob | | peek | 仿 头ååºä½ä¸ç§»é¤ | peekJob | | find | 寻æ¾ç¬¦åæ¡ä»¶çæç© | findById | ### 4.8 䏿°æ®ç¸å ³çæ¹æ³ | åè¯ | æä¹ | ä¾ | | ------ | -------------------------------------- | ------------- | | create | æ°å建 | createAccount | | new | æ°å建 | newAccount | | from | 仿¢æçæç©æ°å»ºï¼ææ¯ä»å ¶ä»çæ°æ®æ°å»º | fromConfig | | to | è½¬æ¢ | toString | | update | æ´æ°æ¢ææç© | updateAccount | | load | 读å | loadAccount | | fetch | è¿ç¨è¯»å | fetchAccount | | delete | å é¤ | deleteAccount | | remove | å é¤ | removeAccount | | save | ä¿å | saveAccount | | store | ä¿å | storeAccount | | commit | ä¿å | commitChange | | apply | ä¿åæåºç¨ | applyChange | | clear | æ¸ é¤æ°æ®ææ¯æ¢å¤å°åå§ç¶æ | clearAll | | reset | æ¸ é¤æ°æ®ææ¯æ¢å¤å°åå§ç¶æ | resetAll | ### 4.9 æå¯¹åºç°çå¨è¯ | åè¯ | æä¹ | | -------------- | ----------------- | | getè·å | set 设置 | | add å¢å | remove å é¤ | | create å建 | destory ç§»é¤ | | start å¯å¨ | stop 忢 | | open æå¼ | close å ³é | | read 读å | write åå ¥ | | load è½½å ¥ | save ä¿å | | create å建 | destroy 鿝 | | begin å¼å§ | end ç»æ | | backup å¤ä»½ | restore æ¢å¤ | | import å¯¼å ¥ | export å¯¼åº | | split åå² | merge åå¹¶ | | inject æ³¨å ¥ | extract æå | | attach éç | detach è±ç¦» | | bind ç»å® | separate å离 | | view æ¥ç | browse æµè§ | | edit ç¼è¾ | modify ä¿®æ¹ | | select éå | mark æ è®° | | copy å¤å¶ | paste ç²è´´ | | undo æ¤é | redo éå | | insert æå ¥ | delete ç§»é¤ | | add å å ¥ | append æ·»å | | clean æ¸ ç | clear æ¸ é¤ | | index ç´¢å¼ | sort æåº | | find æ¥æ¾ | search æç´¢ | | increase å¢å | decrease åå° | | play ææ¾ | pause æå | | launch å¯å¨ | run è¿è¡ | | compile ç¼è¯ | execute æ§è¡ | | debug è°è¯ | trace è·è¸ª | | observe è§å¯ | listen çå¬ | | build æå»º | publish åå¸ | | input è¾å ¥ | output è¾åº | | encode ç¼ç | decode è§£ç | | encrypt å å¯ | decrypt è§£å¯ | | compress å缩 | decompress è§£å缩 | | pack æå | unpack è§£å | | parse è§£æ | emit çæ | | connect è¿æ¥ | disconnect æå¼ | | send åé | receive æ¥æ¶ | | download ä¸è½½ | upload ä¸ä¼ | | refresh å·æ° | synchronize 忥 | | update æ´æ° | revert å¤å | | lock éå® | unlock è§£é | | check out ç¾åº | check in ç¾å ¥ | | submit æäº¤ | commit äº¤ä» | | push æ¨ | pull æ | | expand å±å¼ | collapse æå | | begin èµ·å§ | end ç»æ | | start å¼å§ | finish 宿 | | enter è¿å ¥ | exit éåº | | abort æ¾å¼ | quit ç¦»å¼ | | obsolete åºå¼ | depreciate åºæ§ | | collect æ¶é | aggregate èé | ## äºï¼åé&常éå½å ### 5.1 åéå½å å鿝æå¨ç¨åºè¿è¡ä¸å¯ä»¥æ¹åå ¶å¼çéï¼å æ¬æååéåå±é¨åéãåéåç±å¤åè¯ç»ææ¶ï¼ç¬¬ä¸ä¸ªåè¯çé¦åæ¯å°åï¼å ¶ååè¯çé¦åæ¯å¤§åï¼ä¿ç§°éªé©¼å¼å½åæ³ï¼ä¹ç§°é©¼å³°å½åæ³ï¼ï¼å¦ computedValuesï¼indexãåéå½åæ¶ï¼å°½éç®çä¸è½æ¸ æ¥ç表达åéçä½ç¨ï¼å½åä½ç°å ·ä½çä¸å¡å«ä¹å³å¯ã åéåä¸åºä»¥ä¸å线æç¾å 符å·å¼å¤´ï¼å°½ç®¡è¿å¨è¯æ³ä¸æ¯å 许çãåéååºç®çä¸å¯äºæè¿°ãåéåçéç¨åºè¯¥æäºè®°å¿ï¼å³ï¼è½å¤æåºå ¶ç¨éãå°½éé¿å å个å符çåéåï¼é¤éæ¯ä¸æ¬¡æ§ç临æ¶åéãpojoä¸çå¸å°åéï¼é½ä¸è¦å is(æ°æ®åºä¸çå¸å°åæ®µå ¨é½è¦å is_ åç¼)ã ### 5.2 常éå½å 常éå½åCONSTANT_CASEï¼ä¸è¬éç¨å ¨é¨å¤§åï¼ä½ä¸ºæ¹æ³åæ°æ¶é¤å¤ï¼ï¼åè¯é´ç¨ä¸å线åå²ãé£ä¹ä»ä¹æ¯å¸¸éå¢ï¼ 叏鿝å¨ä½ç¨åå ä¿æä¸åçå¼ï¼ä¸è¬ä½¿ç¨finalè¿è¡ä¿®é¥°ãä¸è¬å为ä¸ç§ï¼å ¨å±å¸¸éï¼public static final修饰ï¼ï¼ç±»å 常éï¼private static final 修饰ï¼ä»¥åå±é¨å¸¸éï¼æ¹æ³å ï¼æè åæ°ä¸ç常éï¼ï¼å±é¨å¸¸éæ¯è¾ç¹æ®ï¼é常éç¨å°é©¼å³°å½åå³å¯ã ```java /** * ä¸ä¸ªdemo * * @author Jann Lee * @date 2019-12-07 00:25 **/ public class HelloWorld { /** * å±é¨å¸¸é(æ£ä¾) */ public static final long USER_MESSAGE_CACHE_EXPIRE_TIME = 3600; /** * å±é¨å¸¸é(åä¾ï¼å½å䏿¸ æ°ï¼ */ public static final long MESSAGE_CACHE_TIME = 3600; /** * å ¨å±å¸¸é */ private static final String ERROR_MESSAGE = " error message"; /** * æååé */ private int currentUserId; /** * æ§å¶å°æå° {@code message} ä¿¡æ¯ * * @param message æ¶æ¯ä½ï¼å±é¨å¸¸é */ public void sayHello(final String message){ System.out.println("Hello world!"); } } ``` 常éä¸è¬é½æèªå·±çä¸å¡å«ä¹,**ä¸è¦å®³æé¿åº¦è¿é¿èè¿è¡çç¥æè 缩å**ãå¦ï¼ç¨æ·æ¶æ¯ç¼åè¿ææ¶é´ç表示ï¼é£ç§æ¹å¼æ´ä½³æ¸ æ°ï¼äº¤ç»ä½ æ¥è¯å¤ã ## éç¨å½åè§å[#](https://www.cnblogs.com/liqiangchn/p/12000361.html#450918152) 1. å°½éä¸è¦ä½¿ç¨æ¼é³ï¼æç»æ¼é³åè±ææ··ç¨ã对äºä¸äºéç¨ç表示æè é¾ä»¥ç¨è±ææè¿°çå¯ä»¥éç¨æ¼é³ï¼ä¸æ¦éç¨æ¼é³å°±åå³ä¸è½åè±ææ··ç¨ã æ£ä¾ï¼ BeiJingï¼ HangZhou åä¾ï¼ validateCanShu 2. å½åè¿ç¨ä¸å°½éä¸è¦åºç°ç¹æ®çå符ï¼å¸¸éé¤å¤ã 3. å°½éä¸è¦åjdkæè æ¡æ¶ä¸å·²åå¨çç±»éåï¼ä¹ä¸è½ä½¿ç¨javaä¸çå ³é®åå½åã 4. å¦ç¨ä»è¯ï¼å¦for(å¯ä»¥ç¨åé³ç4代æ¿), to(å¯ç¨åé³ç2代æ¿), from, withï¼ofçã å¦ç±»åéç¨User4RedisDOï¼æ¹æ³ågetUserInfoFromRedisï¼convertJson2Mapçã ## å ï¼ä»£ç 注解 ### 6.1 注解çåå 好çå½åå¢å 代ç é 读æ§ï¼ä»£ç çå½åå¾å¾æä¸¥æ ¼çéå¶ãèæ³¨è§£ä¸åï¼ç¨åºåå¾å¾å¯ä»¥èªç±åæ¥ï¼å并䏿å³çå¯ä»¥ä¸ºææ¬²ä¸ºä¹è¡ä½é为ãä¼é çæ³¨è§£éå¸¸è¦æ»¡è¶³ä¸è¦ç´ ã 1. Nothing is strange æ²¡ææ³¨è§£ç代ç 对äºé 读è é常ä¸å好ï¼åªæä»£ç åç卿¸ é¤ï¼é 读è è³å°ä»å¿çä¸ä¼ææµè§¦ï¼æ´ä½åµä»£ç ä¸å¾å¾æè®¸å¤å¤æçé»è¾ï¼æä»¥ä¸å®è¦å注解ï¼ä¸ä» è¦è®°å½ä»£ç çé»è¾ï¼è¿æè¯´æ¸ æ¥ä¿®æ¹çé»è¾ã 2. Less is more ä»ä»£ç ç»´æ¤è§åº¦æ¥è®²ï¼ä»£ç ä¸ç注解ä¸å®æ¯ç²¾åä¸çç²¾åãåçæ¸ æ°çå½åè½è®©ä»£ç æäºçè§£ï¼å¯¹äºé»è¾ç®åä¸å½åè§èï¼è½å¤æ¸ æ¥è¡¨è¾¾ä»£ç åè½ç代ç ä¸éè¦æ³¨è§£ãæ»¥ç¨æ³¨è§£ä¼å¢å é¢å¤çè´æ ï¼æ´ä½åµå¤§é¨å齿¯åºè¯ã ```java // æ ¹æ®idè·åä¿¡æ¯ãåºè¯æ³¨è§£ã getMessageById(id) ``` 1. Advance with the time 注解åºè¯¥éç代ç çåå¨èæ¹åï¼æ³¨è§£è¡¨è¾¾çä¿¡æ¯è¦ä¸ä»£ç ä¸å®å ¨ä¸è´ãé常æ åµä¸ä¿®æ¹ä»£ç åä¸å®è¦ä¿®æ¹æ³¨è§£ã ### 6.2 æ³¨è§£æ ¼å¼ æ³¨è§£å¤§ä½ä¸å¯ä»¥å为两ç§ï¼ä¸ç§æ¯javadoc注解ï¼å¦ä¸ç§æ¯ç®å注解ãjavadoc注解å¯ä»¥çæJavaAPI为å¤é¨ç¨æ·æä¾ææçæ¯æjavadoc注解é常å¨ä½¿ç¨IDEAï¼æè Eclipseçå¼åå·¥å ·æ¶é½å¯ä»¥èªå¨çæï¼ä¹æ¯æèªå®ä¹ç注解模æ¿ï¼ä» éè¦å¯¹å¯¹åºçåæ®µè¿è¡è§£éãåä¸åä¸é¡¹ç®å¼åçåå¦ï¼å°½é设置æç¸åçæ³¨è§£æ¨¡æ¿ã #### a. å æ³¨è§£ å æ³¨è§£å¨å·¥ä½ä¸å¾å¾æ¯è¾ç¹æ®ï¼éè¿å 注解å¯ä»¥å¿«éç¥æå½åå ä¸ä»£ç æ¯ç¨æ¥å®ç°åªäºåè½ï¼å¼ºç建议工ä½ä¸å ä¸ï¼å°¤å ¶æ¯å¯¹äºä¸äºæ¯è¾å¤æçå ï¼å 注解ä¸è¬å¨å çæ ¹ç®å½ä¸ï¼åç§°ç»ä¸ä¸ºpackage-info.javaã ```java /** * è½å°ä¹è´¨éæ£æµ * 1. ç¨æ¥è§£å³ä»ä¹é®é¢ * 对广åä¸»ææ¾ç广åè½å°é¡µè¿è¡æ§è½æ£æµï¼æ¨¡æä¸åçç³»ç»ï¼å¦Androidï¼IOSç; 模æä¸åçç½ç»ï¼2Gï¼3Gï¼4Gï¼wifiç * * 2. å¦ä½å®ç° * åºäºchromeæµè§å¨ï¼ç¨chromedriver驱卿µè§å¨ï¼è®¾ç½®å¯¹åºçç½ç»ï¼OSåæ°ï¼è·åå°æµè§å¨è¿åç»æã * * 注æï¼ ç½ç»ç¯å¢é 置信æ¯{@link cn.mycookies.landingpagecheck.meta.NetWorkSpeedEnum}ç®åä½¿ç¨æ¯å¸¸è§é度ï¼å¯ä»¥æ ¹æ®å®é æ åµè¿è¡è°æ´ * * @author cruder * @time 2019/12/7 20:3 ä¸å */ package cn.mycookies.landingpagecheck; ``` #### b. ç±»æ³¨æ¥ javadoc注解ä¸ï¼æ¯ä¸ªç±»é½å¿ é¡»ææ³¨è§£ã ```java /** * Copyright (C), 2019-2020, Jann balabala... * * ç±»çä»ç»ï¼è¿æ¯ä¸ä¸ªç¨æ¥åä»ä¹äºæ çç±»ï¼æåªäºåè½ï¼ç¨å°çææ¯..... * * @author ç±»å建è å§å ä¿æå¯¹é½ * @date åå»ºæ¥æ ä¿æå¯¹é½ * @version çæ¬å· ä¿æå¯¹é½ */ ``` #### c. 屿§æ³¨è§£ 卿¯ä¸ªå±æ§åé¢å¿ é¡»å ä¸å±æ§æ³¨éï¼é常æä»¥ä¸ä¸¤ç§å½¢å¼ï¼è³äºæä¹éæ©ï¼ä½ é«å ´å°±å¥½ï¼ä¸è¿ä¸ä¸ªé¡¹ç®ä¸è¦ä¿æç»ä¸ã ```java /** æç¤ºä¿¡æ¯ */ private String userName; /** * å¯ç */ private String password; ``` #### d. æ¹æ³æ³¨é 卿¯ä¸ªæ¹æ³åé¢å¿ é¡»å 䏿¹æ³æ³¨éï¼å¯¹äºæ¹æ³ä¸çæ¯ä¸ªåæ°ï¼ä»¥åè¿åå¼é½è¦æè¯´æã ```java /** * æ¹æ³ç详ç»è¯´æï¼è½å¹²åï¼æä¹å®ç°çï¼æ³¨æäºé¡¹... * * @param xxx åæ°1ç使ç¨è¯´æï¼ è½å¦ä¸ºnull * @return è¿åç»æç说æï¼ ä¸åæ åµä¸ä¼è¿åææ ·çç»æ * @throws å¼å¸¸ç±»å 注æä»æ¤ç±»æ¹æ³ä¸æåºå¼å¸¸ç说æ */ ``` #### e. æé æ¹æ³æ³¨é 卿¯ä¸ªæé æ¹æ³åé¢å¿ é¡»å 䏿³¨éï¼æ³¨é模æ¿å¦ä¸ï¼ ```java /** * æé æ¹æ³ç详ç»è¯´æ * * @param xxx åæ°1ç使ç¨è¯´æï¼ è½å¦ä¸ºnull * @throws å¼å¸¸ç±»å 注æä»æ¤ç±»æ¹æ³ä¸æåºå¼å¸¸ç说æ */ ``` èç®å注解å¾å¾æ¯éè¦å·¥ç¨å¸åèå®ä¹ï¼å¨ä½¿ç¨æ³¨è§£æ¶åºè¯¥æ³¨æä»¥ä¸å ç¹ï¼ 1. æä¸¾ç±»çåä¸ªå±æ§å¼é½è¦ä½¿ç¨æ³¨è§£ï¼æä¸¾å¯ä»¥ç解为æ¯å¸¸éï¼é常ä¸ä¼åçæ¹åï¼é常ä¼è¢«å¨å¤ä¸ªå°æ¹å¼ç¨ï¼å¯¹æä¸¾çä¿®æ¹åæ·»å 屿§é常ä¼å¸¦æ¥å¾å¤§çå½±åã 2. ä¿ææçæ´æ´ï¼ä¸è¦ä½¿ç¨è¡å°¾æ³¨éï¼åææ åæå·ä¹åè¦ç¨1ä¸ªç©ºæ ¼åéã ```java id = 1;// åä¾ï¼ä¸è¦ä½¿ç¨è¡å°¾æ³¨é //åä¾ï¼æ¢è¡ç¬¦ä¸æ³¨éä¹é´æ²¡æç¼©è¿ int age = 18; // æ£ä¾ï¼å§å String name; /** * 1. å¤è¡æ³¨é * * 2. 对äºä¸åçé»è¾è¯´æï¼å¯ä»¥ç¨ç©ºè¡åé */ ``` ## æ»ç» æ 论æ¯å½ååæ³¨è§£ï¼ä»ä»¬çç®ç齿¯ä¸ºäºè®©ä»£ç åå·¥ç¨å¸è¿è¡å¯¹è¯ï¼å¢å¼ºä»£ç çå¯è¯»æ§ï¼å¯ç»´æ¤æ§ãä¼ç§ç代ç å¾å¾è½å¤è§åç¥æï¼æ³¨è§£å¾å¾æ¯å¯¹å½åçè¡¥å åå®åãå½å太åäºï¼ åèæç®ï¼ - ãç åºé«æã - https://www.cnblogs.com/wangcp-2014/p/10215620.html - https://qiita.com/KeithYokoma/items/2193cf79ba76563e3db6 - https://google.github.io/styleguide/javaguide.html#s2.1-file-name