あしみの 日記

あした友達に話したいことを書いています

より良いコードを書くためのシンプルで実践的なテクニックまとめ

世界の美しい鳥

私はプログラマなんですよ。プログラミング未経験で、IT会社に就職しました。
新入社員研修でプログラミングを学んで、実務を3年ぐらいやりました。プログラミング楽しいね!

新規PJでコードをボロッカス言われた

このたび、新規開発のPJに参加したんですよ。そこでごりごりコード書いて、そのPJの上司にコードレビューしてもらったんですよ。そしたら私のコードをボロッカス言うんですよ。

「全然わからん」

「動けばいいと思ってるでしょ?」

「プロでしょ?」

「全然わからん」

「マジックナンバー使うな」

「このメソッド名あってない」

「全然わからん」

「変数流用するな」

「レビューする人の気持ちも考えてよ、考えてないでしょ?」

「全然わからん」

「全然わからん」

「全然わからん」

「全然わからん」

「全然わからん」

「全然わからん」

とかいうんですよ。悲しかったんですよ。

前のチームでのプログラミングは、システムの保守が主だったので、元々あるコードを触ってた。そのコードは非常に難解だった。難しいのを修正するには難しいコードを書くので、難しくてもよかった(というかそうするしかなかった)。レビューもお互い(レビュアー・レビュイー)に努力して理解しながら進める感じだった。マジックナンバーも元からいっぱいあったから1つ2つ増えようが問題なかった。

しかし、新規プロジェクトはそうはいかない。元の感覚でプログラミングしてたらだめだね。ぼろくそだね。「動けばいい」と少なからず思ってたし、レビューする人の気持ちあんまり考えてなかったし、マジックナンバーも「使うな」って言われたけど、使う事を許すハードルがあまりに低すぎたよ。

 

ということで以下を購入(電子書籍化はまだみたいですね、電子書籍が待ちどうしいです)。

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

  • 作者: Dustin Boswell,Trevor Foucher,須藤功平,角征典
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2012/06/23
  • Amazon.co.jpで詳細を見る
 

目からうろこでした!内容をかいつまんでまとめました。 

コードは理解しやすくなければいけない。そんな当たり前の事つまづいて。

鍵となる考え

コードは理解しやすくなければいけない。(2頁)

 そうだね!その通りだ!オナニーコーディングはいらねーんだ!研修でそんなこと習った気がしてたけど忘れてたよ。配属1年後にこの本読みたかったよ。研修中に言われてもピンとこないよ。

鍵となる考え

コードは他の人が最短時間で理解できるように書かなければいけない(3頁)

まったくその通りだ!そんな考えもうほとんどなかったよ!オナニーコーディングはいらねーんだ!前のチームではちょっとかっこよく書いてドヤ顔でレビュー受けてたよ!

「上司)これなに?」「僕)これはあれでこれであれなんですよ(どやぁ」「上司)へーすごいね、よく見つけたね」 とかいうくだりはいらねーんだよ!「上司)これなに?」とか言われる時点でだめなんだよ。「最短時間で理解できるように書かなければいけない」んだよ。

先輩の「if  (Value=1){~~}」をみて「1」とかだせーな「if (Boolean(Value)){~~}」がかっこいいだろ(どやぁ とか思ってる場合じゃねーんだ!Booleanでキャストしてたら0と1のどっちがTrueか迷うだろうが!書いた俺自信も0と1のどっちがTrueか自信なくなって何回かググってるよ!

奇を衒ってはいけない。ただただシンプル。

「このコードを見てビックリすることは何だろう? どんなふうに間違えて使う可能性があるだろう? 」と自分に問いかけるといい。(65頁)

 シンプルでいいんだよ。個性は要らないんだ。気づくのが遅かった。だれかにもう少し早く止めてほしかった。

鍵となる考え

「頭がいい」コードに気を付ける。あとで他の人がコードを読むときにわかりにくくなる。(103頁)

オナニーコーディングは要らないんだよ・・・

 定期的にすべてのAPIを読んで、標準ライブラリに慣れ親しんでおく(175頁)

辞書は「引く」ものではない。「嘗めるように読む」ものだ。ところでAPIってなんだっけ? 

どこで道を外してしまったのか

私、学生時代はプログラミング経験全くなくて、就職して研修してもらってプログラマが始まった。要するに素人なんですよ。応用情報は取ったけど「り りろんはしってる」状態。「コードは理解しやすくなければいけない」がなぜこんな蔑ろになってしまっていたんだ。当たり前だろこれ。ていうか最初の配属先が大きく影響してんだろうな。素人プログラマが何も分からず配属先で頑張ったら、そのチームの風土をもろに受けるよそりゃ。

そしてその風土に3年さらされた私は今、とんでもない所(新規PJ)に連れてこられてしまった。オナニーコーディングはもういらないんだ!新規なのに没個性だ。個性があって個性のないものを生み出すのだ。没個性だああああああ!あのコード書き直させてえええええええ!!!!そんな時間ないいいいいいい!!

高品質のコードを書くための書籍(218頁)

こいつらも近々読んでみたい。

CODE COMPLETE 第2版 上

CODE COMPLETE 第2版 下

リファクタリング―プログラムの体質改善テクニック (Object Technology Series)

プログラミング作法

達人プログラマー―システム開発の職人から名匠への道

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

と思ったけど高いか絶版かじゃねーか。なんで専門書はこんなに高いんだ。ターゲットが狭いからですね。

プログラミング経験0でプログラマなっちゃた人が実務経験1年後ぐらいに読むべき本

これです。

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

  • 作者: Dustin Boswell,Trevor Foucher,須藤功平,角征典
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2012/06/23
  • Amazon.co.jpで詳細を見る
 

新人研修で初心者に勉強用に配布するとなおよい(独学で突き進んでいた人にも効くきます)。でも、研修中読んでもぴんとこないかもね。やはり実務1年ぐらいで読むべき(私はそのときに読みたかった)、プログラミングのコツがスムーズに頭に入る。

オナニーコーディングはやめよう。

続きの記事です!!↓↓

「他の人が最短時間で理解できる」コードと「頭がいい」コードの両立が難しい。