SlideShare a Scribd company logo
1 of 46
リーダブルコード1.0 
~ 誰にでも読みやすいコードを目指して~
出典 
リーダブルコード– より良いコードを書く 
ためのシンプルで実践的なテクニック 
Amazonでは★4.5の好評価! 
★★★★★ 初級者にも上級者にもおすすめ 
★★★★★ スラスラ読める実践的なコーディング指針 
★★★★★ 優れたコードを書く切欠を与えてくれる本
リーダブルコードって何?
リーダブルコードって何? 
• Readable code = 読みやすいコード 
リーダブルコードとは、 
”他の人が最短時間で理解できるように書かれているコード”
スパゲティコードなら知ってるよ?
スパゲティコードって言葉は聞いたことあるなぁ 
• スパゲティプログラムまたはスパゲティコードとは、制作したプログラ 
マ以外にとって解読困難である事を表す俗語 
• 例) 
– goto文の濫用 
– 多重継承の濫用 
– スコープが大きい
スパゲティコードじゃないけど 
• どちらの方が読みやすいですか? 
if ((bucket = findBucket(key) ) || !backet.isOccupied()) { 
} 
bucket = findBucket(key); 
if (bucket != null) { 
assert(!bucket.isOccupied); 
}
何のため読みやすいコードを書くの? 
• チームの他の人のため 
• 未来のメンバーのため 
• 未来の自分のため
ここで思い出して下さい!
自分の書いたコードって 
あなたはどのくらい覚えていますか?
ふたりのプログラマの会話 
A「自分が書いたコードってどのくらい覚えているんですか?」 
B「ほとんど覚えていないっすよ」 
A「直すときどうするんですか?わからなくなっているじゃないですか」 
B「忘れても見たら簡単にわかるように書いておくんですよ」
どうすればリーダブルになるか?
リーダブルにする4つのポイント 
1. 命名 
2. コメント 
3. 制御フロー 
4. 処理の分割と構成
1. 命名
• 変数名、関数名は機能が一目瞭然でわかるものにす 
る 
– StartPage() 
• Startは便利な単語だが、汎用的すぎて具体的ではない。作るの 
か?始めるのか?開くのか?わかりにくい 
• 代替案 
– CreatePage, beginPage, openPage 
• 他にもないか考えてみよう 
– Send, find, make, get, set … 
命名1
命名2 
• tmpやretvalなどの汎用的な名前は避ける 
– 何をやっているか一目瞭然ではない 
• 抽象的な名前より具体的な名前を使う 
– 「サーバー開始」より、サーバーのどの機能を開始するかを明示した方が 
良い 
• 名前に情報を追加する 
– 時間でミリ秒を返すなら、begin_msのようにミリ秒を表す言葉を追加す 
るとベター
命名3 
• 誤解されない明確な名前 
– 他の意味と間違えられることはないだろうか? 
• 限界値を求める場合、MAX, MINなどを頭につける 
– MAX_VERTICAL_LENGTH、MIN_HORIZON_LENGTH 
• 範囲を指定する場合first, lastなど使う 
• 限定的な範囲だとbegin, endあたりも良い 
• get*()はメンバの値を返すだけの軽量な関数である。あまり色々な処理をす 
る関数の名前にふさわしくない。 
最善の名前とは、誤解されない名前である。つまり、あなたのコードを読んで 
いる人が、君の意図を正しく理解できるということだ
カラフルな単語を探してみよう 
• send → deliver, dispatch(発送する), announce, 
distribute(分配する), route 
• find → search, extract, locate, recover 
• start → launch, create, begin, open 
• make → create, setup, build, generate(~を生む), 
compose, add, new…
命名4 
• スコープの大きな変数には長い名前をつける、逆にス 
コープの小さな変数には短い名前であることが感覚的 
に良い
• Date型をString型に変換する関数がある場合、どういう形式で 
返すのかわかるようにするのも、良い方法である。 
• String toDateString(Date date); 
↓ 
• String toYYYYMMDD(Date date);
• booleanの変数やメソッド名 
• if (user.auth()) { 
• // 著者は・・何してる? 
• } 
• if (user.hasAuthority()) { 
• // is, has, canを頭につけると途端にわかりやすくなる 
• }
2. // コメント
コメント1 
• コードを見てすぐわかることをコメントに書かない。 
– setProfit(int profit) // profitに新しい値を設定する 
• 価値の無いコメントを書かない 
// 与えられたsubtreeに含まれるnameとdepthに合致したNodeを見つける 
findNodeInSubtree(Node subtree, String name, int depth);
コメント2 
• 読み手を意識して伝える 
– 嵌りそうな罠、ここは紛らわしいので注意!とか 
– 質問されそうなことを書いておく 
– コードの欠陥にコメントをつける 
• // TODO: あとで手をつける 
• // FIXME: 既知の不具合があるコード 
• // HACK: あまり綺麗じゃない解決策 
• // XXX 危険!大きな問題がある
コメント3 
• 曖昧な代名詞を避ける。 
– 「これを」、「それを」等の表現は避ける 
「データを」、「キャッシュを」・・・具体的に 
• 歯切れの悪い文章を磨く 
// 広告の使用に応じて優先度を変える 
⇓ 
// 広告の使用頻度によって優先度を上げる
// このシステムは日本国内に限られているので 
// 電話番号で国番号を入力する必要はない 
または、実例で補足する 
/** 
** 平成和暦日付文字列を解析してDateとして返却する 
** 例: 
** 平成24年10月31日はOK 
** H24.10.31はOK 
** H24.1月2日はNG 
*/
コメントのポイント 
◎コードの意図を読み手に理解してもらう 
◎コメントは領域に対する情報の比率が高くなければならない 
◎コードの意図は詳細レベルではなく、高レベルで記述する
少しおさらい 
• 高レベル言語とは? 
• 高級言語とは、プログラミング言語のうち、より自然語に近く、人間にとって理解しやす 
い構文や概念を持った言語の総称である。 
• 高級言語は、主に英単語や記号などを組み合わせて命令を記述し、コンパイラやイン 
タープリタなどで機械語に変換され、実行される。より機械語に近い言語で記述を行 
う低級言語(低水準言語)と比べて、言語の理解がしやすく、また汎用性が高いと 
いう利点がある。 
- IT用語辞典BINARYより抜粋
3. { 制御フロー}
制御フロー1 
• 条件式の並び順 
– 変化する方を左、固定値を右に配置する 
if (10 < length) // こちらより 
if (length > 10) // こちらの方が読みやすい
制御フロー2 
• if/elseブロックの並び順 
– 条件は否定形より、肯定形を使う 
• if (!debug)ではなく、if (debug)を(なるべく)使う 
– 関心を引く条件や目立つ条件を先に書く 
• 条件に応じて、否定を先に書くこともある
制御フロー3 
• ネストを浅くする 
if (条件1) { 
// 処理1 
if (条件4){ 
// 処理4 
} else { 
// 処理5 
if (条件5) { 
// 処理6 
if (条件6){ 
// 処理7 
if(条件7) { 
// 処理9 
} else { 
// 処理10 
if(条件8) { 
// 処理11 
} else { 
// 処理12 
} 
} 
} 
} else { 
// 処理8 
} 
} 
} 
} else if (条件2) { 
//処理2 
if(条件2) { 
// 処理3 
} 
} 
・・・これは以前の現場で私が出会ったコードです。
制御フロー4 
• ネストを深くするより、ガード節を作って、 
早めにリターンすると読み手にとってはわかりやすい。 
(ループでは、breakを使って早めにリターンする)
制御フローのポイント 
• 制御フローはできるだけ自然にする。コードの読み手が 
立ち止まったり、読み返したりしないように書く
4. 処理の分割と構成()
処理の分割と構成1 
• タスクを列挙して、処理を分割する 
• コードはタスクを1つずつ行うようにする 
• 一つのクラスにゴチャゴチャ機能を詰め込まない
ここで質問
ド・モルガンの法則って覚えていますか?
「「A かつB である」なん 
てことはない」 
とは、 
「AでないかB でない」 
と同じ意味になる、という 
法則。 
• if (!(A && B) == !A || !B) { 
} 
• if (!(A || B) == !A && !B) { 
} 
「ド・モルガンの法則」とは、AND演算とOR演 
算を相互に変換するものです。以上のように、 
左辺のAND演算を右辺のOR演算に変換し 
たり、左辺のOR演算を右辺のAND演算に変 
換します。ド・モルガンの法則に相当するものは、 
四則演算にはありません。論理演算ならではの 
法則なのです。 
ド・モルガンの法則
処理の分割と構成3 
• 巨大になってしまった処理 
– 条件式で条件内に処理を詰め込みたい場合は、説明変数 
やマクロに代入し、それを比較するほうが読みやすくなる。 
• コピペミス・タイプミスを減らせる 
• 横幅が狭くなるので、コードが読みやすくなる 
※ しかしマクロの多用は読みにくくなる恐れもある! 
ケースバイケースで使うべき
処理の分割と構成4 
• グローバル変数は、読みにくく、どこで使っているかわかりにくいの 
で、出来る限りスコープの小さい変数を使用する
☆おまけ 
• 汚い実装をするぐらいなら標準APIから使えそうなものを探す 
• 条件分岐に整数値や文字列を使わないでenum型を使う 
• エラーメッセージを読みやすくする
さて、まとめます 
リーダブルコードとは?
リーダブルコードとは、 
”他の人が最短時間で理解できるように書かれているコード” 
読みやすいコード 
忘れてもよいコード
出典 
リーダブルコード– より良いコードを書く 
ためのシンプルで実践的なテクニック 
Amazonでは★4.5の好評価! 
★★★★★ 初級者にも上級者にもおすすめ 
★★★★★ スラスラ読める実践的なコーディング指針 
★★★★★ 優れたコードを書く切欠を与えてくれる本
ご清聴ありがとうございました。

