staticããããéã«ä¼ããããæç¶ãæåã¨ãªãã¸ã§ã¯ãæåã®åå©ç¨ã®èãæ¹ã®éãã«ã¤ãã¦
ä½ãè¯ãããã°ã©ã ãã¨ããç¹ã¯ãã¡ãã人ãã³ã³ããã¹ãã«ãã£ã¦ç°ãªãã¾ãããå°ãªãã¨ãããã°ã©ãã¼ã¨ãã¦ã®ç§ã®ä¿¡å¿µã¨ãã¦ã¯ã
- æ©è½æ¡å¼µãå¤æ´ã容æãªããã°ã©ã
- åä½è©¦é¨ã«ãã£ã¦æ£ããåä½ãããã¨ã®æ¤è¨¼ã容æãªããã°ã©ã
- ã©ããã£ãå 容ãè¨è¿°ããã¦ãããç解ããããããã°ã©ã
ã¨ãã£ããã®ããããå質ã®é«ããããã°ã©ã ãæã¤ã¹ãæ§è³ªã¨ãã¦ãã¾ãçã£å ã«æããã¹ãäºé ã§ããã¨èãã¦ãã¾ãããã¡ãããåæã¨ãã¦é¡§å®¢ã®è¦ä»¶ã«å¾ãã¨ãããã¨ã¯å¤§åãªãã¨ã§ããããããä¸è¬ã«è¦ä»¶ã¯é·æã«ããã£ã¦å¤æ´ããããã®ã§ããã使ãæ¨ã¦ã®ããã°ã©ã ãé¤ãã°ãããã°ã©ã ãé·æã«ããã£ã¦ä¿å®ããã³ã¹ãã¨ããç¹ãè¦éããã¹ãã§ã¯ããã¾ããããããã£ã¦ãã¦ã¼ã¶ã¼ã®ç®ã«ã¯è§¦ããªãä¸è¨ã®æ§è³ªããã£ã¨éè¦ãã¹ãã ã¨æãã®ã§ãã
DRYã®åç
ä¸è¨ã®ãããªæ§è³ªãæºããããã°ã©ã ãä½ãä¸ã§å¤§åã«ãªã£ã¦ããåçã¨ãã¦ãDRYã®åçã¨ããåçãç¥ããã¦ãã¾ããããã¯ãDon't Repeat Yourselfã¨ãããã¨ã§ãåãä½æ¥ã2度ã¨ç¹°ãè¿ããªã¨ããèãæ¹ã§ããåããããªãã¸ãã¯ã®ã³ã¼ããç¾ããããã¡ã½ããã¨ãã¦ä¸ãæã«ãããåºããªã©ã®å ±éåãå³ãã¨ãããã¨ã§ããããã®åçã¯

