Rubyã®æååãªãã©ã«ã§ã¯ããã«ã¯ãªã¼ããåºæ¬ã¨ããã
Ruby ã§ã¯å¤§ããåãã¦3種é¡ã®æååãªãã©ã«*1ãããã¾ãããã©ã®ããã«ä½¿ãåããã®ãé©åããèªåãªãã®çµè«ã«éããã®ã§ã¾ã¨ãã¦ããã¾ãã
çµè«
ã¾ãå ã«çµè«ããæ¸ãã¦ããã¨*2ã
- åºæ¬ã¯ããã«ã¯ãªã¼ãã使ç¨ãã
- æå³çã«å¼å±éãæå¶ãããå ´åã«ã®ã¿ã·ã³ã°ã«ã¯ãªã¼ãã使ç¨ãã
ãæãé©åãªä½¿ãåãã ã¨æãã¾ãã
ããã¯ãRuby Style Guide ã® æååãªãã©ã«ã¹ã¿ã¤ã«ã® Option B ã¨åãã§ãã
æååä¸ã«"ãå«ãã§ããããã¨ã¹ã±ã¼ãæåãæãããã¨ãã§ãªãéãã ããã«ã¯ã©ã¼ãã¼ã·ã§ã³ã好ã¾ãã¾ãã
ã¤ã¾ããæååãªãã©ã«ã¯ Ruby Style Guide ã® Option Bãæ¡ç¨ããã®ãæãé©å ã ã¨èãã¦ãã¾ãã
以ä¸ã Option A 㨠Option B ã§æºãåããæå¾ã« Option B ã«å°éããçç±ã説æãã¦ããã¾ãã
æååãªãã©ã«ä¸è¦§
3種é¡ã®æååãªãã©ã«ã«ã¯ä»¥ä¸ã®ã¨ããã§ãã
- ã·ã³ã°ã«ã¯ãªã¼ã
- ããã«ã¯ãªã¼ã
- ãã¼ã»ã³ãè¨æ³
Ruby Style Guide ã§ã Consistent String Literals ã¨ããããã«ãæã大åãªãã¨ã¯é¦å°¾ä¸è²«ãã¦åãè¨æ³ã使ããã¨ã ã¨æãã¾ãã æ£ç´ãæä½ã§ããªãã¸ããªåä½ã§ãã®ä¸è²«æ§ãå®ããã¦ãããä½ã使ã£ã¦ãè¯ãã¨æã£ã¦ãã¾ãã
ãã®ãããä»ããè¿°ã¹ã説æã¯ãããããæååãªãã©ã«ãé¸ã¶æãã©ããæ¡ç¨ããã¨è¯ãã®ããã¨ããèªåãªãã®èãã¨ãªãã¾ãã
ããã§ã¯é ã追ã£ã¦ã©ããè¯ãããèãã¦ããã¾ãã
ãã¼ã»ã³ãè¨æ³ã®é¤å¤
Ruby Style Guide ã«ä»¥ä¸ã®ããã«è¨è¼ããã¦ããéãã%q
ãªã©ã¯åºæ¬ã®æååãªãã©ã«ã«ãã¹ãã§ã¯ãªãã¨æãã¾ãã
æååã«'ã¨"åæ¹ãå«ã¾ããªãéãã %qã®ä½¿ç¨ã¯é¿ãã¾ãããã ããããã®æååãã¨ã¹ã±ã¼ãããªãã¦ãããã¨ãã¯ã éå¸¸ã®æååãªãã©ã«ã®ã»ããããèªã¿ãããã æ¨å¥¨ãããã¹ãã§ãã
Ruby ã®æãæåãªéçã³ã¼ãè§£æãã¼ã«ã§ãã RuboCop ã®ãã¼ã¹ã«ã¼ã«ã¨ãªã£ã¦ãã Ruby Style Guide*3 ã«ã¯åºæ¬çã«å¾ãã®ãåã ã¨æãã¾ãã
éèªãããã¨ãããã¾ãããã¨ã¦ãè¯ãã¨æãã¾ããããã¡ãããããã¸ã§ã¯ããã¨ã«èª¿æ´ã¯å¿ è¦ã ã¨ã¯æãã¾ãã
ã·ã³ã°ã« vs ããã«
ãã¦ãæ®ãã¯ã·ã³ã°ã«ã¯ãªã¼ããããã«ã¯ãªã¼ããã§ãã
Ruby Style Guide ã§ã¯ãªãã¨ãã©ã¡ããæ¨å¥¨ããã¦ãã¾ããã¤ã¾ããèªåã®å¤æãããã¸ã§ã¯ãã®æ¹éã§é¸ã¹ã°è¯ããã¨ãããã¨ã§ããã
ããããã®å®¢è¦³çãªã¡ãªããã¨ãã¡ãªãããã¾ãã¯æãã¦ã¿ããã¨æãã¾ãã
ã·ã³ã°ã«ã¯ãªã¼ãã®ã¡ãªãã
- ããã«ã¯ãªã¼ãæååã®æã¯ããã®æååä¸ã«ã¯å¼å±éããããã¨ãããã¨ãä¸ç®ã§ããã
ã·ã³ã°ã«ã¯ãªã¼ãã®ãã¡ãªãã
- æååä¸ã®å¼å±éã®æç¡ãå¤ãã£ãéã«ã·ã³ã°ã«ã¯ãªã¼ãã¨ããã«ã¯ãªã¼ããå ¥ãæ¿ããå¿ è¦ããã
ããã«ã¯ãªã¼ãã®ã¡ãªãã
- ã·ã³ã°ã«ã¯ãªã¼ãæååã®æã¯ããã®æååã§ã¯å¼å±éãæå³çã«æå¶ãã¦ãããã¨ãããã¨ãä¸ç®ã§ããã
ããã«ã¯ãªã¼ãã®ãã¡ãªãã
- æååä¸ã®å¼å±éã®æå¶ã®å¿ è¦ã®æãç¡ããå¤ãã£ãéã«ãã·ã³ã°ã«ã¯ãªã¼ãã¨ããã«ã¯ãªã¼ããå ¥ãæ¿ããå¿ è¦ããã
ããã ã並ã¹ãã¨ãã©ã£ã¡ãã©ã£ã¡ã§ããã
Ruby Style Guide ã§ä¸¡è ã鏿å¶ã«ãã¦ããçç±ã容æã«è¦ã¦åãã¾ãã
ããã§ã¯ãããããã¯èªåãªãã®èããæ¸ãã¦ããããã¨æãã¾ãã
ã·ã³ã°ã«ã¯ãªã¼ãã®ã¡ãªããã¸ã®æè¦
èªåã®çµé¨ä¸ããã®ã·ã³ã°ã«ã¯ãªã¼ããããã«ã¯ãªã¼ããã®éããè¦ã¦ãå¼å±éã®æç¡ã夿ãããã¨ã¯ã»ã¼ããã¾ããã
ãã®çç±ã¨ãã¦ã大ä½ã®å ´åã«ç½®ãã¦å¼å±éãããã¨ã·ã³ã¿ãã¯ã¹ãã¤ã©ã¤ããå¹ãã¦ã²ã¨ç®ã§åããããã§ãã
ããã·ã³ã¿ãã¯ã¹ãã¤ã©ã¤ããå¹ããªãç¶æ³ã§ããã°ããã®å¼ã«å±éãå«ã¾ãã¦ããã©ãããã²ã¨ç®ã§ãããã®ã¯ééããªãã§ãã
ãã ãå®éã«æååãçºããéã«ããã®æååã¯å±éãããã®ããªï¼ç¡ãã®ããªï¼ãã¨è¦ããã¨ã¯å人çã«ã¯ãã¾ããªãããªã¨æã£ã¦ãã¾ãããªããªãã·ã³ã¿ãã¯ã¹ãã¤ã©ã¤ããå¹ããªãã¦ãããã£ã½ã©é·ãã¦ãããã«ããæååãããªãéããããã«å¼å±éãã¨ã¹ã±ã¼ãã·ã¼ã±ã³ã¹ãå«ã¾ãã¦ãããã©ããã¯ãããã«ãããããã§ãã#{}
ã¨ã\
ã¨ãçµæ§ç®ç«ã¡ã¾ãã
ãã®ãããã·ã³ã°ã«ã¯ãªã¼ããããã«ã¯ãªã¼ãããå½¹ç«ã¦ãéã¯ããã¨ã¹ã±ã¼ãã·ã¼ã±ã³ã¹ãªã©ãæååä¸ã«å«ã¾ãã¦ãå ´åã«ãããå±éãããã®ãå±éãããªãã®ãã®å¤æãã«ä½¿ããã¨ã«ãªãã¾ãã
ããã¯ã¤ã¾ãããã·ã³ã°ã«ã¯ãªã¼ããããã«ã¯ãªã¼ããã«ãã£ã¦ãå¼å±éãæå¶ããã¦ãããã©ããã夿ããéã«å½¹ç«ã¤ãã¨ãããã¨ã«ãªãã¾ããã
ãããããã¯ããã«ã¯ãªã¼ããåºæ¬ã¨ããã®æã®ã¡ãªããã¨åãã§ããâ¦â¦ï¼
ããã«ã¯ãªã¼ããåºæ¬ã¨ããéã¨ã®éãã¯ãã·ã³ã°ã«ã¯ãªã¼ãã§å²ã¾ãã¦ããããã¨è¨ã£ã¦ãããã§å¼å±éã®æå¶ãè¡ããã¦ãããã©ããã¯ãã®å²ãã®ç¨®é¡ããã ãã§ã¯å¤æã§ããªãã¨ããäºãæãããã¾ããå®å ¨ã«å£åãã¦ã¾ãã
ããªãã¡ãå¼å±éã®æå¶æç¡ã«å½¹ç«ã¦ãã®ã§ããã°ãç´ ç´ã«ããã«ã¯ãªã¼ããåºæ¬ã¨ãã¦ä½¿ãã¹ãã¨ããçµè«ã«ãªãã¾ããã
ãã®æç¹ã§å人çã«ã¯ã·ã³ã°ã«ã¯ãªã¼ãã®ã¡ãªããã¯æ¶å¤±ãã¾ããã
ã·ã³ã°ã«ã¯ãªã¼ãã®ãã¡ãªããã¸ã®æè¦
æååä¸ã®å¼å±éã®æç¡ã£ã¦ãã³ã¼ãã£ã³ã°ä¸ã«å¤ãããã¨ã£ã¦ããããããã¨æãã¾ãã ãã³ã³ã¯å ±éé ã ããæãåºãã¨ãããã¨ããããã£ã±ãã³ã¬ã¯éããªãã¨ããããã¨æãã¾ãã
ãã®éã«ãã¡ãã¡å²ãæåãå¤ããã®ã¯æ£ç´é¢åã§ããããã¡ãªããã¯ç«æ´¾ã«çãæ®ãã¾ããã
ããã«ã¯ãªã¼ãã®ã¡ãªããã¸ã®æè¦
ã·ã³ã°ã«ã¯ãªã¼ãã®ã¡ãªããã¸ã®æè¦ã¨åãããã·ã³ã¿ãã¯ã¹ãã¤ã©ã¤ããå¹ãç¶æ³ä¸ã§ã¯ãã®å²ãæåã§å±éæç¡ã夿ãããã¨ã¯ã»ã¼ç¡ãã¨æãã¾ãã
ããã·ã³ã¿ãã¯ã¹ãã¤ã©ã¤ããå¹ããªãå ´åãå¼å±éãæå¶ããã¦ãããã©ããã夿ããã®ã«ã¯ãããã«å½¹ç«ã¡ã¾ãã
ã·ã³ã°ã«ã¯ãªã¼ããè¦ãæã¯ããããã®æååã§ã¯ããã¦ä½ããµãã¬ã¹ãã¦ãã ãªãã¨ããã£ã¦ãã¹ãããªã·ã³ãã«ç´ æµã§ãã
ããã«ã¯ãªã¼ãã®ãã¡ãªããã¸ã®æè¦
æååä¸ã®å¼å±éã®æç¡ã«æ¯ã¹ãã¨ãæååä¸ã®å¼å±éã®æå¶ã®æç¡ãã³ãã³ãåãæ¿ããå ´é¢ã¯å°ãªãã¨æãã¾ãã ãã¡ãªããã¯ãã¡ãªããã§ãããã·ã³ã°ã«ã¯ãªã¼ãã®ãã¡ãªããããç ©ãããã¨æãããã¨ã¯å°ãªããã§ãã
決ç
ã·ã³ã°ã«ã¯ãªã¼ãã®ã¡ãªããã¯æ¶ãå»ãããã¡ãªãããçãæ®ãã¾ããã ããã¦ããã«ã¯ãªã¼ãã®ã¡ãªããã¯ãã®ã·ã³ãã«ããéç«ã¡ããã¡ãªããã¯ã·ã³ã°ã«ã¯ãªã¼ãã¨ã®æ¯è¼ã§åå©ãã¾ããã
ããã¯ããããã«ã¯ãªã¼ããåºæ¬ã«ããããç¡ãã§ããï¼
ããã«ã¯ãªã¼ãã®ä¸»è¦³çã¡ãªãã
決çãã¤ããä¸ã§ãæ´ã«ä¸»è¦³çã¡ãªãããè¿°ã¹ã¦ããã¾ãã
ããã«ã¯ãªã¼ããåºæ¬ã¨ãã¦ä½¿ã£ãå ´åã
- åºæ¬çã«å¸¸ã«ããã«ã¯ãªã¼ãã使ã
- å¼å±éãæå¶ããç¹æ®ãªç¶æ³ã§ã®ã¿ã·ã³ã°ã«ã¯ãªã¼ãã使ã
ã¨ãããç¹æ®ãªç¶æ³ä¸ã§ã®ã¿ç°ãªããªãã©ã«ã使ãã¨ããä¸è²«æ§ãéç«ã¡ã¾ãã
ã·ã³ã°ã«ã¯ãªã¼ãã®å ´åãä¸è²«æ§ã¯ããã®ã§ããã
- åºæ¬çã«å¸¸ã«ã·ã³ã°ã«ã¯ãªã¼ãã使ã
- å¼å±éãå¿ è¦ãªç¹æ®ãªç¶æ³ã§ã®ã¿ããã«ã¯ãªã¼ãã使ã
ã¨ãªãã¾ãããå¼å±éãå¿ è¦ãªç¶æ³ã£ã¦ç¹æ®ã§ããããï¼ç§ã¯ããã¯æãã¾ãããæ®éã®ç¶æ³ã§ãã ããã«æ¯ã¹ããããããµãã¬ã¹ããã¨ããã®ã¯ååã«ç¹æ®ã ã¨æããã¾ãã
ããã«ã¯ãªã¼ãã®å¤§åå©ï¼
å¥è¨èªã®ä¾
ãã¡æ¼ãã§èªåãã³ã¬ã¾ã§ã«è¦ããã¨ã®ããè¨èªãç¨ãã¦ããã«ã¯ãªã¼ãåºæ¬è«ãæ´ã«ããã·ã¥ãã¦ã¿ããã¨æãã¾ãã
C
ã¿ããªå¤§å¥½ã C è¨èªã®æååãªãã©ã«ã¯ããã«ã¯ãªã¼ãã§ãã ã·ã³ã°ã«ã¯ãªã¼ãã¯æåãªãã©ã«ã®ãã¨ã§ããã
C è¨èªã§ Pascal 風è¨èªã³ã³ãã¤ã©ãä½ã£ãæ¿ããæ¦ãã®è¨æ¶ãèã£ã¦ããã
C Sharp
ã¿ããªå¤§å¥½ã C# ã§ã®æååãªãã©ã«ãããã«ã¯ãªã¼ãã§ãã ã³ã³ã§ãã㦠C# ãæã£ã¦ããçç±ã¯ãC# ã«ãç¹æ®æåãã¨ã¹ã±ã¼ããããã¨ãã«ä½¿ããè¨æ³ããããããã§ãã
//Initialize with a regular string literal. string oldPath = "c:\\Program Files\\Microsoft Visual Studio 8.0"; // Initialize with a verbatim string literal. string newPath = @"c:\Program Files\Microsoft Visual Studio 9.0";
æåå (C# ããã°ã©ãã³ã° ã¬ã¤ã)
Ruby ã§æååãªãã©ã«ã®åºæ¬ãããã«ã¯ãªã¼ãã«ããã¨ãã¨åãæèããã»ã¹ã«ãªãã¾ããã ãããããããC# ã®ãã®è¨æ³ããã£ãããããããæèããã»ã¹ã«ãªã£ã¦ããå¯è½æ§ãããã¾ããããã®ä»ã®ãã¼ã«ã§ããåºæ¬çã«ãå¿ è¦ãªã¨ãã«ã¨ã¹ã±ã¼ããããã¨ããå©ç¨æ¹æ³ãæä¾ãã¦ãããã®ãå¤ãæ°ããã¾ãã ããã°ã©ãã³ã°è¨èªã®æååãªãã©ã«ã¨äºæ ãéãã®ã¯å½ç¶ã§ãããBash ã¨ã Vim ã¨ãã§ãåºæ¬å¿ è¦ãªã¨ãã«ã¨ã¹ã±ã¼ãããå¿ è¦ãããã¾ãããã
Ruby ã§ããã«ã¯ãªã¼ããåºæ¬ã«é¸ã¹ã°ãã³ã¬ã«ä¹ã£ãããã¨ãã§ããã®ãè¯ããªã¨æãã¾ãã
.NET ã使ã£ãå®å ¬åºã¨ã®ç¾çãªæ¦ãã®è¨æ¶ãèã£ã¦ããã ã§ãããå°å ´ã§ã® .NET ç ä¿®ã¯æé«ã ã£ãã
Crystal
Ruby ã®ãã£ããããã¨ãã¦æå㪠Crystal ã§ããããªãã¨æååãªãã©ã«ã¯ããã«ã¯ãªã¼ãã®ã¿ã§ãã ã·ã³ã°ã«ã¯ãªã¼ã㯠C è¨èªã¨åããæåãªãã©ã«ã表ãã¾ãã
å®ã¯ä½¿ã£ããã¨ç¡ãã®ã§èãè¨æ¶ã¯ããã¾ããã§ããã
å ¨ãé¢ä¿ã®ç¡ãéå»åæ³ãå ¥ã£ã¦ãã¾ãã¾ããããããã«ã¯ãªã¼ããæååã¨ããã®ãèªåã«ã¨ã£ã¦èªç¶ã§ããçç±ã¨ãå¿ è¦ãªæã«ã¨ã¹ã±ã¼ãããã¨ããããã»ã¹ããã£ããããçç±ãä¼ãã£ããã¨æãã¾ãã
ãããã«
é·ã ã¨ãªãã¾ããããå®éããã ãã®ãã¨ãèããä¸ã§ã俺㮠Ruby ã³ã¼ãã£ã³ã°è¦ç´ã§ã¯çµ¶å¯¾ããã«ã¯ãªã¼ãã ï¼ãã¨ããçµè«ã«éãã¾ããã
è³åãã¦ãã ããæ¹ã¯ããããã㯠Ruby Style Guide ã® Consistent String Literals ã§ã¯ Option B ãé¸ã³ã¾ãããï¼
ã:ãâã½(âââ)/âã:ãã
*1:ãã¢ããã¥ã¡ã³ãã«ã¤ãã¦ã¯æããã«ç¨æ³ãç°ãªãããé¤å¤ãã¦ã¾ã
*2:ã¿ã¤ãã«ã«çµè«æ¸ãã¦ããã¾ããï¼
*3:ã©ã¡ããbbatsovããã®ãªãã¸ããªãªã®ã§å½ç¶ã¨ããå½ç¶ã§ããï¼ç¬