More Related Content

What's hot

モジュールの凝集度・結合度・インタフェース
モジュールの凝集度・結合度・インタフェースモジュールの凝集度・結合度・インタフェース
モジュールの凝集度・結合度・インタフェースHajime Yanagawa
 
第4部「Tddとペアプロのめざめ」
第4部「Tddとペアプロのめざめ」第4部「Tddとペアプロのめざめ」
第4部「Tddとペアプロのめざめ」Hiromu Shioya
 
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」y torazuka
 
読みやすいプログラム、書き換えやすいプログラム
読みやすいプログラム、書き換えやすいプログラム読みやすいプログラム、書き換えやすいプログラム
読みやすいプログラム、書き換えやすいプログラムamusementcreators
 
JVMの中身を可視化してみた
JVMの中身を可視化してみたJVMの中身を可視化してみた
JVMの中身を可視化してみたKengo Toda
 
EWD 3トレーニングコース#9 複雑なewd-xpressメッセージと応答
EWD 3トレーニングコース#9 複雑なewd-xpressメッセージと応答EWD 3トレーニングコース#9 複雑なewd-xpressメッセージと応答
EWD 3トレーニングコース#9 複雑なewd-xpressメッセージと応答Kiyoshi Sawada
 
次世代DaoフレームワークDoma
次世代DaoフレームワークDoma次世代DaoフレームワークDoma
次世代DaoフレームワークDomaToshihiro Nakamura
 