é人ããã°ã©ãã¼âã·ã¹ãã éçºã®è·äººããåå ã¸ã®é
- ä½è : ã¢ã³ããªã¥ã¼ãã³ã,ãããããã¼ãã¹,Andrew Hunt,David Thomas,æä¸é ç«
- åºç社/ã¡ã¼ã«ã¼: ãã¢ã½ã³ã¨ãã¥ã±ã¼ã·ã§ã³
- çºå£²æ¥: 2000/11
- ã¡ãã£ã¢: åè¡æ¬
- è³¼å ¥: 42人 ã¯ãªãã¯: 1,099å
- ãã®ååãå«ãããã° (347件) ãè¦ã
- ããããè¨è¿°ããã³ã¼ããå°ãªãã§ããã
- ãã¸ãã¯ã®åä½è©¦é¨ãä¸ãæã§ããã
- ãã°ã®ä¿®æ£ãæ©è½å¤æ´ããã£ãå ´åã§ãä¸ãæã®ä¿®æ£ã§ããã
- ããã°ã©ã ã®ãµã¤ãºãå°ãããªãããã³ã¼ããç解ãããããªãã
- ãªã«ããããããã°ã©ãã¼ã«ã¨ã£ã¦ããããªã³ã¼ããæ¸ãã¦ããã¨ããæºè¶³æãããã
ãªã©ããã¾ãã¾ãªã¡ãªãããå¾ããã¾ãã
ãã¡ããããã¾ãã¾ãªå¶ç´ãããåç主義çã«å®ç§ã«ãã®åçãå®ãã¨ãããã¨ã¯ä¸å¯è½ã§ãããã¾ããç¹ã«å¤§è¦æ¨¡ãªæ§é ã®è¨è¨ã«ãªãã°ãæå³çã«DRYã®åçãç ´ã£ãæ¹ãã¡ãªãããé«ãã¨ãããã¨ãèãããã¾ããé人ããã°ã©ãã¼ã®æ¬ã§ãçæ³çãªããã°ã©ã ã¯æ±ºãã¦ä½ããªãã¨ãããã¨ãæ¸ããã¦ãã¾ãããããã£ã¦ãå®è·µçãªè·æ¥ããã°ã©ãã¼ã«å¯¾ããæãã¨ãã¦ãããã¾ã§ããã£ã³ã¹ãããã°å°ãã§ãç®æãã¹ãæ¹åã¨ããæå³ã§ãã®åçãç´¹ä»ãã¦ããã®ã ã¨ç解ãã¦ãã¾ãã
staticããããã®é ã®ä¸ã«ãããåå©ç¨ã®ã¤ã¡ã¼ã¸
ã ãããç§ã¯ãã§ããã°ãDRYãªã³ã¼ããç®æãããããããã§ããªãã¨ãã¯ã罪ã®æèãæã£ã¦å®è¡ãããã£ã³ã¹ãããã°ãªãã¡ã¯ã¿ãªã³ã°ãããããã¨ãããããªèãæ¹ã§ããã°ã©ã ãæ¸ãããã¨èãã¦ãã¾ããã
ããããSIæ¥çã®å¤ãã®ç¾å ´ã«ããã¦ã¯ãå
±æãã¹ãç®æ¨ã¨ããæå³ã«ããã¦ããããã®DRYã®åçãå®ããã¦ããªãã¨ãããã¨ãããã®ã ã¨ãããã¨ãç¥ãã¾ãããæ¥çã®æ
ã·ã¹é¨éãSIerã§ä½åå¹´åã«COBOLãã¢ã»ã³ãã©ãªã©ã§éçºãæ
å½ããç¾å¨ã¯ç¾å½¹ã§ã³ã¼ããèªããã¨ãæ¸ããã¨ããªãããéçºåºæºãã¢ã¼ããã¯ãã£ã決ããä¸ã§çºè¨æ¨©ã®ãããããããä¸ç´ã¨ã³ã¸ãã¢ã¨ããç«å ´ã®æ¹ã
ãå¤æ°ããã£ãããã¾ããããã§ã¯ãã®ãããªæ¹ã
ãã¡ãã£ã¨è¦ªãã¿ãè¾¼ãã¦ç·ç§°çã«staticããããã¨å¼ã¶ãã¨ã«ãã¾ããããã¤ã¾ããã¾ã£ããITæè¡ã¨ç¡é¢ä¿ã®æ¹ã
ã§ã¯ãªããé·å¹´å°éã®æè¡è
ã¨ãã¦æ¥åã·ã¹ãã ã®éçºãéç¨ã«é¢ããä»äºãçµé¨ãããçµç¹å
ã§æè¡é¢ã§ã®ææ決å®è
ã¨ãã¦ãããªãé«ãå°ä½ãå¾ã¦ãããããªæ¹ã
ã§ãã
ãã¨ãã¨ã®ã¢ãã«ã¯ãã®æ¹ã§ãããããã§ã¯ãã®æ¥çã§ã¯ã©ãã«ã§ãããããªä¸è¬çãªæè¡è
ãæããã®ã¨ãã¾ãã
実はオブジェクト指向ってしっくりこないんです!:気分はstatic!:エンジニアライフ
ãããã¯ã
高慢と偏見(1)隣は何をする人ぞ:Press Enter■:エンジニアライフ
ã«ç»å ´ããä¸æµ¦ããã¼ã¸ã£ã®ãããªäººãã¤ã¡ã¼ã¸ãã¦ãã¾ãã
ããããããã°ã©ãã³ã°ãã¾ã£ããçµé¨ãããã¨ã®ãªã人ã§ããã°ãã§ããéãç¡é§ãçãDRYã®æ³åã¨ããã®ã¯åççã§ãããç´æçã«ã¡ãªãããç解ããããã¨æãã¾ããããããstaticããããã®å ´åã¯ã
- ã³ã¼ããå ±æåããã¨ãå ±æãã¦ããããã°ã©ã ãä¿®æ£ããå ´åã®ä¿®æ£ã®å½±é¿ç¯å²ãåºãã£ã¦ãã¾ãã
- æ©è½ãã¨ã«ä¼¼ããããªã³ã¼ããã³ãã¼ããç¬ç«ããããã°ã©ã ã¨ãã¦éçºããã°ãããããç¬ç«ãã¦å¤æ´ã§ããããã¡ã³ããã³ã¹ã楽ã
- ã³ãããä¸å¿ã¨ããéçºã§ããã°éçºæ å½ã®PGã®ã¹ãã«ãä½ãã¦ãã¿ãå¤æ³¨ã³ã¹ããåæ¸ã§ããã
- ãã¹ãããã®ãã¦ã³ãµã¤ã¸ã³ã°ãããç¨åº¦é²ãã§ãããä»æãã«ã¹ã¯ã©ããã§æ°è¦éçºããæ¡ä»¶ã¯å°ãªãã2次éçºæ¡ä»¶ã§ã¯é¨åçãªã³ããã§æ©è½ã追å ã§ããã°ååã
- ã ãããå°é£ããçå±ã使ãããªããããªé人ããã°ã©ãã¼ãªã©ã¯ä¸è¦ã§ãããè¥ããã¡ã«SEãPMã«ãªããã¨ãèããæ¹ãããã
ã¨ãããããªèãæ¹ããããå ´åãå¤ãã¨ãããã¨ããæè¿ç§ããã®ãããªæ¹ã
ã¨ä½åãæ¥ããã«ã¤ãã¦ãããããããã£ã¦ãã¾ããããã¡ããããã®ãããªstaticããããéããè害ããªã©ã¨å¼ãã§æåããç¸æã«ããªãã§ããã¨ãããã¨ãã§ããããããã¾ãããããããæ£ããã³ãã¥ãã±ã¼ã·ã§ã³ããããã«ã¯ãå·éã«ç¸æã®ç«å ´ã«ç«ã£ã¦èããå¿
è¦ãããã¾ããããæã£ã¦ãstaticããããã®æ°æã¡ãèããã¨ãå½¼ãã®èãæ¹ãä¸çããã®ã§ã¯ã¨æãã¨ãããåºã¦ãã¾ãã
ã¾ããã¢ã»ã³ããªãCOBOLã®ãããªè¨èªã§ã¯ããªãã¸ã§ã¯ãæåè¨èªã§ä¸è¬çãªã«ãã»ã«åã¨ããèãæ¹ããããã¦å¼±ãã¨ãããã¨ãããã¾ããå¤æ°ã¯éçãªã°ãã¼ãã«å¤æ°ãä¸å¿ã§ãããå¦çããããã ãã¦å
±éåãã¦ããããã¯è¦ããä¸ã³ã¼ããµã¤ãºãåæ¸ãããã¨ãããã¨ã§ãããªããçµå±åå¦çã¯å¯ã«çµåãããã®ã«ãªã£ã¦ãã¾ãã¾ããã¾ããè¨èªèªä½ã®ãµãã¼ãã¨ãã¦ã¯ããªã¢ã¼ãã£ãºã ã¨ããèãæ¹ããªã*1ãå
±éå¦çã®å¼ã³åºãå
ã¨å
±éå¦çã¨ã¯çµå±ã³ã³ãã¤ã«æã«çµåããã¦ãä¸ä½ã®ç®çãã¡ã¤ã«ã«ã³ã³ãã¤ã«ããã¾ããããããå
±éå¦çã¨ãã®å¼ã³åºãå´ãå¯ã«çµåããåå ã¨ãªãã¾ãã
ã¤ã¾ããstaticããããã®ä¸ç観ã«ãããã³ã¼ãã®å
±éåã¯ãåã«ã³ã¼ãã®ãµã¤ãºãå°ãåæ¸ããã¨ããæ段ã§ãããªãã®ã§ããéã«ãä¸æã«ã³ã¼ããå
±éåãããã¨ã«ãã£ã¦ãã¹ãã²ããã£ã³ã¼ãã«ãªã£ãããå½±é¿ç¯å²ãç解ãã«ãããªã£ããããã¨ãããã¡ãªããã®å¤§ãããèããã°ãã¾ãã«ãè²»ç¨å¯¾å¹æã®å°ããªãã®ã«è¦ããã®ãå½ç¶ã§ããã ãããçµå±æååã®ç·¨éã¨ãã£ãããåºæ¬çãªå¦çã¯é¤ãã¦ãæ¥åãã¸ãã¯ã«ãããããããªå¦çã¯ç»é¢ãã¨ãæ©è½ãã¨ã«ç¬ç«ãã¦ã³ãã¼ãä½æããã¨ããèãæ¹ãå·éã«ãªã£ã¦èããã°ã¾ã£ããç解ã§ããªããã®ã§ã¯ããã¾ããã
ãªãã¸ã§ã¯ãæåã®ã¢ã¼ããã¯ãã£ã§ã¯ããã±ã¼ã¸ã®å®å®æ§ãèãããã¨ã大åã«ãªã
ã§ã¯ã次ã«ãJavaã®ãããªãªãã¸ã§ã¯ãæåè¨èªã®ã¢ã¼ããã¯ãã£ã§ã¯ã©ããã¦åå©ç¨ãå¯è½ãªã®ããããã¦ããããã©ããã¦æã¾ãããã®ã«ã§ããã®ãããã®çç±ãèãã¦ãããã¨ã«ãã¾ãããã
ã«ãã»ã«åã¨ä¾åé¢ä¿
ã¾ããéè¦ãªãã¨ã¨ãã¦ãã«ãã»ã«åã¨ããèãæ¹ã®åå¨ãããªãã¸ã§ã¯ãæåã®ä¸çã§ã¯ãæç¶ãåè¨èªã«ãããã°ãã¼ãã«å¤æ°ã¨ãããã®ããå°ãªãã¨ãè¦ããä¸ã¯åå¨ããªãã¨ãããã¨ãããã¾ãã*2ã ãããããã°ã©ã ã®ç¶æ
ã¨ãããã®ã¯åãªãã¸ã§ã¯ãã®ä¸èº«ï¼ã¤ã³ã¹ã¿ã³ã¹å¤æ°ï¼ããããã¯åã¡ã½ããå
ï¼ãã¼ã«ã«å¤æ°ï¼ã«éå®ããã¾ãããã®äºå®ã ãã§ããå
±éå¦çããããã ããå ´åã®çµå度ã¨ããã®ã¯ä½ããªãã¾ãã
ã¤ã¾ããæç¶ãæåã®ããã°ã©ã ã§ã¯ãããã ããåé¢æ°ãã°ãã¼ãã«å¤æ°ãéãã¦æé»ã«çµåãã¦ããã®ã«ããªãã¸ã§ã¯ãæåã§ã¯ãäºãã®ä¾åé¢ä¿ãããæ確ã«å¯è¦åããããã¨ãããã¨ãè¨ãã¾ããå¤ãã®ã±ã¼ã¹ã§ã¯ãããã¯ã©ã¹ãå¥ã®ã¯ã©ã¹ãimportãã¦å¼ã³åºãã¦ãããä¾åé¢ä¿ããããããã§ãªããã°ç¬ç«ãã¦ããã¨èãããã¨ãã§ããã®ã§ãã
å®å®ä¾åã®åå
ã¯ã©ã¹ãããã±ã¼ã¸ãåå©ç¨ããã¨ãããã¨ã¯ãå¿ ç¶çã«åå©ç¨ããå´ã¨ãããå´ã®éã«ä¾åé¢ä¿ãçããã¨ãããã¨ã«ãªãã¾ãããããã£ã¦ãstaticãããããå¿é ããããã«ãå¤æ´ã®å½±é¿ã«ããåå©ç¨ã®ãã¡ãªãããå°ãªãããã«ã¯
- é »ç¹ã«å¤æ´ãããä¸å®å®ãªã¢ã¸ã¥ã¼ã«ã¯ãªãã¹ãä¾åããããã¨ãé¿ããï¼åå©ç¨ãããå´ã§ãªãåå©ç¨ããå´ã«åãï¼
- éã«ãå¤æ´ãå°ãªãå®å®ããã¢ã¸ã¥ã¼ã«ãåå©ç¨ãã
ã¨ããæ¹åã«ãªãããã«ãå
¨ä½çãªã¢ã¼ããã¯ãã£ã工夫ããã°ããªãåé²ã§ãããã¨ã«ãªãã¾ããã¤ã¾ããå®å®ããæ¹åã«ä¾åããã¨ãããã¨ã§ãããä¾åé¢ä¿ã¨ããã±ã¼ã¸ï¼ã¢ã¸ã¥ã¼ã«ï¼ã®å®å®æ§ã¨ã®é¢é£ã«é¢ãããã®è¦åã¯å®å®ä¾åã®ååï¼SDPãStable Dependencies Principleï¼ã¨å¼ã°ãã¦ãã¾ãã
å®éã«ãã¢ã¸ã¥ã¼ã«ã®å®å®åº¦ã¯ä»¥ä¸ã®ããã«å®éçãªã¡ããªãã¯ã¨ãã¦å®ç¾©ãããã¨ãå¯è½ã§ãã
ï¼æ±å¿çµå度ï¼ï¼ããããã±ã¼ã¸ã®ä¸ã®ã¯ã©ã¹ã«å¯¾ãã¦ãå¤é¨ã®å¥ã®ããã±ã¼ã¸ä¸ããä¾åãã¦ããã¯ã©ã¹ã®åæ°ã
ï¼é å¿çµå度ï¼ï¼ããããã±ã¼ã¸ã®ä¸ã®ã¯ã©ã¹ãä¾åãã¦ããå¤é¨ã®ããã±ã¼ã¸ã®ã¯ã©ã¹ã®åæ°ã
ï¼ä¸å®å®åº¦ãinstabilityï¼ï¼ããã±ã¼ã¸ã®ä¸å®å®æ§ã0ãã1ã®ç¯å²ã®æ°å¤ã§1ã«è¿ãã»ã©ä¸å®å®ã
ãã®å ´åãä¸å®å®åº¦Iãããã±ã¼ã¸ã®å®å®æ§ã®ç®å®ã¨ãªãææ¨ã§ããçµå±ãå¤é¨ã®ããã±ã¼ã¸ããä¾åããã¦ããã ãã§ãéã«èªåã¯å¤é¨ã«ä¾åãã¦ããªãã¨ããããã±ã¼ã¸ã¯ï¼ä¸è¬çã«ãã¬ã¼ã ã¯ã¼ã¯ãutilãªã©ï¼I=0ã¨ããå®å®ãªããã±ã¼ã¸ã¨ãªããéã«ä»ããã¾ã£ããä¾åããã¦ããªãããã±ã¼ã¸ã¯I=1ã¨ããä¸å®å®ãªããã±ã¼ã¸ã¨ãããã¨ãã§ãã¾ãã*3
以ä¸ã®å³ã¯UMLã®æ¸ãæ¹ã«ãããã£ã¦ãç ´ç·ã®ç¢å°ã®å
ãç¢å°ã®å
ã®ããã±ã¼ã¸ã«ä¾åãã¦ãããã¨ã示ãã¦ãã¾ããï¼ããã§ã¯ãä¾åãããå®å®å´ãä¸ã«æãã¦ãã¾ããï¼ã¾ããå®å®ããããã±ã¼ã¸ã§ã¯ï¼I=0ï¼ã以ä¸ã®ããã«ä»ããä¾åããããã¨ã¯ãã£ã¦ããéã«ä»ã«ä¾åãããã¨ãããã¾ããã
éã«ãä¸å®å®ãªããã±ã¼ã¸ï¼I=1ï¼ã§ã¯ã以ä¸ã®ããã«ä»ããä¾åãããï¼å
±æãããï¼ãã¨ããªãã¨ãããã¨ã«ãªãã¾ãããã®å ´åãä¸å®å®ãªããã±ã¼ã¸å
ã®ã¯ã©ã¹ã«æãå ãã£ã¦ããå¤é¨ã«å½±é¿ãä¸ãããã¨ããªããã¨ãä¾åé¢ä¿ããç解ã§ãã¾ãã
ãããã£ã¦ãã¾ãåå©ç¨æ§ãé«ããããã«ã¯ãå
¨ä½ã®ã¢ã¼ããã¯ãã£è¨è¨ã®è¦³ç¹ããããã±ã¼ã¸åããé©åã«è¡ã£ã¦ãå®å®ããåå©ç¨ãå¯è½ãªããã±ã¼ã¸ã¨ããã§ãªãããã±ã¼ã¸ã®è²åããæ確ã«ã§ããããã«ããã¨ãããã¨ã大åã§ããJavaã®ãããªè¨èªã«ããã¦ããã±ã¼ã¸åãã¨ã¯åã«å·¨å¤§ãªããã°ã©ã ãå°ããåé¡ããå
¥ãç©ã®åå²ã¨ãããã¨ã ãã§ãªãã¦ããã®ãããªå®å®æ§ã®åé¡ã¨ããéè¦ãªè¦³ç¹ãããã¨ãããã¨ã§ããã
ã¡ãªã¿ã«ãè¨èã®å°è±¡ãã誤解ãããã§ãããå¿
ãããä¸å®å®ãªããã±ã¼ã¸ãæªã§å®å®ããããã±ã¼ã¸ãåã¨ããããã§ã¯ããã¾ããã®ã§æ³¨æãå¿
è¦ã§ãã以ä¸ã®å®ç¾©ã«ããä¸å®å®ãªããã±ã¼ã¸ã¨ã¯ä»ãã使ããã¦ããªãã¨ãããã¨ã§ããããèªç±ã«å¤æ´ãã§ããã¨ãããã¨ã§ãããã¾ããç»é¢ãªã©å¤æ´ãé »ç¹ã«çºçãããããã¹ããããä¸å®å®ãªããã±ã¼ã¸ã«åé¢ãã¦ãããã¨ã§ãä¿®æ£ã®å½±é¿ãæå°éã«ãããã¨ãã§ãã¾ãã
å®å®æ§ã¨ã¢ã¼ããã¯ãã£ãã¿ã¼ã³
ãã®ããã«ããã±ã¼ã¸éã®ä¾åæ§ã¨å®å®æ§ã®é¢é£ã念é ã«å
¥ãã¦èããã¨ãä¸è¬çãªã¢ããªã±ã¼ã·ã§ã³ã«ãããMVCãã¬ã¤ã¤ã¼ãªã©ã®ã¢ã¼ããã¯ãã£ãã¿ã¼ã³ã¯å®ã«ãã¾ãèãããã¦ããã¨ãããã¨ããããã¾ãã
ã¾ããMVCãã¿ã¼ã³ã§ã¯
- ç»é¢ã®è¡¨ç¤ºãã¦ã¼ã¶ã¼ã®æä½ãåãä»ãããã¥ã¼
- ã¦ã¼ã¶ã¼ã®å ¥åããã¨ã«ã¢ãã«ãæä½ããã³ã³ããã¼ã©ã¼
- æ¬è³ªçãªãã¸ãã¯ããã¼ã¿ãã«ãã»ã«åããã¢ãã«
ã«åå²ãã¦èãã¾ããããã®ãã¿ã¼ã³ã«å¾ã£ãè¨è¨ã§ã¯ãã¢ãã«ã®é¨åã¯ä»ã®è¦ç´ ã«ã¯ä¾åãã¾ããã
ããã¯ãä¸è¬çã«ã¯ã¦ã¼ã¶ã¼ã¤ã³ã¿ã¼ãã§ã¼ã¹ã®å¤æ´é »åº¦ã®æ¹ãæ¬è³ªçãªé¨åãããå¤ãã¨ããå¾åãèããã°ç´å¾ã®ããè¨è¨ã§ãã
ã¾ããä¸è¬çãªæ¥åã·ã¹ãã ã§ã¯
- ãã¬ã¼ã³ãã¼ã·ã§ã³å±¤
- ã¢ããªã±ã¼ã·ã§ã³å±¤
- ãã¡ã¤ã³å±¤
- ã¤ã³ãã©å±¤
ãªã©ã®ã¬ã¤ã¤ã¼ã«åå²ãã¦è¨è¨ãã¾ããï¼DDDの読書記録(第4章、ドメインを隔離する) - 達人プログラマーを目指してï¼ã¬ã¤ã¤ã¼ãã¿ã¼ã³ã§ã¯ä¸ä½ã¬ã¤ã¤ã¼ããä¸ä½ã¬ã¤ã¤ã¼ã®æ¹åã§ä¾åæ§ãæãããã¨ãããã¨ã«ãªããããä¸ä½å±¤ã«è¡ãã«ãããã£ã¦ä¸å®å®ã§ããåå©ç¨æ§ã«ä¹ããã¨èãã¦ããã¨ãããã¨ã«ãªãã¾ãã
ãã®ããã«ããªãã¸ã§ã¯ãæåçãªã¢ã¼ããã¯ãã£*4ãé©åã«è¨è¨ãããã¨ã«ãã£ã¦ãåå©ç¨ãå¯è½ãªå®å®ããé¨åã¨ãéã«ãä¿®æ£ãé »ç¹ã«è¡ããä¸å®å®ãªé¨åãåãåãããã¨ãã§ãã¾ããããã«ãã£ã¦ãä¿®æ£ã®å½±é¿ç¯å²ãå
±éåã«ãã大ãããªãã¨ããåé¡ã軽æ¸ããªãããåå©ç¨ã®ã¡ãªããã享åããã¨ãããã¨ãå¯è½ã«ãªãã®ã§ãã
å®å®æ§ã¨ãã¹ã容ææ§
å®å®æ§ã«ã¤ãã¦ã¯ããã¹ã容ææ§ã®è¦³ç¹ãããå¬ãããã¨ãããã¾ããããã¯ãããå®å®åº¦ãé«ããä»ã«å¯¾ããä¾åãå°ãªãã¯ã©ã¹ç¨ãä¸è¬çã«åä½è©¦é¨ã®ä½æã容æã§ããã¨ãããã¨ã§ããç¹ã«ãä»ã«ã¾ã£ããä¾åãã¦ããªãã®ã§ããã°ããã®ããã±ã¼ã¸åä½ã«éãã¦è©¦é¨ãä½æãããã¨ãã§ããããã§ãããããã£ã¦ãå¤ãã®ã¯ã©ã¹ããåå©ç¨ããããã¬ã¼ã ã¯ã¼ã¯ãªã©ã§ã¯åä½è©¦é¨ãå¼·åãããã¨ã§å質ãé«ãããã¨ãå¯è½ã§ããããã¦ãããå¤æ´ã®å¿ è¦æ§ãåºã¦ããå ´åã§ãããã¹ãã®èªååã«ããå¤æ´ã«ãããã°ã¬ã¼ãã®å±éºãå°ãªãæãããã¨ãã§ãã¾ãã
ãªãã¸ã§ã¯ãæåã«ãããåå©ç¨æ§ãããéãã«ã¢ãããããããªã¢ã¼ãã£ãºã
ãã®ããã«ãå¤æ´é »åº¦ãªã©ã®å®å®æ§ãèãã¦æ£ããããã±ã¼ã¸ã«ã¯ã©ã¹ãæ ¼ç´ãããããªã¢ã¼ããã¯ãã£ã«ããã ãã§ããå¾æ¥ã®staticããããçãªæç¶ãæåã®ä¸çã¨ã¯ã¾ã£ããéã次å ã§ã®åå©ç¨ãéæã§ãã¾ãã
ããªã¢ã¼ãã£ãºã ã«ã¤ãã¦åã³å¾©ç¿
ãããããªãã¸ã§ã¯ãæåè¨è¨ã®åå©ç¨ã«ãããæ¬å½ã®åãæã¯ãã¤ã³ã¿ã¼ãã§ã¼ã¹ãä¸å¿ã¨ããããªã¢ã¼ãã£ãºã ã®æ´»ç¨ã¨ããã¨ããã«ããã¾ãã
いまさらですが、職業Javaプログラマーなら理解しておいてほしい「継承」の意味について
ã§ç¶æ¿ã¨ããªã¢ã¼ãã£ãºã ã«ã¤ãã¦ç´¹ä»ãã¾ããããçµå±ããã®è¨äºã§è¨ãããã£ããã£ã¨ã大åãªãã¨ã¯ãããã¯ã©ã¹ãã¤ã³ã¿ã¼ãã§ã¼ã¹ãimplementsãã¦ããããï¼æ½è±¡ï¼ã¯ã©ã¹ãç¶æ¿ãã¦ãã¡ã½ããããªã¼ãã¼ã©ã¤ããã¦ããå ´åãã¤ã³ã¿ã¼ãã§ã¼ã¹ã親ã¯ã©ã¹åã®å¤æ°ã«ãµãã¯ã©ã¹ã®ã¤ã³ã¹ã¿ã³ã¹ã代å
¥ãã¦å©ç¨ã§ããã¨ãããã¨ã§ãããã¤ã¾ããã¡ã½ãããå¼ã³åºãå´ã¯ãæ½è±¡çãªã¤ã³ã¿ã¼ãã§ã¼ã¹ã親ã¯ã©ã¹ã®ã¿ã«ä¾åããã¨ããå½¢ã«ãªã£ã¦ããã«ãé¢ããããããªã¢ã¼ãã£ãºã ã«ããå®éã«ã¯ãªã¼ãã¼ã©ã¤ããã¦ãããµãã¯ã©ã¹ã®ã¡ã½ãããå¼ã³åºãããã¨ãããã¨ã§ãã
ä¾åé¢ä¿é転ã®æ³å
ãã®ããªã¢ã¼ãã£ãºã ãåå©ç¨æ§ãä¿é²ããä¸ã§ã©ããã¦éè¦ãªã®ãã¨ããã¨ãã¤ã³ã¿ã¼ãã§ã¼ã¹ãåºå®ãããã¨ãã§ããã°å¼ã³åºãå´ã®ãã¸ãã¯ãã¤ã³ã¿ã¼ãã§ã¼ã¹ã¨ã¨ãã«å®å®æ§ã®é«ãããã±ã¼ã¸ã«æ ¼ç´ãã¦åå©ç¨ãã対象ã«ã§ããã¨ããäºå®ãããããã§ããåå©ç¨ãå¯è½ãªå®å®æ§ã®é«ãããã±ã¼ã¸ã¯æåéãå¤æ´é »åº¦ãå°ãªããªãã¦ã¯ãªãã¾ãããããããã¨ããªã¢ã¼ãã£ãºã ãåå¨ããªãä¸çã§ã¯ãçµå±ãæ°å¦ã©ã¤ãã©ãªã¼ãæååè¨ç®ãã«ã¬ã³ãã¼è¨ç®ã®ããã«æ¬å½ã«ãã¸ãã¯ãä¸ã¤ã«åºå®ã§ãããããªãã®ããåå©ç¨ã§ããªãã¨ãããã¨ã«ãªã£ã¦ãã¾ãã¾ããã¤ã¾ããè¨è¨ä¸ã¾ã£ããæè»æ§ãæ¡å¼µæ§ããªããã®ããå®å
¨ã«åå©ç¨ã®å¯¾è±¡ã«ã§ããªãã¨ãããã¨ã§ãããã ãããä¸å¤ã®åçã¨ãã¦æ°å¦ã©ã¤ãã©ãªãå
±æã§ãã¦ããã©ãã©ãä»æ§ã®å¤åããæ¥åå¦çãå
±æããã¨ãããã¨ã¯æ¥µãã¦é£ããã£ãã®ã§ãã
ããããã¤ã³ã¿ã¼ãã§ã¼ã¹ã使ã£ã¦ããªã¢ã¼ãã£ãã¯ã«ãã¾ãã¾ãªå¦çãå¼ã³åºããã¨ãå¯è½ãªããå¥ã®ããã±ã¼ã¸å
ã§ãã®ã¤ã³ã¿ã¼ãã§ã¼ã¹ãå®è£
ãããã¾ãã¾ãªã¯ã©ã¹ãä½æãããã¨ã§ãæè»ã«æ©è½ãæ¡å¼µãããã¨ãã§ãã¾ããããã¯ãStrutsãSpringãªã©ã®ãã¬ã¼ã ã¯ã¼ã¯ã§å¿
ãã¨è¨ã£ã¦ããã»ã©å©ç¨ããã¦ããçºæ³ã§ãããä¾åé¢ä¿é転ã®ååï¼Dependency Inversion PrincipleãDIPï¼ã¨å¼ã°ãã¦ãã¾ãã
ãã®ååã使ã£ã¦ãã¬ã¼ã ã¯ã¼ã¯ããã¾ãè¨è¨ãããã¨ã§ããã¬ã¼ã ã¯ã¼ã¯èªèº«ãå¤æ´ã®å½±é¿ãåãã«ããå®å®ããããã±ã¼ã¸ã«ããã¦åå©ç¨ããªããããã¤ã³ã¿ã¼ãã§ã¼ã¹ãå®è£
ããåå¥ã®ã¯ã©ã¹ãå¾ä»ããããã¨ã§æè»ãªæ¡å¼µãè¡ããã¨ãã§ããã®ã§ãããªãããã®ãã¨ã¯ãªãã¹ãæ½è±¡åº¦ã®é«ãããã±ã¼ã¸ã«ä¾åããã¨ããèãæ¹ã«ãã¤ãªãã£ã¦ãã¾ããï¼å®å®åº¦ã»æ½è±¡åº¦ç価ã®ååãSAPï¼
ãã¡ãããstaticãããããç¹ã«æèãã¦ããªãã¦ãWebãã©ã¦ã¶ã.NETãªã©ã®ãã¬ã¼ã ã¯ã¼ã¯ã使ã£ã¦éçºãã以ä¸ãæ°´é¢ä¸ã§DIPã«ãããã¸ãã¯ã®åå©ç¨ã¯æ´»ç¨ããã¦ãã¾ããå®éãç§ããããã¦æç« ãæã¡è¾¼ãã§ããç°å¢ã§ãæ°´é¢ä¸ã§ã¯è¡¨ç¤ºãããã»ã¹ç®¡çããããã¯ã¼ã¯éä¿¡ãªã©OSã®åºæ¬çãªå¦çã®ä¸ã§DIPçãªçºæ³ãæ´»ç¨ããã¦ãã¾ããããã¨åãçºæ³ãå°ãã§ãæ¥åãã¡ã¤ã³ãã¢ããªã±ã¼ã·ã§ã³ã®é åã«åãè¾¼ããã¨ã§ãã¢ããªã±ã¼ã·ã§ã³éçºã®åå©ç¨æ§ãåä¸ããããã¨ãã§ãããç´ æ´ããããã¨ã§ã¯ãªãã§ããããã
ããªã¢ã¼ãã£ãºã ã¯ã¬ã¬ã·ã¼ã·ã¹ãã ã¨ã®é£æºã«ãæå¹æ´»ç¨ã§ãã
以ä¸ç´¹ä»ããããªã¢ã¼ãã£ãºã ã¯ãã¾ã£ããæ°è¦ã«ã¢ããªã±ã¼ã·ã§ã³ãéçºããéã®ã¿ã«æ´»èºããããã§ã¯ããã¾ããããã¨ãã°ãã»ã¨ãã©ã½ã¼ã¹ãèªã¿ãããªããªããããªã¹ãã²ããã£ã¼ã³ã¼ãã§ã§ããããã°ã©ã ã«å¯¾ãã¦ãå®å®ããã¤ã³ã¿ã¼ãã§ã¼ã¹ãããªãããã±ã¼ã¸ãå®ç¾©ããã·ã¹ãã ã®ãã®ä»ã®é¨åã¯ãã®ã¤ã³ã¿ã¼ãã§ã¼ã¹ãçµç±ãã¦ã¬ã¬ã·ã¼ã·ã¹ãã ã«ã¢ã¯ã»ã¹ããã¨ãã£ããããªè¨è¨ãå¯è½ã§ãããã®ããã«ã¬ã¬ã·ã¼ã·ã¹ãã ï¼ãããã¯ã¢ã¸ã¥ã¼ã«ï¼ã¨æ°ã·ã¹ãã ã¨ã®éã«ã¬ã¤ã¤ã¼ãè¨ãããã¨ã§ãæ°ã·ã¹ãã ãã¬ã¬ã·ã¼ã·ã¹ãã ã®æªãå½±é¿ãåãããã¨ãé²æ¢ãããã¨ãã§ãã¾ããï¼è
æé²æ¢å±¤ï¼ãã®ããã«ãã¦ãããã¬ã¬ã·ã¼ã·ã¹ãã ãããã¹ãè¨è¨ã«å¾ã
ã«ç½®ãæãã¦ãããªã©ãå
¨ä½çãªã¢ã¼ããã¯ãã£ã段éçã«æ¹åãããããªãã¨ãå¯è½ã«ãªãã¾ãã
ãã®èãæ¹ã¯ãç¹å®ã®è£½åã¸ã®ä¾åããã¼ã¿ãã¼ã¹ãªã©ãªãã¸ã§ã¯ãæåã§ãªãã¬ã¤ã¤ã¼ã¨ã®ã¤ã³ã¿ã¼ãã§ã¼ã¹ã«ãæ´»ç¨ã§ãã¾ãã
ã¾ã¨ã
ããã§ã¯ãå¾æ¥åã®æç¶ãæåã®ããã°ã©ã è¨è¨ã«å¯¾ããåå©ç¨ã®éçã¨ããªãã¸ã§ã¯ãæåçãªã¢ã¼ããã¯ãã£ã§ã¯ãã®éçãã©ã®ããã«å æã§ããã®ãã¨ããç¹ã«ã¤ãã¦èª¬æãã¾ãããããã¦ãåå©ç¨æ§ã®é«ãè¨è¨ãå®ç¾ããããã§ã¯ãããã±ã¼ã¸éã®ä¾åé¢ä¿ãå®å®æ§ã¨ãã£ããã¨ã大åã§ãããã¨ã説æãã¾ãããç¹ã«ããªãã¸ã§ã¯ãæåè¨è¨ã«ããã
- ããã±ã¼ã¸ã®ä¾åé¢ä¿ã¨å®å®æ§ã®é¢ä¿ã«çç®ããå®å®ä¾åã®ååï¼SDPï¼
- ããªã¢ã¼ãã£ãºã ã«çç®ããä¾åé¢ä¿é転ã®ååï¼DIPï¼
- ãªãã¹ãæ½è±¡ã«ä¾åãã¹ãã¨ããå®å®åº¦ã»æ½è±¡åº¦ç価ã®ååï¼SAPï¼
ã¨ããèãæ¹ã«ã¤ãã¦ç´¹ä»ãã¾ããããã¡ããããããã®æ³å以å¤ã«ãè¨è¨ä¸èæ
®ãã¹ããã¨ã¯ããããããã¾ãããã¾ããããã¹ãæ£ããã¢ã¼ããã¯ãã£ãæ§ç¯ãããã¨ã¯ç°¡åãªãã¨ã§ã¯ãªãã¨ãããã¨ã¯ç¢ºãã§ããããããåªåãã¦æ£ããã¢ã¼ããã¯ãã£è¨è¨ãæ¡ç¨ããã¡ãªããã¯é·æçã«ã¯ä¿å®æ§ãæ¡å¼µæ§ã®åä¸ã«ããã¦ç¡è¦ã§ããªãã¬ãã«ã®ã¡ãªãããçã¿åºããã¨ãã§ãã¾ãããããããé·æã«ããã£ã¦ä¿å®æ¡å¼µãã¦ãããããªã¨ã³ã¿ã¼ãã©ã¤ãºã®åºå¹¹ã·ã¹ãã ã«ããã¦ãããæ£ããã¢ã¼ããã¯ãã£è¨è¨ãé ã使ã£ã¦å®æ½ããã¨ãããã¨ã大åã«ãªã£ã¦ãããã®ã¨ç§ã¯ä¿¡ãã¾ãã
ãªããããã§ç´¹ä»ããååã«ã¤ãã¦ã¯ã以ä¸ã®æ¸ç±ãåèã«ãã¾ããã

