ã³ã¼ãã£ã³ã°ã®ã¢ã³ããã¿ã¼ã³ãèªåãªãã«ã¾ã¨ãã¦ã¿ã
ã³ã¼ãã¬ãã¥ã¼ããã¦ãã¨ããªãããããããï¼ï¼ãã¨ããã³ã¼ãã«ã¾ãã«åºãããã¾ãã
æ¢åã®ã³ã¼ãã¨ã®å
¼ãåãã§ãªã£ã¦ãå ´åã¯ãè´ãæ¹ç¡ãã¦ããæ°è¦ã³ã¼ãã¾ã§çä¼¼ããã®ã¯è¯ããªãã§ããããÂ
ããããæ°äººã¨ã³ã¸ãã¢ã®ä¸ã«ã¯ãã¯ããã¦ã®ãã¼ã§ããããããã人ãç¾ããã®ã§ã¯ãªãã§ããããã
ãããªæãåèã«ããã®ã¯å½ç¶ãæ¢åã®ã³ã¼ãã§ããããã§ããæããã¦æ¢åã®ã³ã¼ãã¯çä¼¼ããã¹ã綺éºãªã³ã¼ãã§ããããï¼
ã¨ããããã§ãç§ãã¬ãã¥ã¼æã«è¯ã注æããç¹ãã¢ã³ããã¿ã¼ã³ã¨ãã¦ã¾ã¨ãã¦ã¿ã¾ããã
ã¡ãªã¿ã«ç§ã¯Webå±ãããªã®ã§ãæ¥çéãã¨å¾®å¦ã«éãã¨ãããããããã§ããã©ãæ¬è³ªçãªã¨ããã¯å¤ãããªãã¨æã£ã¦ã¾ãã
ãã¿ã¼ã³ã®ååã¯ä¸è¬çãªã®ãWikipediaããå¼ã£å¼µã£ã¦ããããèªåã§æãã¤ããã®ãé©å½ã«æ¸ããããã¦ãã¾ãã
Â
太ã£ã¡ãã¡ã½ãã
ååã®ã¨ãã大ããããã¡ã½ãããä½ãã¢ã³ããã¿ã¼ã³ã§ãã
ããã°ã©ã ãé·ãæ¸ãã¦ãã人ãªã1000è¡ãè¶ ããã¡ã½ããã颿°ãè¦ããã¨ãä½åº¦ãããã§ãããã
ã©ããªã«ã°ãã¼ãã«å¤æ°ãæ¢ãã¦ãã¼ã«ã«å¤æ°ã«ãããã¨ã§å½±é¿ãå°ãããããã¨ãã¦ãã¦ããããã§ã¯æå³ãããã¾ããã
ã³ã¼ãã£ã³ã°è¦ç´ä»¥å ã«ããã®ã¯ãã¡ããã§ãããã ããã5ãã20è¡ãããã
é·ãã¦ã1ç»é¢ã«åã¾ããµã¤ãºã«ãã¾ããããããã人éã®çè§£ã§ããéçã§ãã ã¾ããé常ã«ãã¹ã¿ããªãã£ãæªãã®ã§ã ãã®ç¹ã§ãæ¹åããã¹ãã§ãã
Â
ç¥ã®ã¡ã½ãã
ããããå¦çãå¯è½ãªç¥ã®å¦ãã¡ã½ãããä½ãã¢ã³ããã¿ã¼ã³ã§ãã
ã¾ããå¤ãã®å ´åãç¥ã¯å¤ªã£ã¦ãã¾ãã
execã¨ãrunã¨ãmainã¨ããååã«ã¯è¦æ³¨æã§ãã
ãã©ã°ã§å¶å¾¡ãå§ãããå±éºä¿¡å·ãã·ã¹ãã ã®æ§æä¸ã©ããã¦ã弿°ã®å 容ã§å¦çå 容ã鏿ãããã¨ãã¯ããã³ããªã³ã°ã ãã対象ã¡ã½ããã«ããã¦å ·ä½çãªå¦çã¯å¥ãªã¡ã½ããã«ãã¾ãããã
Strategyãã¿ã¼ã³ã¨ãCommandãã¿ã¼ã³ã¨ãã解決ã®ç³¸å£ã«ãªããã¨ãããã¾ããÂ
Â
ç¥ã®ãªãã¸ã§ã¯ã
ããããå¦çãå¯è½ãªç¥ã®å¦ããªãã¸ã§ã¯ããä½ãã¢ã³ããã¿ã¼ã³ã§ãã
ã¾ããç¥ã¯å·¨å¤§ãªãã¢ãã§ãã人ã«ããçè§£ã¯åºæ¥ã¾ããã
ã¡ã½ãããããã§ãããä¸ã¤ã®ã¯ã©ã¹ã¯ä¸ã¤ã®ä»äºã ããããã®ãè¯ãè¨è¨ã§ãï¼SRP - åä¸è²¬åã®ååï¼ ãå°ããã®ã¯ã¹ãã¼ã¿ã¹ã§ããï¼Â
Webã¢ããªã§ã¯Actionãç¥ã®ãªãã¸ã§ã¯ãã«ãªããããã§ãã
Actionã¯ã»ãã·ã§ã³ããªã¯ã¨ã¹ãã®æä½ãViewã®å¶å¾¡ã«å¾¹ãã¦å ·ä½çãªãã¸ãã¯ã¯å¥ã¯ã©ã¹ã«åãåºãã¦æ±ããã¨ã§ä¿å®æ§ã¨ãã¹ã¿ããªãã£ãè¯ããªãã¾ãã
Â
ä¾å¤é ã
ä¾å¤ãéä¸ã§catchãã¦ç¡ãã£ãäºã«ããã¢ã³ããã¿ã¼ã³ã§ãã
ãã°ãåºãã¨ãã«åå ç¹å®ãå°é£ã極ããã®ã§éç¨ãã¦ãäººãæ»ã«ã¾ãã
ä¾å¤å¦çã¯ããã®å¦çã®ä¸ã§catchãã¦ç¹å¥ãªäºãããã(ãªãã©ã¤ã¨ã)ãé¤ãå ´åã¯ãæä¸ä½ã¾ã§ãã¹ã¦ã¹ãã¼ãã¦ãããã§é©åã«ã¨ã©ã¼ã«ãããªãã®ãã³ããªã³ã°ãè¡ãã®ãè¯ããã¨æãã¾ãã
ãã¡ãã¡ä¾å¤ããã£ãããã¦ãã°ã«åºãã®ããããããï¼
Â
éããããªããªã½ã¼ã¹
ãã¡ã¤ã«ã®ãªã½ã¼ã¹ã¨ããéãã¦ããªãã¢ã³ããã¿ã¼ã³ã§ãã
finallyã«å ¥ãå¿ããã¨ããåç´ãªã±ã¼ã¹ã§ãææªãªã½ã¼ã¹ãéæ¾ããã«æ®å¿µãªãã¨ã«ãªãã¾ãã
ãããè¤éãªã®ããåæåã¨å©ç¨ç®æãåããã¦ããå ´åãä¸ç¨æã«closeããã¨ãã以éã§å©ç¨ãã¦ãããããã¨ã©ã¼ã«ãªãã¨ãããã¾ãã
ãªã½ã¼ã¹ã¯ååãã£ã¼ã«ãã«ã¯æããã«ããã¼ã«ã«å¤æ°ã¨ãã¦å©ç¨ããåæåã¨finally-closeãã»ããã§è¡ããã¨ã§ãåé¡ã解決ãããã¨ãã§ãã¾ãã
Rubyã颿°åç³»è¨èªã§å¤ãããã«ãã¡ã¤ã«ãæä½ããå¦çã¯Lambdaã§ã³ã¼ã«ããã¯é¢æ°ã渡ããcloseãä¸è¦ã«ããã®ãæã§ãããã
ãã¡ãããå¦çãé·ãå ´åã¯ã¡ã½ããã«åå²ãã¾ããããÂ
Â
ãªãã§ãåæå
 Javaã¯ãªãã¸ã§ã¯ãæåã ããã¨ããããåæåãã¡ãããï¼ãã£ã¦ã¢ã³ããã¿ã¼ã³ã§ãã