Mobile programming seigyokoubun
Mobile programming seigyokoubunMobile programming seigyokoubun
Mobile programming seigyokoubunYuichiro Takahashi
 
できる!Pmdカスタマイズ
できる!Pmdカスタマイズできる!Pmdカスタマイズ
できる!PmdカスタマイズSatoshi Kubo
 
負荷がたかいいんだから~♪(仮)
負荷がたかいいんだから~♪(仮)負荷がたかいいんだから~♪(仮)
負荷がたかいいんだから~♪(仮)Yohei Hamada
 
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニックinfinite_loop
 
メタプログラミングってなに?
メタプログラミングってなに?メタプログラミングってなに?
メタプログラミングってなに?KazukiWata
 
使い捨て python コードの書き方
使い捨て python コードの書き方使い捨て python コードの書き方
使い捨て python コードの書き方Sho Shimauchi
 
#027 tddのさわり
#027 tddのさわり#027 tddのさわり
#027 tddのさわり森下 智裕
 
設計してますか?
設計してますか?設計してますか?
設計してますか?ke-m kamekoopa
 

What's hot (20)

Benkyokai
BenkyokaiBenkyokai
Benkyokai
 
良いコードとは
良いコードとは良いコードとは
良いコードとは
 
モジュールの凝集度・結合度・インタフェース
モジュールの凝集度・結合度・インタフェースモジュールの凝集度・結合度・インタフェース
モジュールの凝集度・結合度・インタフェース
 
