Skip to content

Instantly share code, notes, and snippets.

@yoshio-kinoshita
Created March 8, 2012 01:36
Show Gist options
  • Save yoshio-kinoshita/1997883 to your computer and use it in GitHub Desktop.
Save yoshio-kinoshita/1997883 to your computer and use it in GitHub Desktop.
ネタ
■「割れた窓を放置しない」を心がけるとすごく良いと思う。
割れた窓を放置したビルはすぐスラム化する。
これはどっかの国で行われた実験結果らしいです。
人間、綺麗なところを汚すことには抵抗がありますが、汚れている場所はとことん汚してしまうらしいです。
同じことがシステム開発にも言えると思います。
「ちょっと汚いけどまぁいいか。」
を繰り返しているうちに
「汚いけど、まぁいいか。」 => 「ぐちゃぐちゃだけど、まぁいいか。」
とどんどん汚し、最終的にすごく汚い(直交性ゼロ、高結合度、No DRY、コメントとソース乖離しまくり、メンテ不可能)システムが出来あがります。
じゃあ、どうしたら「割れた窓」を生み出さない開発ができるのか。
色々試した結果
・辛いけどDRY順守
・テストコードを書く
がすごく効果あると思います。
・DRY
DRY順守すると必然的にプログラムをできる限り「短く」書くことが求められます。
つまりコード量が減ります。バグが減ります。修正も減ります。
「まぁ、同じような処理だけど、ちょっと違うからコピペ&ちょろっと修正でいいか。」
を我慢して頭を使ってDRYです。結構、大変ですが・・・
・テストコード
テストコードを書くことで、直行しているプログラムになります。
なので、修正が入っても修正ポイント以外の影響はありません。
当然、使いづらいインタフェースを発見し、すぐにリファクタリングします。
「っち。使いづらいIFだな。おい!これ作ったの誰よ?ん?俺か。。。」
自分が作ったプログラムの使いづらさに心が折れそうになりますが、こういうためのテストコードです。
これを繰り返せば、
リファクタリング時、ついついリファクタ以外のこと(機能追加とか)したくなりますが、痛い目を見るのでやめたほうがいいです。
・DRY
・テストコード
で1つ1つのプログラムの品質が格段にあがります。結果、システムの品質も上がります。
ただ、はじめはすごく時間がかかります。
ポイントはプログラムとテストコードを同時進行すること。
プログラム作りきってからテストコード書くと大変です。心が折れます。楽しくないです。
プログラムちょっと書いたらテストも更新。
慣れてしまえば、テンポよく開発ができると思います。
--
■クライマー返しのジャミングについて
クライマー返しのジャミングの決め方を教えてもらいました。
俺はまだ登れてませんが、コツは掴みました。
せっかくなので、共有します。
決まる箇所は
・小指
・人差し指
の2ヶ所
スタートの穴に小さな突起が2ヶ所あります。
1つは下。もう一つは左側です。
下の突起に小指、薬指、中指の3本を添えます。
その状態で拳を左にひねり、左側にある突起に人差し指を引っ掛けます。
その状態でもある程度決まり、小指に結構な痛みを感じます。
そこから親指を手の中に突っ込んで拳を固めます。
すごく痛いです。痛くなかったら決まってません。
脇を締め、拳を真下に引くとがっつり決まります。
左足を上げ、じわじわと体を上げます。
もう泣きそうなぐらい痛いです。
俺はまだ痛みに慣れず、痛みで脇が開いてしまい、だんだん拳が出てきてしまいます。
ジャミングをやりすぎると翌日、小指が1.5倍ぐらい腫れます。
登れたら報告します。
・城ヶ崎でモンスターマンに弾かれたけど、山椒魚は登れた。
御岳行こうと思っていたけど、雪降ったので城ヶ崎。
宮尾さん、ナベさん、ヨッシー、俺の4人。
6時30に笹塚集合して出発。
熱海周辺から小雨・・・
伊東で雨・・・
このまま富戸まで移動しても暇しそうなので、伊東で朝マック。
10時過ぎに雨があがり、富戸へ移動。
前回同様、フナムシロック=>ジャクソンな流れ。
すでに西日暮里の方々がいらっしゃり、モンスターママ3段を狙っておられました。
僕はモンスターマン2段狙い。
が、結局跳ね返される。
やっぱりむずい。。。
パートパートはできても繋げると一気にヨレて保持できなくなります。
うーん。今日も諦めよう。
ジャクソンへ移動。
前回、山椒魚をトライしアホみたいな所で落ちたのでリベンジ。
なんとか2手目を保持し、そのままトップアウト。
成果出せて良かった。
馬の魂をちゃんと登ってなかったので、ヨッシーとムーブを探りました。
結構悪い。。。
足上げが辛い・・・。お尻筋がツリましたが、なんとかトップアウト。
むずいぜ。
最後に宮尾さん課題にトライ。
富戸の冬より道路側のフェースラインを直上。
すごく悪い・・・
宿題。
体が終わったので、ケルン作って福島側に向かって黙祷。
今日、楽しく遊べたことにすごく感謝。
途中、海老名PAでステーキ食べました。
とてもうまかったよ。それにしても海老名はすごく混んでいた・・・
おみやげは海老名限定のレアチーズケーキ。
すごく美味しかった!
モンスターマン登れないからしばらく修行しなおさないとーー。
・vimとemacsを車で例えてみると
vimを使うか、emacsを使うか。。。
ここ最近、悩んでおります。
悩んでいる人、いますか?
1つのエディタを極めた方が良いという意見があります。
しかし、色々な環境を触ってみたいという欲求もあります。
じゃあ、今の俺のどちらが必要なのか?
色々考えた結果、車で例えたら答えが出ました。
vimを車で例えるとスポーツカー。
1つのこと(エディット能力)に特化しています。
emacsはsuv(ランドクルザーとか)
何でもできます。スポーツカーじゃ行けないところや荷物もたくさん詰めます。
ある程度スピードも出ます。
どちらも共通して言えることは、普通の車より扱うのがすごく大変。
ですが、慣れればすごく良いということ。
また、個人的に改造もできます。モンスターマシンを自分で作れます。
個人的にはsuvがタイプです。
が、現在の環境を考慮すると、suvは不要。俺にはスポーツカーが必要です。
なので、仕事ではvimを使います。
趣味ではemacsを使おうと思います。
・DRY力をつける方法
DRY力付けたいけどいまいちわからん。
という時に効果がありそうなこと。
別のプログラミング言語を触ってみる。
OOPやっているなら関数型プログラミング言語(Haskellとか?)や並行処理思考プログラミング言語(Erlangとか?)いいと思います。
違う言語、違う環境を知ることで今まで思いもつかなかった考えや処理方法がひらめくらしいです。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment