MyEnigma

とある自律移動システムエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Movie #Traveling #Mac #iPhone

8. ボーイスカウト・ルール Robert C. Martin:『プログラマが知るべき97のこと』

# 目次

# はじめに

以下の記事は,オライリージャパン社から出版された

『プログラマが知るべき97のこと』

の中から1つのエッセイを選び,

そのエッセイを,クリエイティブコモンズ3.0の条件の元で転載したものです.

Creative Commons ― 表示 3.0 アメリカ合衆国 ― CC BY 3.0

もし,他のエッセイを読みたい場合には,

記事末のリンクを辿るか,

以下のリンク先のTwitterアカウントのつぶやきからお探し下さい.

Twitter Account: 97 Things Bot


8. ボーイスカウト・ルール ロバート・C・マーティン (Robert C. Martin)

ボーイスカウトには大切なルールがあります.

それは,「来た時より美しく」です.

たとえ自分が来た時にキャンプ場が汚くなっていたとしても,

そして,たとえ汚したのが自分ではなかったとしても,

きれいにしてからその場を去る,というルールです.

そうやって,

次にキャンプに来る人達が気持ちよく過ごせるようにするのです.

(このルールは元々,

 ボーイスカウトの父と呼ばれる

 ロバート・スティーブンソン・スミス・ベーデン=パウエルの

 

 「自分が最初に見た時よりも,世界を良い場所にすべく努力しよう」

 

 という言葉から来ています.)



これに倣ってコーディングに関しても

同じルールを定めるとしたら

「モジュールをチェックインする際には,

 必ずチェックアウト時よりも美しくする.」

となります.

最初にそのモジュールを書いたのが誰であるかに関係なく,

皆がそうやって,

たとえ少しずつでもモジュールを改善する努力を続けたらとしたら,

その結果どうゆうことが起きると思いますか?



この簡単なルールを皆が守るだけで,

少なくとも今よりシステムの品質が低下することは防げるでしょう.

逆に,時間が経つごとにシステムの品質は徐々に向上していくはずです.

これは開発に関わるチーム全員が,

自分の担当する小さな部分だけではなく,

システム全体の質に目を向けることにもつながるでしょう.



私は,

このルールをとても守れないような難しいものだとは思っていません.

何もすべてのモジュールをチェックイン前に

完璧なものにせよと言っているのではなく,

チェックアウト時より少しでも良いものにしようと言っているだけなのです.

モジュールに新たなコードを加える場合には,

もちろんそのコードを「美しく」します.

既存のコードを触る場合には,

チェックイン前にどこか一箇所でいいので改善しましょう.

変数名をより適切なものに変えたり,

大きい関数を2つの小さくて,

よりシンプルな関数に分割する,

というのでもいいです.

循環参照を解消するというのでもいいですし,

インタフェースを追加することで,

ポリシーと実装を切り離すというのでもいいでしょう.



正直に言うならば,

これは誰もが守るべき当然の礼儀ではないかと思います.

トイレに行ったら手を洗う,

ゴミは床に散らかさずゴミ箱にきちんと捨てる,

というのと同じ部類のことではないでしょうか?

実際,コードに「汚い」部分を残したままにすることは,

ゴミを撒き散らすのと同じくらい,

社会的に受け入れがたいことです.

誰から見ても「してはならないこと」なのです.



そしてこれは礼儀以上の話でもあります.

他人が書いたコードを改善しようと思えば,

自分の担当部分のコードを改善する場合とは

全く違った配慮が必要になります.

チームのメンバーが互いに助け合い,

そして互いのコードを綺麗にするのです.

ボーイスカウト・ルールを守るのは,

それが自分だけではなく,

皆のためになるからです.



■著者データ

[ロバート・C・マーティン (Robert C. Martin)]

1970年以来,ソフトウェアのプロフェッショナルとして仕事をしてきた.

イリノイ州ガーニーを拠点とするObject Mentor社の創業者社長.

同社は,経験豊かなソフトウェア開発者,マネージャを擁する国際企業であり,

顧客企業のプロジェクト完遂の支援を主たる業務としている.

同社は,世界各地の主要企業に対して,

プロセス改善のためのコンサルティングや

オブジェクト指向ソフトウェアデザインのコンサルティング,

トレーニング,スキル開発サービスなどを提供している.

ロバートは専門誌に多数寄稿する他,

国際カンファレンスや展示会などでも頻繁に講演を行なっている.

また,多数の本の著者,編集者でもある.

関わった書籍の例としては,

『Designing Object-Oriented C++ Applications Using the Booch Method』

『Patterns Languages of Program Design 3』

『More C++ Gems』

『XPエクストリーム・プログラミング実践記ー開発現場からのレポート』

『アジャイルソフトウェア開発の奥義 第二版 

 オブジェクト指向開発の真髄と匠の技』

『JavaプログラマのためのUML』

『Clean Code-アジャイルソフトウェア達人の技』

などがある.

ソフトウェア業界のリーダ的存在であり,

『C++ Report』の編集長を三年間務めた他,

Agile Allianceの初代会長でもあった.


MyEnigma Supporters

もしこの記事が参考になり、

ブログをサポートしたいと思われた方は、

こちらからよろしくお願いします。

https://gumroad.com/l/myenigmasupportersgumroad.com