第4部「Tddとペアプロのめざめ」
第4部「Tddとペアプロのめざめ」第4部「Tddとペアプロのめざめ」
第4部「Tddとペアプロのめざめ」
 
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
 
読みやすいプログラム、書き換えやすいプログラム
読みやすいプログラム、書き換えやすいプログラム読みやすいプログラム、書き換えやすいプログラム
読みやすいプログラム、書き換えやすいプログラム
 
JVMの中身を可視化してみた
JVMの中身を可視化してみたJVMの中身を可視化してみた
JVMの中身を可視化してみた
 
EWD 3トレーニングコース#9 複雑なewd-xpressメッセージと応答
EWD 3トレーニングコース#9 複雑なewd-xpressメッセージと応答EWD 3トレーニングコース#9 複雑なewd-xpressメッセージと応答
EWD 3トレーニングコース#9 複雑なewd-xpressメッセージと応答
 
次世代DaoフレームワークDoma
次世代DaoフレームワークDoma次世代DaoフレームワークDoma
次世代DaoフレームワークDoma
 
PHP+DB
PHP+DBPHP+DB
PHP+DB
 
Mobile programming seigyokoubun
Mobile programming seigyokoubunMobile programming seigyokoubun
Mobile programming seigyokoubun
 
できる!Pmdカスタマイズ
できる!Pmdカスタマイズできる!Pmdカスタマイズ
できる!Pmdカスタマイズ
 
負荷がたかいいんだから~♪(仮)
負荷がたかいいんだから~♪(仮)負荷がたかいいんだから~♪(仮)
負荷がたかいいんだから~♪(仮)
 
Codevs++++
Codevs++++Codevs++++
Codevs++++
 
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
 
フォントのホント
フォントのホントフォントのホント
フォントのホント
 
メタプログラミングってなに?
メタプログラミングってなに?メタプログラミングってなに?
メタプログラミングってなに?
 
使い捨て python コードの書き方
使い捨て python コードの書き方使い捨て python コードの書き方
使い捨て python コードの書き方
 
#027 tddのさわり
#027 tddのさわり#027 tddのさわり
#027 tddのさわり
 
設計してますか?
設計してますか?設計してますか?
設計してますか?
 

Viewers also liked

Fluentd勉強会 (導入編 TreasureData活用)
Fluentd勉強会 (導入編 TreasureData活用)Fluentd勉強会 (導入編 TreasureData活用)
Fluentd勉強会 (導入編 TreasureData活用)takeuchi-tk
 
仮想マシンとVagrant + Vagrant 1.5
仮想マシンとVagrant + Vagrant 1.5仮想マシンとVagrant + Vagrant 1.5
仮想マシンとVagrant + Vagrant 1.5Daisuke Kikuchi
 
Ipros techmeetup 20131218_scala_handson
Ipros techmeetup 20131218_scala_handsonIpros techmeetup 20131218_scala_handson
Ipros techmeetup 20131218_scala_handsonhonda-y
 
戦国時代を生きた「黒田官兵衛」とWeb時代を生きる「エンジニア」
戦国時代を生きた「黒田官兵衛」とWeb時代を生きる「エンジニア」戦国時代を生きた「黒田官兵衛」とWeb時代を生きる「エンジニア」
戦国時代を生きた「黒田官兵衛」とWeb時代を生きる「エンジニア」Junya Yamaguchi
 
