とあるプロジェクトをフロントエンジニアとして手伝っていて、2500行程度のそびえ立つクソなJavaScriptの改修を頼まれていた。
git blame しただけで最低でも10人このJSファイルにコードを追加していることがわかった。最初のコミットは2010年の2月ごろだから。最初からいるエンジニアの人に話を聞いてみたらこのJSは20人近い人がいじっているらしい。
別に関わっている人数とかはどうでもいいんだけど、変数名が謎すぎたり、関数の名前と中身の挙動が合っていなかったり、まぁひどいコードで、それを半月ぐらいかけて、個人的な安心感を高めるためにも、最初はheadless testとかcapybaraでテストをもりもり書いて、カバレッジを高めて(期間的に100%にはできなかったけど、C0で70%ぐらい)からリファクタリングしていたら最終的にCoofeeScriptに変換して700行ぐらい(JSで1000行ぐらいかな)になる予定(追加開発があればまだ増えるかも)。消えた部分は使われていない関数とか無駄な処理とかコメントだったかな。
だいたいなんでこんなことになったかっていうと、経営者がアホな要求ばっかり今までドキュメントを用意していなかったりするからそびえ立つクソコードが生まれたという感じ。CoofeeScriptにしたのもある程度書式を固定したかったから。
同時にGithubのPRベースの開発も導入した。俺が入った時には他に3人のフロントエンジニアがいてその人達のコードを見ながらもやってた。その人たちはあんまりプログラマとしての能力が高くなかったのでPRベースでJSの基礎なんかを教えながらやってた。プロジェクトに入ってからは俺はずっとテストの環境を整備していて、今いるプロジェクトメンバーはまだテストをかける状態じゃないから、PR送られてきたらそのブランチに対してテストを追加したコミットをぶん投げるという感じで進めていた。
もちろん、PRだからJenkinsと連携してテストを走らせるようにしたらフロントエンドチーム、3人ともかなり安心感をもって開発をすることができましたとさ。俺はこのプロジェクトとは今月末でさよならだから、俺の仕事はドキュメント書いたりレビューをする文化を根付かせて終わりって感じかなー。
あと、JSのテストとかViewのテストの仕方3年前にくらべるとだいぶ情報が増えてきたし、フロントエンジニア〜な人達もテストに身を委ねてみるといいと思った。
CoofeeじゃなくてCoffeeな。 MacbookAirを小脇に抱えてスタバの看板を観察してみてくれ。
なんだろ、元増田はネットで調べた擁護を散りばめただけのくだらない釣りだと思うんだが、 「coofee」ってのは、どういう意図が。。。? わざとなんだろうか?でも、このわざとって意...