ITの隊長のブログ

ITの隊長のブログです。Rubyを使って仕事しています。最近も色々やっているお(^ω^ = ^ω^)

初心者考察。仕様通りのプログラムってどうだろう?

スポンサードリンク

photo by racheocity

最近ブログのネタが溜まりつつある。。。。。

インプットはすげーたくさんしていますが、アウトプットがうまくできていないですー^q^

今日はブログ書く日にしようかなと思います。

さて、昨日の仕事っぷりをメモしようと思いますが、いやー。まだまだですね。プログラムを組む速度が全然遅い。

いろいろ集中が切れるのが一番の原因かな。もっとのめり込むようになりたいです。

んで、今仕事で触っているプログラムは以前外注して作られたものです。そのプロジェクトの追加仕様(ほとんどバージョンアップですけど)の対応を俺が任されています。

コードをみて改修していますが、その際に思ったことをメモしようかなと。

「仕様通り」過ぎると、改修が大変

今回のプログラムは仕様通りに組まれていました。それはもうさすがってレベル。100点だと思いました。

しかし、改修を対応しようとしたとき、使いまわせるコードがほとんどなかった。。。

これには困りました。ほぼ作り直しです。

仕様が変わった。っていうのもあるでしょうが、「ここをこうしていたら使いまわせたのになー」とか「Modelに処理持っていけば見やすいのになー」とか改善できそうなところは見受けられます。

何より、ひとつのメソッドのコードが長い。

なんだろ。。。なんとか安定しているつみ木をジェンガみたいに抜き取ろうとすると、部分や全体が崩れちゃうイメージ。

そんな光景目の当たりにして、「じゃ、これ改修してね?」とか言われると「どうしてこんな風につくったんだよ。。。」ってなりますよね。今回そんな感じ。

仕事だからイライラしているだけで、悪い人は誰もいません。が、吐きどころがわからない不満は募るばかり。

どうしてこうなった。

 ___
/ || ̄ ̄|| ∧_∧
|.....||__|| (     )  どうしてこうなった・・・
| ̄ ̄\三⊂/ ̄ ̄ ̄/
|    | ( ./     /
 ___
/ || ̄ ̄|| ∧_∧
|.....||__|| ( ^ω^ )  どうしてこうなった!?
| ̄ ̄\三⊂/ ̄ ̄ ̄/
|    | ( ./     /

 ___ ♪ ∧__,∧.∩
/ || ̄ ̄|| r( ^ω^ )ノ  どうしてこうなった!
|.....||__|| └‐、   レ´`ヽ   どうしてこうなった!
| ̄ ̄\三  / ̄ ̄ ̄/ノ´` ♪
|    | ( ./     /

 ___        ♪  ∩∧__,∧
/ || ̄ ̄||         _ ヽ( ^ω^ )7  どうしてこうなった!
|.....||__||         /`ヽJ   ,‐┘   どうしてこうなった! 
| ̄ ̄\三  / ̄ ̄ ̄/  ´`ヽ、_  ノ    
|    | ( ./     /      `) ) ♪

改善の案

今、考えられる(実践しているけどね)ことを上げます。まぁよく本のチュートリアルに載るので参考にもならないかも。

メソッドは短く

これ。すげー助かります。読みやすいです。

ただ、長くてもコードは読めますが、修正がしづらいです。なんていうかな。。。小さく組んでもらうと影響範囲も小さくなるっていうのかな?

例えば、コードの修正後、長いコードはそれに記述されている全体を確認しなければならないので、テストだったり確認が大変ですが、短いコードだとそれが小さくなります。すげー楽ちんです。

同じ処理はまとめちゃう

今更かよ!って思うかもしれませんが、意外に守られていません。みんなやっぱり忙しいのかな。

プログラマの人は同じ処理をまとめて、メソッド、または関数にして使い回すってことができます。別にやらなくても動くソフトウェアは作れますが、品質だったり、コードを見やすくするためには共通の項を探してまとめるというテクニックは必要だと思います。

「そこ!頑張ってループしないで、もういっそClassにしちゃったら。他のControllerでもこの処理使っているでしょ?」などいろいろ突っ込みたいところが今回ありました。MVCフレームワークだからっつーのもありそうですが。

雑なまとめ

当たり前すぎて、なんでまとめたの?って感じです。まとめた感もないですが。

とりあえずは初心に戻って意識していこうかなと思います。

また、タイトルにもあるように、これは初心者の考察であって、正解ではありません。「ムッ」って思った方はぜひ意見を聞かせてください!参考にさせてください。

ただ今のレベルの俺でも、組みづらいと思ったってことはやっぱ他の人も大変じゃないかなと思うかな。多分。あんまり自信はないけど。

俺もよく長々とメソッドを書いてしまう時もあるので、意識して小さくしていこうと思う。

あと前見た記事。

gigazine.net

Googleすげぇ!(°ω°;