インフラエンジニアLv1がWordPressまわりに色々してみた話
インフラエンジニアLv1がWordPressまわりに色々してみた話インフラエンジニアLv1がWordPressまわりに色々してみた話
インフラエンジニアLv1がWordPressまわりに色々してみた話Daisuke Kikuchi
 
CSS Nite LP38に行ってきた
CSS Nite LP38に行ってきたCSS Nite LP38に行ってきた
CSS Nite LP38に行ってきたYasuyuki Fujikawa
 
Hubotを使ってbotをつくろう!
Hubotを使ってbotをつくろう!Hubotを使ってbotをつくろう!
Hubotを使ってbotをつくろう!Daisuke Kikuchi
 
初心者Vimmerによるvim+rails開発
初心者Vimmerによるvim+rails開発初心者Vimmerによるvim+rails開発
初心者Vimmerによるvim+rails開発Daisuke Kikuchi
 
Vagrant勉強会アップロード用
Vagrant勉強会アップロード用Vagrant勉強会アップロード用
Vagrant勉強会アップロード用takeuchi-tk
 
Fluentd+elasticsearch+kibana(fluentd編)
Fluentd+elasticsearch+kibana(fluentd編)Fluentd+elasticsearch+kibana(fluentd編)
Fluentd+elasticsearch+kibana(fluentd編)Daisuke Kikuchi
 
Fluentdで本番環境を再現
Fluentdで本番環境を再現Fluentdで本番環境を再現
Fluentdで本番環境を再現Hiroshi Toyama
 
Markdownでドキュメント作成
Markdownでドキュメント作成Markdownでドキュメント作成
Markdownでドキュメント作成Yasuyuki Fujikawa
 
Presto As A Service - Treasure DataでのPresto運用事例
Presto As A Service - Treasure DataでのPresto運用事例Presto As A Service - Treasure DataでのPresto運用事例
Presto As A Service - Treasure DataでのPresto運用事例Taro L. Saito
 
Scala勉強会 初心者向けハンズオン前編
Scala勉強会 初心者向けハンズオン前編Scala勉強会 初心者向けハンズオン前編
Scala勉強会 初心者向けハンズオン前編takeuchi-tk
 
Re:dash Use Cases at iPROS
Re:dash Use Cases at iPROSRe:dash Use Cases at iPROS
Re:dash Use Cases at iPROSJumpei Yokota
 

Viewers also liked (20)

Vagrant
VagrantVagrant
Vagrant
 
Fluentd勉強会 (導入編 TreasureData活用)
Fluentd勉強会 (導入編 TreasureData活用)Fluentd勉強会 (導入編 TreasureData活用)
Fluentd勉強会 (導入編 TreasureData活用)
 
Fluentd
FluentdFluentd
Fluentd
 
仮想マシンとVagrant + Vagrant 1.5
仮想マシンとVagrant + Vagrant 1.5仮想マシンとVagrant + Vagrant 1.5
仮想マシンとVagrant + Vagrant 1.5
 
Ipros techmeetup 20131218_scala_handson
Ipros techmeetup 20131218_scala_handsonIpros techmeetup 20131218_scala_handson
Ipros techmeetup 20131218_scala_handson
 
Fluentd introduction at ipros
Fluentd introduction at iprosFluentd introduction at ipros
Fluentd introduction at ipros
 
戦国時代を生きた「黒田官兵衛」とWeb時代を生きる「エンジニア」
戦国時代を生きた「黒田官兵衛」とWeb時代を生きる「エンジニア」戦国時代を生きた「黒田官兵衛」とWeb時代を生きる「エンジニア」
戦国時代を生きた「黒田官兵衛」とWeb時代を生きる「エンジニア」
 
インフラエンジニアLv1がWordPressまわりに色々してみた話
インフラエンジニアLv1がWordPressまわりに色々してみた話インフラエンジニアLv1がWordPressまわりに色々してみた話
インフラエンジニアLv1がWordPressまわりに色々してみた話
 
CSS Nite LP38に行ってきた
CSS Nite LP38に行ってきたCSS Nite LP38に行ってきた
CSS Nite LP38に行ってきた
 
MBaaS - Parse
MBaaS - ParseMBaaS - Parse
MBaaS - Parse
 