ä¸è¬çã«ã¯åé¡ç¡ãã®ã§ããstaticã¡ã½ãããéããUtilç³»ãåæåãã¡ããããã¡ããªäººãè¦ããããã¨ãããã¾ãã
ãã®æã®ãã®ã¯å©ç¨æå³ãæç¢ºã«ããããã«ãprivateãªã³ã³ã¹ãã©ã¯ã¿ãä½ããå¤ããåæåã§ããªãããã«ããã®ãè¯ãã§ãã
Â
ãã£ã¼ã«ã大好ã
ä¸è¦ãªã»ã©ã«ãã£ã¼ã«ãã夿§ããã¢ã³ããã¿ã¼ã³ã§ãã
ãªãã¸ã§ã¯ãæåè¨èªã®æå¤§ã®ç¹å¾´ã¯ãã£ã¼ã«ãã«ããç¶æ 管çã§ãã
é常ã«ä¾¿å©ã§ãããä¸è¬çã«ã¹ãã¼ããã«ã¯ã¹ãã¼ãã¬ã¹ãããã·ã¹ãã ã¨ãã¦è¤éãªã®ã§ãæããªãã¦ãè¯ãç¶æ ãæã¤ã¨è¤éããå¢ãã¾ãã
è¯ãããã®ãprivateã¡ã½ããã«å¼æ°ã渡ãã®ãå«ã£ã¦ãã£ã¼ã«ããå©ç¨ããå ´åã§ããç¥ã®ãªãã¸ã§ã¯ãã¨çµã¿åãããã¨ç¶æ
ã®ç®¡çãè¤éã«ãªãå¯èªæ§ã»ä¿å®æ§ãè½ã¡ã¾ãã
ç¹ã«WebApplicationã®ãããªãã«ãã¹ã¬ãããªç°å¢ã§ã¯ãã¹ã¬ããã»ã¼ãã§ãç¡ããªãããã¹ãããã¥ãããªãã¾ãã
ãªã®ã§å®æãªãã£ã¼ã«ãã®å°å ¥ã¯æ§ãããªãã¹ã弿°ã§å¤ã渡ãããã«ããæ¹ã綺éºãªã³ã¼ãã¨ãªãã¾ãããã£ã¼ã«ããå¤éããå ´åã¯InmutableãªBeanã¯ã©ã¹ãä½ããªã©æ¹æ³ã§å¯¾å¿ãã¾ãããã
Â
æ©çãªæé©å
æ°ããStreamAPIã¯é ããã使ç¨ããã¹ãã§ã¯ãªãããStringã®çµåã¯éããã常ã«StringBuilderã使ãã¹ãããã¤ã³ã¹ã¿ã³ã¹ã®åæåã¯ã³ã¹ãã ããå ¨é¨ã·ã³ã°ã«ãã³ãstaticã§ä½ããï¼ããï¼ã¡ãã£ã¨è¤éã ãã©ï¼ãã®æ¸ãæ¹ãä¸çªãªã½ã¼ã¹å¹çãè¯ãã§ãã
åããã¾ããå°ãã§ããªã½ã¼ã¹ãæé©åãããã§ãããï¼ ã¨ã³ã¸ãã¢ã®è ã®è¦ãæã§ãããéãã£ããçã¡ã¢ãªã¯åç´ã«æ¥½ããã§ãã
ã§ããã©ã®ãããã®å¹æããããã¯ã¡ããã¨èãã¦ãã¾ããï¼ ããã¯è²´æ¹ã®ã·ã¹ãã ã«å¿ è¦ãªãã¥ã¼ãã³ã°ã§ããï¼
msãªã¼ãã¼ã®ããã©ã¼ãã³ã¹ãç©ããéãªã£ãã¡ã¢ãªãåé¡ã«ãªããã¨ã¯å®éã«ããã¾ããä½åº¦ãçµé¨ãã¾ããã
ããã§ãã»ã¨ãã©ã®ã±ã¼ã¹ã§ã¯å ¨ãããã¯é¢ä¿ãªããå¯èªæ§ã®æ¹ãå§åçã«åªå ããã¾ããé ããªã£ãæãé ããªãæã ãæé©åããã°ååãªã®ã§é常ã¯å¯èªæ§ãããããã¯ããã¯ã¯æ°ã«ãã使ãã¾ãããã
Â
ã³ã¡ã³ããå¤ããã!
ã³ã¡ã³ããå¤ãããã¢ã³ããã¿ã¼ã³ã§ãã
ä¸è¬çã«ã³ã¡ã³ãã¯æ¸ãã¹ãã¨è¨ããã¾ããã夿§ãã¦ããå ´åã¯å±éºä¿¡å·ã§ãã
使 ãªã太ã£ã¡ãã¡ã½ãããç¥ã®ã¡ã½ããã«ãªã£ã¦ããå¯è½æ§ãé常ã«é«ãããã§ãã
ã³ã¡ã³ããæ¸ãã¨ãããã¨ã¯æå³ã®ã¾ã¨ã¾ãã§ããã®ã§ããã®ã¿ã¤ãã³ã°ã§ã¡ã½ããã«åå²ãèããã¨è¯ãã§ããã ã
ã³ã¡ã³ããç¡ãã¨åãããªããããªã³ã¼ããæ¥µåæ¸ãããã¨ã大äºãªã®ã§ããÂ
Â
ã¾ããæ¹ä¿®è ãæ¹ä¿®ææãªã©ãä¸è¦ã§ãããããã¯ãã¼ã¸ã§ã³ç®¡çã·ã¹ãã ã§ç®¡çãããã¹ããã®ã ããã§ãã
åºæ¬çã«ã¯ã³ã¡ã³ãã«ã¯ã³ã¼ããèªãã ãã§ã¯åããè¾ãæå³ãªã©ãè¨è¼ããã®ãè¯ãã³ã¡ã³ãã¨ããã¦ãã¾ããÂ
Â
åã¤ãã¡ã½ãã
ã¡ã½ããåã誤ã£ã¦ããããããã¯èããä¸é©åãªã¢ã³ããã¿ã¼ã³ã§ãã
ã³ã¼ãã®æ¹ä¿®æ¼ãã§å®éã¯åç§°ã¨å ¨ç¶é¢ä¿ã®ç¡ãå¦çããã¦ããå ´åãããã¾ãã
ã¾ãã getã¨ããååã§å¤ã夿´ãã¦ããããcountã¨è¨ãååã§voidãè¿ãã¦ããã£ã¼ã«ãã夿´ãã¦ãããã¨åæ§çãªæåãããã¡ã½ãããå°ãè ã§ããå ¸åçãªã®ã¯getXXXã§RDBã®å¤ãåå¾ãã¦ãã£ã¼ã«ãã«ã»ããã¨ãã§ããããã
ä¸è¬çãªã³ã¼ãã£ã³ã°ã«ã¼ã«ã«ãããããã¨ã§åé¿ã§ãã¾ããç¹ã«ãã£ã¼ã«ãã®å¤æ´ãªã©å¯ä½ç¨ããããã®ã¯æç¢ºã«ããã¨åããååãä»ãã¾ããããä¸ã®ä¾ãªããã¯loadXXXã¨ããã ãã§ã ãã¶å¤ããã¾ãã
Â
ã«ã¡ã¬ãªã³å¤æ°
常ã«åã夿°ãåç §ãã¦ããå¤ãå¤ããã¢ã³ããã¿ã¼ã³ã§ãã
åã夿°ã§ãããä½åº¦ãä½åº¦ãä»£å ¥ãã¦ãã¦ãå ¨é¨ã®ã³ã¼ããèªã¾ãªãã¨ä»ä½ãå ¥ã£ã¦ãããç¹å®ã§ããªãä½¿ãæ¹ããã¦ããã±ã¼ã¹ã§ãã
太ã£ã¡ãã¡ã½ããã¨ä½µçºãããã¨ã§ãé常ã«å¯èªæ§ã®æªãã³ã¼ããçã¿ã¾ãã
颿°ã«é©ç¨ããçµæãå代å
¥ããå ´åããå¥ã®ä¼¼ããããªå¦çã®æ»ãå¤ãæ ¼ç´ãããæã¯ãåºæ¬çã«æå³ãå¥ã«ãªãã¯ããªã®ã§å¥åãä»ããã®ãè¯ãã§ãããã
ååãç¯ç´ãããæã¯é¢æ°ã¸ã®åãåºããæå¹ãªãã¨ãããã¾ãã
åæ§ã®çç±ã§ã仮弿°ã¨ãã夿´ããã®ãé常ã«å¯èªæ§ãæªããªãã®ã§æ¢ãã¾ãããã
Javaã®å ´åã¯finalãä»ãããã¨ã§ã颿°åè¨èªã®ããã«ä»£å ¥ãä¸å¯ã«ãããã¨ãã§ãã¾ãããã³ã¼ããåé·ã«ãªãã®ãçã«çã§ããÂ
Â
ç§»ãæ°ãªã·ã³ã°ã«ãã³
ã·ã³ã°ã«ãã³ãªãã¸ã§ã¯ãã®å¤ãé »ç¹ã«å¤ããã¢ã³ããã¿ã¼ã³ã§ãã
ã·ã³ã°ã«ãã³ãªãã¸ã§ã¯ãã¯ã·ã¹ãã å ¨ä½ã§ä¸å¤ã¨ãªãã¾ãããã®ããããã¨ããã§ã®å¤æ´ãå¥ã®ã¨ããã«å½±é¿ããã®ã¯è¯ããããã¨ã§ãã
以åè¦ããããã±ã¼ã¹ã§ã¯ãã¡ãã»ã¼ã¸ãã¡ã¤ã«ã®åèªã¿è¾¼ã¿ããã¦ãããç¹å®ã®ã¡ã½ãããçµç±ããã¨åºåçµæã大ããå¤ããã¨ãããããç¶æ
ã§ããã
ã·ã³ã°ã«ãã³èªä½ã¯immutableãªä¸å¤ãªãã¸ã§ã¯ãã¨ãã¦ä½ã£ã¦ã°ãã¼ãã«å¤æ°ã§ãããªã¹ã¯ãæå°ã«ããä½¿ãæ¹ãè¯ãã§ãããã
ä¾ã«åºãããããªã±ã¼ã¹ã®å ´åã¯èªã¿è¾¼ãã¡ãã»ã¼ã¸ãªãã¸ã§ã¯ããã¨ã«ã¤ã³ã¹ã¿ã³ã¹ãå¥ã«ä½ããã¨ã§å¯¾å¦ã§ãã¾ããÂ
Â
ããã«ã®å´©å£
ã·ã¹ãã å ã§å¤æ°åçãä¸è´ããªãã¢ã³ããã¿ã¼ã³ã§ãã
ä¸ã¤ã®åèªãããã¯ã©ã¹ã§ã¯ãã¼ãåã§è¡¨ç¾ããããã¯ã©ã¹ã§ã¯è±åèªã§è¡¨ç¾ããããã¯ã©ã¹ã§ã¯è¬ã®ç¥ç§°ã§è¡¨ç¾ãã¦ããã¾ãã
ææªãããããã³ãããã夿°åã使ãã¾ããã¦ãã¦ãæå³ããããããã®ããããã¾ãã
å½ç¶é常ã«èªã¿ã¥ããã§ããç¨èªè¡¨ãªã©ãä½ãã®ãæ£ããã§ããããããªããã¥ã¡ã³ãç¡ãå ´åãå¤ãã®ã§ãæ¢åã®ã³ã¼ããèªãã ã夿 ªãããªäººã«å°ããããã¦ãã ãããÂ
ã¾ããCamelCase㨠ã¹ãã¼ã¯ãæ··ãããªã©ãè¨èªã¬ãã«ã§æ¨æºã決ã¾ã£ã¦ãªãã±ã¼ã¹ã ã¨èµ·ãããã¡ãªã®ã§è¦æ³¨æã§ãã
Â
ã¾ã¨ã
ãã¦ãããã£ã¨ã§ããããããªæãã§ããå¤å°ã¯ä½ãã®åèã«ãªãã°ã¨æãã¾ãã
ã§ã¯ãHappy Hacking!Â