TDDã®åæã¨TDDæ¯æ´è¶ ç°¡æEmacs Lisp
日本PostgreSQLユーザ会北海道支部 / Ruby札幌 合同セミナーã«è¡ã£ã¦ãã¾ãããæ¿ã話ãããããè´ãã¾ããããä»åä¸çªã®ç®çã¯角谷さんã«ããRSpecã®å®æ¼ã
人ãç®ã®åã§ã³ã¼ãã£ã³ã°ãã¦ããã®ãè¦ãã®ã¯åå¼·ã«ãªãã¾ãããæ³¨ç®ãã¹ãã¯çµæçã«å ¥åãããã³ã¼ã以å¤ã®é¨åã«ãã£ã¦ããã¼ã¿ã¤ãé度ã®ç·©æ¥ããã³ããæä½ãããã¯ã¹ãã¼ã¹ã§ã®ä¿®æ£çãè¦ã¦ããã¨ããã®ã¨ãèãã¦ãããã¨ï¼èããã¹ããã¨ï¼ãæµ®ãã³ä¸ãã£ã¦ãããããªæãããã¾ãã
TDDï¼ãã¹ãé§åéçºï¼ã«ã¤ãã¦ã¯ããå®éã®ã¨ãããã©ããå³å¯ã«ãã£ã¦ãã©ãã§æãæãã¹ããªã®ããã«ã¤ãã¦ã¡ãã£ã¨æéãè¦ããããã«æãã¾ãã
ä»åä¸çªå³å¯ã«å®ã£ã¦ããã®ã¯ãThinkããRedããGreenããRefactoringãã®ã¢ã¼ãåãæ¿ããä»ã©ãã®ã¢ã¼ãã§ä½æ¥ããã¦ããã®ããæèãã¦ãä¾ãã°ãã¹ãNGãæ®ã£ã¦ããç¶æ
(Red)ã§ã¯çµ¶å¯¾ã«ãªãã¡ã¯ã¿ãªã³ã°ãããªããã¨ãããããªé²ãæ¹ããã¦ãã¾ããããã®ã¨ãï¼ã¤ã®ã¢ã¼ããæç¤ºããããã«ãã³ã¼ãã£ã³ã°ãã¦ããæ¨ªã§ãã®ã¨ãã®ã¢ã¼ãã示ãã«ã©ã¼ãã¼ããæ²ãã¦ããã®ã¯ã¡ãã£ã¨é¢ç½ãã£ãã
ãã®ã«ã©ã¼ãã¼ãã¿ãããªãã¨ãå人ã¬ãã«ã§ãã§ããªãããªããã¨èãã¦ä¸ã®ããã°ã©ã ãä½ã£ã¦ã¿ã¾ãããC-c mãã¼ãæ¼ãã¨ã¨ãã£ã¿ã®èæ¯è²ã次ã ã¨å¤ããEmacs Lispã§ããã¢ã¼ãã©ã¤ã³ã«ã[Think]ãªã©ã®ã¢ã¼ãåã表示ãã¾ãã
tdd-bgcolor.el
;; C-c m ã§TDDã®ã¢ã¼ãåæ¿ã (defvar tdd-bgcolor-alist '(("Think" ."snow") ("Red" ."#ff4444") ("Green" ."#44dd44") ("Refactoring"."#ffaa44"))) (defvar tdd-bgcolor-mode 3) (defvar tdd-bgcolor-mode-name "") (let ( (cell (or (memq 'mode-line-position mode-line-format) (memq 'mode-line-buffer-identification mode-line-format))) (newcdr 'tdd-bgcolor-mode-name)) (unless (member newcdr mode-line-format) (setcdr cell (cons newcdr (cdr cell))))) (defun tdd-bgcolor-rotate () (interactive) (let (pair) (if (>= tdd-bgcolor-mode 3) (setq tdd-bgcolor-mode 0) (setq tdd-bgcolor-mode (+ tdd-bgcolor-mode 1))) (setq pair (nth tdd-bgcolor-mode tdd-bgcolor-alist)) (setq tdd-bgcolor-mode-name (format "[%s]" (car pair))) (message tdd-bgcolor-mode-name) (set-background-color (cdr pair)))) (global-set-key "\C-cm" 'tdd-bgcolor-rotate)