Hubotを使ってbotをつくろう!
Hubotを使ってbotをつくろう!Hubotを使ってbotをつくろう!
Hubotを使ってbotをつくろう!
 
初心者Vimmerによるvim+rails開発
初心者Vimmerによるvim+rails開発初心者Vimmerによるvim+rails開発
初心者Vimmerによるvim+rails開発
 
Vagrant勉強会アップロード用
Vagrant勉強会アップロード用Vagrant勉強会アップロード用
Vagrant勉強会アップロード用
 
Fluentd+elasticsearch+kibana(fluentd編)
Fluentd+elasticsearch+kibana(fluentd編)Fluentd+elasticsearch+kibana(fluentd編)
Fluentd+elasticsearch+kibana(fluentd編)
 
Fluentdで本番環境を再現
Fluentdで本番環境を再現Fluentdで本番環境を再現
Fluentdで本番環境を再現
 
Enjoy the Ansible
Enjoy the AnsibleEnjoy the Ansible
Enjoy the Ansible
 
Markdownでドキュメント作成
Markdownでドキュメント作成Markdownでドキュメント作成
Markdownでドキュメント作成
 
Presto As A Service - Treasure DataでのPresto運用事例
Presto As A Service - Treasure DataでのPresto運用事例Presto As A Service - Treasure DataでのPresto運用事例
Presto As A Service - Treasure DataでのPresto運用事例
 
Scala勉強会 初心者向けハンズオン前編
Scala勉強会 初心者向けハンズオン前編Scala勉強会 初心者向けハンズオン前編
Scala勉強会 初心者向けハンズオン前編
 
Re:dash Use Cases at iPROS
Re:dash Use Cases at iPROSRe:dash Use Cases at iPROS
Re:dash Use Cases at iPROS
 

Similar to リーダブルコード 1.0'

20100324 勉強会資料(ドメイン駆動)
20100324 勉強会資料(ドメイン駆動)20100324 勉強会資料(ドメイン駆動)
20100324 勉強会資料(ドメイン駆動)Masayuki Kanou
 
Start!! Ruby
Start!! RubyStart!! Ruby
Start!! Rubymitim
 
可読性について リーダブルコード Part4(優れたテストコード1)
可読性について リーダブルコード Part4(優れたテストコード1)可読性について リーダブルコード Part4(優れたテストコード1)
可読性について リーダブルコード Part4(優れたテストコード1)tak
 
Code Reading at Security and Programming camp 2011
Code Reading at Security and Programming camp 2011 Code Reading at Security and Programming camp 2011
Code Reading at Security and Programming camp 2011 Hiro Yoshioka
 
Programming camp 2008, Codereading
Programming camp 2008, CodereadingProgramming camp 2008, Codereading
Programming camp 2008, CodereadingHiro Yoshioka
 
Programming camp code reading
Programming camp code readingProgramming camp code reading
Programming camp code readingHiro Yoshioka
 
リーダブルコード
リーダブルコードリーダブルコード
リーダブルコードGIG inc.
 
「いいコード」をみんなで書こう!
「いいコード」をみんなで書こう!「いいコード」をみんなで書こう!
「いいコード」をみんなで書こう!tq_ed
 
一人でも出来るコードリーディング
一人でも出来るコードリーディング一人でも出来るコードリーディング
一人でも出来るコードリーディングTaiyo Akashi
 
C・C++用のコードカバレッジツールを自作してみた話
C・C++用のコードカバレッジツールを自作してみた話C・C++用のコードカバレッジツールを自作してみた話
C・C++用のコードカバレッジツールを自作してみた話simotin13 Miyazaki
 
プログラミング勉強会 その0
プログラミング勉強会 その0プログラミング勉強会 その0
プログラミング勉強会 その0Hirokazu Fukami
 
大規模Perl初心者研修を支える技術
大規模Perl初心者研修を支える技術大規模Perl初心者研修を支える技術
大規模Perl初心者研修を支える技術Daisuke Tamada
 
Debug Hacks at Security and Programming camp 2011
Debug Hacks at Security and Programming camp 2011 Debug Hacks at Security and Programming camp 2011
Debug Hacks at Security and Programming camp 2011 Hiro Yoshioka
 
