ãšã³ãžãã¢ãæåã«èªãã¹ãæ¬
ãClean Code: A Handbook of Agile Software Craftsmanshipã
ãšã³ãžãã¢ã®ãã£ãªã¢ãã¹ã¿ãŒãããéãåºç€ãšãªãèãæ¹ãååããã£ããåŠã¶ããšã¯éåžžã«å€§åã§ãããã®äžã§ããRobert C. MartinïŒéç§° Uncle BobïŒã«ãããClean Codeãã¯ãèªã¿ãããä¿å®ããããã³ãŒããæžãããã®å ·äœçãªã«ãŒã«ãå®è·µäŸãè±å¯ã«æ²èŒãããŠãããåå¿è ã ãã§ãªããã£ãªã¢ã®ããããæ®µéã®ãšã³ãžãã¢ã«å€§ãã«åœ¹ç«ã¡ãŸããðâš
æ¬æžã®æŠèŠ
- èè : Robert C. Martin
-
ããŒã:
- ã³ãŒãã®å¯èªæ§ã»ä¿å®æ§ãåäžãããããã®ã«ãŒã«
- ããŒã å šäœã§ã³ãŒããçè§£ããããããæ¡åŒµæ§ã確ä¿ããææ³
- ãªãã¡ã¯ã¿ãªã³ã°ã®éèŠæ§ãšãã³ãŒãã®æ¹åã«åããå ·äœçãªå®è·µæ¹æ³
ããšãã°ãæ€çŽ¢çµæã§ã玹ä»ãããŠãããClean Codeãã®èãæ¹ã§ã¯ãã³ãŒããã¯ãªãŒã³ã§ãããšããããšã¯ãããŒã ã®èª°ããçè§£ã§ãã容æã«æ¹åã§ããç¶æ ãã§ãããšå®çŸ©ãããŠããŸããããã«ãããéçºããŒã å šäœã®çç£æ§åäžããã°ã®æžå°ã«ã€ãªãããŸãã
ãªããClean Codeããèªãã¹ããªã®ãïŒ
1. èªã¿ãããã³ãŒãã¯æªæ¥ãžã®æè³
-
çè§£ãããã:
æç¢ºãªåœåèŠåã颿°ã®èšèšã«ãããä»ã®ã¡ã³ããŒãã³ãŒãã容æã«èªããããã«ãªããŸãã -
ä¿å®æ§ãšæ¡åŒµæ§ã®åäž:
å°æ¥çã«æ°ããæ©èœã远å ããããäžå ·åã®ä¿®æ£ãè¡ãéã«ãããã£ãããšããåå°ã®äžã«ããã³ãŒãã¯å€§ããªã¢ããã³ããŒãžãšãªããŸãã
2. ã³ãŒãã¬ãã¥ãŒãšãªãã¡ã¯ã¿ãªã³ã°ã®åºæ¬åå
-
ã³ãŒãã¬ãã¥ãŒã®éã«æèãã¹ããã€ã³ã:
äžè²«ããã¹ã¿ã€ã«ãã·ã³ãã«ãªæ§é ããããŠåå©çšæ§ãæ±ããããŸãã -
ãªãã¡ã¯ã¿ãªã³ã°ã®å®è·µäŸ:
éè€ã³ãŒãã®æé€ããè€éãªããžãã¯ã®åçŽåãè¡ãããšã§ãã³ãŒãã®å質ãåäžãããæ¹æ³ãå ·äœçã«ç€ºãããŠããŸã[3][4]ã
3. å®è·µçãªååãšéçºå¹çã®åäž
-
Boy Scout Rule:
ããã£ã³ãå Žã¯èªåãæ¥ããšããããããã«ããŠåž°ãããšããèãæ¹ã§ãã©ããªå°ããªå€æŽãã³ãŒãã®æ¹åã«ã€ãªãããšèª¬ããŠããŸãã -
DRYïŒDon't Repeat YourselfïŒ:
éè€ãé¿ããããšã§ããã°ã®çºçãæããä¿å®æ§ãé«ããååã§ãã
ãClean Codeãã§åŠã¹ãå ·äœçãªãã€ã³ã
-
èªã¿ãããã³ãŒããæžãããã®ã«ãŒã«
- ã³ãŒãã¯ã誰ãèªãã§ããçè§£ã§ããç¶æ ã§ããã¹ã
- æå³ã®ãã倿°åãé©åãªé¢æ°ã®åå²ãå å®ããã³ã¡ã³ããªã©ãéèŠ
-
ã³ãŒãã¬ãã¥ãŒã§æèãã¹ããã€ã³ã
- ã³ãŒããæå³ããéãã«åããŠãããïŒ
- åé·ãªèšè¿°ããªããïŒ
- ä¿å®ãæ¡åŒµã容æãªèšèšã«ãªã£ãŠãããïŒ
-
ãªãã¡ã¯ã¿ãªã³ã°ã®éèŠæ§ã𿹿³
- ã³ãŒããæ¹åãããªãã¡ã¯ã¿ãªã³ã°ã®ããã»ã¹ãéããããã·ã³ãã«ã§æç¢ºãªæ§é ã«ãã
- å°ããªæ¹åãç©ã¿éããããšã§ãé·æçãªã·ã¹ãã ã®å質åäžã«å¯äž
ãClean Codeãã®èãæ¹ãèŠèŠåãã
以äžã®ãããŒãã£ãŒãã¯ãã¯ãªãŒã³ãªã³ãŒããç®æãããã®åºæ¬ããã»ã¹ãç°¡åã«ç€ºããŠããŸãïŒ
ãã®ããã»ã¹ãæèããããšã§ãæ¥ã ã®éçºäœæ¥ã«ãããŠãã¯ãªãŒã³ãªã³ãŒãããã©ãã»ã©éèŠãã宿ã§ããŸããð¡
å®è·µäŸïŒæªãã³ãŒã vs. è¯ãã³ãŒã
以äžã¯ãã·ã³ãã«ãªPythonã®ã³ãŒãäŸã§ãããŸãã¯ãæ¹ååã®ã³ãŒãïŒæªãã³ãŒãïŒããèŠãŠã¿ãŸãããã
# æªãã³ãŒãäŸ
def calc(n):
if n > 0:
return n * 2
else:
return 0
次ã«ãæå³ã®ãã倿°åãšã·ã³ãã«ãªããžãã¯ã«æ¹åããããŒãžã§ã³ã§ãã
# è¯ãã³ãŒãäŸ
def double_positive_number(number):
"""
:param number: æŽæ°
:return: æ£ã®æ°ã®å Žåã¯2åãè² ã®æ°ã¯0ãè¿ã
"""
if number > 0:
return number * 2
return 0
ãã®ããã«ã颿°åãã³ã¡ã³ãã工倫ããã ãã§ãã³ãŒãã®å¯èªæ§ã¯å€§ããåäžããŸãã
æåŸã«
ãClean Codeãã¯ãåãªãã³ãŒãã£ã³ã°ãã¯ããã¯ã«çãŸããããšã³ãžãã¢ãšããŠã®åºç€çãªèãæ¹ãåŠã¶ããã®æè¯ã®äžåã§ããèªã¿ãããã³ãŒãã¯ãããŒã å šäœã®ååããããžã§ã¯ãã®æç¶çãªæåã«çŽçµããŸããããªããåããŠã³ãŒããæžããšãããã®æ¬ã§åŠãã ååãæèããããšã§ãããé«å質ãªãœãããŠã§ã¢éçºã®ã¹ã¿ãŒããåããã¯ãã§ãã
ããã仿¥ãããã¯ãªãŒã³ãªã³ãŒãããæèããŠã³ãŒãã£ã³ã°ã«åãçµã¿ã次ã®ã¬ãã«ãžã¹ãããã¢ããããŸãããïŒð
èªè ã®çããããClean Codeããæã«åãããã®å®è·µçãªç¥èãæ¥ã ã®éçºã«æŽ»ãããããããã®èšäºãå°ãã§ã圹ç«ã€ããšãé¡ã£ãŠããŸãã