開発者は仕事でnリーダブルなコードをn書けるのか?¶ ↑
: author
須藤功平
: institution
株式会社クリアコード
: content-source
Developer Migration 2013
: date
2013/03/02
: allotted-time
40m
: theme
clear-code
対象¶ ↑
開発者
リーダブルなコード?¶ ↑
プロパティ¶ ↑
: as_large_as_possible
false
例1: リーダブル?¶ ↑
# coderay ruby class Person def initialize @mutex = Mutex.new end def name=(name) @mutex.synchronize do @name = name end end end
例2: リーダブル?¶ ↑
# coderay ruby class Person def initialize @mutex = Mutex.new end def name=(name) synchronize do @name = name end end def synchronize @mutex.synchronize do yield end end end
参考¶ ↑
((‘tag:center’))Ruby コードの感想戦
* (('note:http://jp.rubyist.net/magazine/?0040-CodePostMortem'))
* (('note:http://jp.rubyist.net/magazine/?0041-CodePostMortem'))
ヒント¶ ↑
* コードはコンピューターが\n 実行するだけではない * 読む人がいる * コードは書いた人の意図を語る
リーダブルなコード¶ ↑
* わかりやすい(('note:(書いた人の意図が)'))
* 直しやすい
* 調べやすい
* 試しやすい
で?¶ ↑
リーダブルなnコードってnうれしいの?¶ ↑
開発者として¶ ↑
ストレスが減るn ((‘(1)’))
ストレス¶ ↑
なにしてるかn 全然わからないんだけど!
ストレス¶ ↑
なにしたいかn 全然わからないんだけど!
開発者として¶ ↑
楽しいn ((‘(2)’))
楽しい¶ ↑
すぐにn 対応できる
すぐに対応¶ ↑
* こういうのが欲しいんだけど
* あ、ちょっと待ってください。
* こんな感じですか?
* →そう!こういうの!
* →あぁ、こうなるのかぁ。\n
じゃあ、なしで!
すぐに対応¶ ↑
オレってばn スゲー感n ((‘note:kitaj.no-ip.com/tdiary/20040404.html#p05’))
オレってばスゲー感を¶ ↑
* 他の人のコードで、じゃなく * 自分たちのコードで!
作らないのがいい?¶ ↑
* 本当に必要?検討しましょう!
* 必要?本当に?本当に?
* 考えている間に試したら?
* コードを書かない事が目指す事?
* 必要ないものに時間をかけない事\n
じゃない?
コストが下がれば試せる¶ ↑
コストが下がる¶ ↑
* 実サーバー → 仮想マシン * すぐに追加できる * すぐに削除できる
試せる¶ ↑
* 実サーバー → 仮想マシン * どのくらいあらかじめ用意する? → * いつどうやって増減させる?
コードnだってn同じ¶ ↑
リーダブルなコードなら¶ ↑
素早くn 対応できる
素早い対応¶ ↑
# blockquote うわぁ!\n こんなに素早く対応して\nもらえるなんて!\n ありがとう!
素早くない対応¶ ↑
* このくらいで終わりそう * でも、なんかあったらイヤだなぁ * バッファで2倍かかることにしよう * 困ったらすぐ相談じゃダメ? * 全体でよくなるように進めないの?
信用¶ ↑
# blockquote いつも素早く対応してくれる人が時間がかかるっていうんだから大変なんだ ろう。
チームとして¶ ↑
誰でも直せる
誰でも直せる¶ ↑
* あるべき設計を維持できる * ((*×*))担当じゃないからわからない… * ((*×*))自分のところでなんとかするか… * 助け合える
誰でも直せる?¶ ↑
* 直せても直しちゃダメ? * エンバグしたら責任が… * できる人にだけ負荷がかかる? * できる人ほどツライ… * できない人の方が得?
開発者はn仕事でnリーダブルなnコードをn書けるのか?¶ ↑
ムリ?¶ ↑
プロパティ¶ ↑
: as_large_as_possible
false
コードレビュー¶ ↑
# blockquote リーダブルなコードにするためにコードレビューっていうのを導入したいけ ど他の人が読んでくれないからできない。
答え¶ ↑
# blockquote まず、\nあなたが読んでみませんか?
時間がない¶ ↑
# blockquote 自分は他の人のコードを読んでいる時間ないし…
答え¶ ↑
# blockquote 時間を決めて読んでみませんか? ペースがわかったらどうやって取り組んでいけばよいかアイディアが浮かぶ と思いますよ。
でも¶ ↑
# blockquote でも、でも、でも…
コミットへのnコメントサービス¶ ↑
# blockquote クリアコードは、よいコードを書くことを当たり前にするためには、まず 「みんながみんなのコードを読む」文化にすることからはじめるのがよいと 考えます。
((‘tag:center’))((‘note:www.clear-code.com/services/commit-comment.html’))
B2Dn((‘note:Business to Developer’))¶ ↑
なんで読むの?¶ ↑
* 読まないと\n 読みやすいコードは書けない * 読む人を想像しろなんてムリ * 自分が読む人になる
あなたが読む事を支援¶ ↑
* どうやって読むの? * よいところを学ぶ * 悪いところ探しではない! * どういうタイミングで? * pushとかcommitした後 * 一区切り付いているでしょ?
みんなが読む事を支援¶ ↑
* こうすると読みやすいですよ
* 読みにくいコードばかりだと\n
続けられない
* よいコードを見た!→\n
真似してコミット
* いいね!しているだけじゃない
* 行動しているからより本物
コミットコミュニケーション¶ ↑
* 他の人が何をしているかわかる * あの人はあそこらへん詳しそう * 相談してみよう * 他の人が困っていないかわかる * この1時間ひとつもコミットしていないけど大丈夫? * このコミットすごいごちゃごちゃしてるけど悩んでる?
毎日↓をコミット¶ ↑
* 今日どれくらい読めたか * 感覚で。70%とか。 * 今日印象に残ったコミット * メモリリーク直った! * 今日の一言感想 * 自分のコミットが真似されていた!
さいごに¶ ↑
* リーダブルなコードが大事そうな気がしましたか? * 仕事でリーダブルなコードを書けそうですか? * 支援があれば書けそうですか?
いや、でも…¶ ↑
# blockquote 自分の会社は横のつながりを推奨していないので…
答え¶ ↑
# blockquote オープンソースソフトウェアの開発に参加してみませんか? そこで体験してよかったら自分の言葉で説明できるはず。