プログラミングNet framework3のお題
プログラミングNet framework3のお題プログラミングNet framework3のお題
プログラミングNet framework3のお題Kazushi Kamegawa
 
最近の単体テスト
最近の単体テスト最近の単体テスト
最近の単体テストKen Morishita
 
実践リーダブルコードのコードチェンジ
実践リーダブルコードのコードチェンジ実践リーダブルコードのコードチェンジ
実践リーダブルコードのコードチェンジKouhei Sutou
 
nseg第5回勉強会
nseg第5回勉強会nseg第5回勉強会
nseg第5回勉強会ko ty
 
Programming camp 2010 debug hacks
Programming camp 2010 debug hacksProgramming camp 2010 debug hacks
Programming camp 2010 debug hacksHiro Yoshioka
 

Similar to リーダブルコード 1.0' (20)

20100324 勉強会資料(ドメイン駆動)
20100324 勉強会資料(ドメイン駆動)20100324 勉強会資料(ドメイン駆動)
20100324 勉強会資料(ドメイン駆動)
 
Start!! Ruby
Start!! RubyStart!! Ruby
Start!! Ruby
 
可読性について リーダブルコード Part4(優れたテストコード1)
可読性について リーダブルコード Part4(優れたテストコード1)可読性について リーダブルコード Part4(優れたテストコード1)
可読性について リーダブルコード Part4(優れたテストコード1)
 
Code Reading at Security and Programming camp 2011
Code Reading at Security and Programming camp 2011 Code Reading at Security and Programming camp 2011
Code Reading at Security and Programming camp 2011
 
Programming camp 2008, Codereading
Programming camp 2008, CodereadingProgramming camp 2008, Codereading
Programming camp 2008, Codereading
 
Programming camp code reading
Programming camp code readingProgramming camp code reading
Programming camp code reading
 
リーダブルコード
リーダブルコードリーダブルコード
リーダブルコード
 
「いいコード」をみんなで書こう!
「いいコード」をみんなで書こう!「いいコード」をみんなで書こう!
「いいコード」をみんなで書こう!
 
一人でも出来るコードリーディング
一人でも出来るコードリーディング一人でも出来るコードリーディング
一人でも出来るコードリーディング
 
C・C++用のコードカバレッジツールを自作してみた話
C・C++用のコードカバレッジツールを自作してみた話C・C++用のコードカバレッジツールを自作してみた話
C・C++用のコードカバレッジツールを自作してみた話
 
プログラミング勉強会 その0
プログラミング勉強会 その0プログラミング勉強会 その0
プログラミング勉強会 その0
 
大規模Perl初心者研修を支える技術
大規模Perl初心者研修を支える技術大規模Perl初心者研修を支える技術
大規模Perl初心者研修を支える技術
 
Debug Hacks at Security and Programming camp 2011
Debug Hacks at Security and Programming camp 2011 Debug Hacks at Security and Programming camp 2011
Debug Hacks at Security and Programming camp 2011
 
プログラミングNet framework3のお題
プログラミングNet framework3のお題プログラミングNet framework3のお題
プログラミングNet framework3のお題
 
最近の単体テスト
最近の単体テスト最近の単体テスト
最近の単体テスト
 
Tokyo r38
Tokyo r38Tokyo r38
Tokyo r38
 
Tdd
TddTdd
Tdd
 
実践リーダブルコードのコードチェンジ
実践リーダブルコードのコードチェンジ実践リーダブルコードのコードチェンジ
実践リーダブルコードのコードチェンジ
 
nseg第5回勉強会
nseg第5回勉強会nseg第5回勉強会
nseg第5回勉強会
 
Programming camp 2010 debug hacks
Programming camp 2010 debug hacksProgramming camp 2010 debug hacks
Programming camp 2010 debug hacks
 

リーダブルコード 1.0'

Editor's Notes

  1. Resultは汎用的な名前で便利であるが、 全く情報がない、もう少し踏み込んで意味があるものにしていきましょう
  2. startSever()より、openPort() sec, min