- ä½è : ããã¼ãã»Cã»ãã¼ãã³,Robert C. Martin,ç¬è°·åä»
- åºç社/ã¡ã¼ã«ã¼: SBã¯ãªã¨ã¤ãã£ã
- çºå£²æ¥: 2008/07/01
- ã¡ãã£ã¢: åè¡æ¬
- è³¼å ¥: 18人 ã¯ãªãã¯: 586å
- ãã®ååãå«ãããã° (64件) ãè¦ã
http://d.hatena.ne.jp/asakichy/
ãªãã以ä¸ã®togetterã®ã¾ã¨ãã§ããä»åã®ãã¼ãã«ã¤ãã¦è°è«ãã¦ãã¾ãã
staticおじさんに再利用の有効性をわかってもらうには? - Togetter
ã¡ãªã¿ã«ãstaticããããã«æ¯é ãããä¸çã§ã®éçºãã©ã®ãããªãã®ãªã®ãã«ã¤ãã¦ã¯ä»¥ä¸ã®ã¾ã¨ããåèã«ãªãã¾ãã
派遣PG時代の思い出 - Togetter
ããã¯èªå¼µã§ã¯ãªããç¾å ´ã«ãã£ã¦ã¯ä»ã§ãæ®éã«ã¿ãããå æ¯ã§ãã2011å¹´ç¾å¨ããã®ãããªéçºãè¡ããã¦ããã®ã¯ä¸çã§ãé¡ãè¦ãªãã®ã§ã¯ãªãã§ããããã
*1:CORBAãªã©ã®æè¡ã使ãã°COBOLã®ããã°ã©ã ããµã¼ãã¹ã¨ãã¦ã¤ã³ã¿ã¼ãã§ã¼ã¹ã¨å®è£ ãåé¢ãããã¨ã¯å¯è½ã§ãã
*2:ãã¡ãããstaticããããããããããªããã«ãpublic staticå¤æ°ã§ã°ãã¼ãã«å¤æ°ã«ç¸å½ããæ©è½ãã¨ãã¥ã¬ã¼ããããã¨ã¯å¯è½ã§ããã
*3:ãããã®ææ¨ãè¨æ¸¬ããã«ã¯JDependã¨ãããã¼ã«ããå§ãã§ãã
*4:æ¬æ¥ã¯ãªãã¸ã§ã¯ãæåã«éãããã½ããã¦ã§ã¢ã®ã¢ã¼ããã¯ãã£ãèãããã¨ã¯å¯è½ãªã¯ãã§ããã