« Androidアプリの抜き打ち?コードレビュー | トップページ | 旧サイト閉鎖のお知らせ »

クソコード撲滅ワーク!

12月の定例会で、「クソコード撲滅ワーク!」を開催しました!

Pict2674
以前の定例会で、アーキテクトとして活動することも多い三文字さんから、顧客先での勉強会として「ソースコード・レビュー勉強会」が行われた事に関して書きましたが、
クソコードは本当に頭にくる!」ということから、クソコードのサンプルを共有して叩き合ってみようじゃないか!?、という事になりました(あ、言語はPHPを選びました)。

で、三文字さんがネット上から見付けたモノ、仕掛中の案件内で見たパターンを再現したモノ、これまでの経験上から書き起こしたモノなど、十数点のクソコードをプロジェクターで映しながら共有しました(写真と説明が同期していません。申し訳ないです.....が、どれがどんな問題を抱えているか?、宜しければ一緒に考えてみて下さい!、ツッコミどころ満載ですよ!)。

※本番のwarning出力をオフにするコード
 結局、終盤になって気が付き、Warningの山になり、対処に大わらわになった。

Pict2675
※arrayGetDuplicate

 配列の重複値を返すメソッドだが、ネットに落ちていたコードをそのままもってきていた。
 バグを含んでいたコードだったが、結果として呼ばれていなかった点もお粗末。
 教訓:ネットで版権問題の無いソースコードを拾ってくる場合も、理解してから使うのが大前提!

※変数の空文字チェックを行うメソッドをわざわざ作っているパターン

Pict2677
※)「祈る」:
"何かあったら下記まで連絡してください。" というコメントがあった。
 実際、三文字さんは記載の有った番号に連絡する羽目に至った。
 メソッドとコメントが合っていない例なども結構ある!

※コンストラクタに全ての処理が入っているパターン。
 オブジェクト指向をまるで理解していないんじゃないのか?

Pict2678
※switch文で、defaultが最初に書かれている
パターン。
 普通、defaultは最後でしょ?(ローカル事情も有るのかも知れませんが...)

※Userクラス内に定義された削除フラグの名前がおかしい

Pict2680
※do {

      処理
 } while(false)

 "break;"をしたいが為のコーディング。
 分からなくもないんですが、どうにかならんもんか?

Pict2683

※switch文が入れ子になっている
パターン。
 業務的に書きたくなる場合も有るかも知れないが、リファクタリングすべきところ。

Pict2682
※空文字を定義して、変数に定義した空文字で初期化している
場合。
 気持ちは分からなくもないが、直接、空文字を設定すればよいのでは?

※if分のtrueのケースに、処理が何も書かれていないケース。
 逆のロジックを書けば良いだろう!?、というケースですが、極レアな条件だけを除きたい場合などには、書きたくなる場合も有りますね。

Pict2684
※staticメソッドだけのクラス

 業務処理に近い層のクラスで、この実装は無いでしょう。

Pict2687
※添付ファイルだから、変数名が$temp_file!?

 ダジャレか?、いや書いた本人は真面目だから困るパターンです。

Pict2688
※メソッド名やクラス名に、個人名称とか、全く機能と関係の無い名称を付ける

 趣味のコーディングじゃないんだから...。

Pict2686Pict2681

更に、三文字さんから短時間でコーディング可能そうなお題が出されて、2014年新人の速形さんが、リアルタイムでコーディングに臨みました!

1メソッドの実装だけだったので、特に問題無く(先輩達からの厳しいツッコミもあまり無く)完了できました!

それにしても、リアルタイム・コーディングは面白いですね!

以前から、デモベースで勉強会(定例会の中で)を行う際に、コードを変更しながら動作の違いを見て行くようなパターンは有りましたが、やっぱり「コードが見える・変化していく」過程を見ること自体が面白いです。

書く人の暗黙知の一端を垣間見ることもできますし。

結構、刺激的でもあります!

皆で楽しめるのは、何よりですね!!


★クリック1つでブログランキングにご協力戴けます! m(_ _)m

|

« Androidアプリの抜き打ち?コードレビュー | トップページ | 旧サイト閉鎖のお知らせ »

定例会、勉強会など」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: クソコード撲滅ワーク!:

« Androidアプリの抜き打ち?コードレビュー | トップページ | 旧サイト閉鎖のお知らせ »