開発や修正の業務を丸2年くらい経験しました。
パーフェクトPHPなどの手堅い入門書は一通り目を通したことがありました。
しかし、レビューとテストコードが無く、動けばよかろうの現場で作業をこなし、
また、コードを磨く意思がありませんでした。
そこから、テストコード、レビューがある世界に行き、
2ヵ月くらいで出来る様になった事の一覧です。
将来的に指導する立場になったら、
初心者はどんな壁に当たっているだろうかと思い出すためにも、
残しておきます。
出来ていなかった事一覧
最低限のお作法
- コードフォーマットすること
- viewにフォーマッタはかけない
- テストが動く状態であること
- アクセス修飾子の確認
-
PSR-2 コーディングガイド(日本語) に従うこと
- スネーク,キャメル
- コメント
- 処理・変数の説明
- パラメータ、返却値の説明や型
- phpで戻りが無い場合は
@return void
- TRUE/FALSEは小文字
- フルパスを使用していない事
- typoしていない(これは今でもある)
アルゴリズム
- いずれかの条件に一致の場合、1つの条件に一致したらすぐに返す
- なるべく早くreturn
- 異常返しパターン、正常返しパターンを読む量が少なくなる様に使い分ける
- 関数の中で落とすか、returnしてから落とすかを統一する
- 統一されていれば、好みで決めて良い
- 中間変数が無い方が良い場合は削除
- メンバ変数にするものとローカル変数にするものを意識(変数のスコープを小さく)
テスト・デバッグ関連
- テストケースを考えてエラー文言を作成する
- テスト項目を考えてから、関数の単位を作る
- テストがしやすい関数を心がける
ネーミング
- 関数は基本 動詞 + 名詞 の順でネーミング
- 処理内容が伝わる言葉を用いているか
- getは簡単な取得処理のみ
- 取得処理が重い(作る)場合は別の言葉
- make,calculate,generate
- 実装をイメージさせるネーミングは使用しない
- ハンガリアン記法 とかが典型
- 業務要求を中心にネーミングする
- 否定のネーミングを使って分かりにくくしていないか
- 長過ぎる変数名を避ける
- 困ったらcodic
リファクタリング時の習慣
- 修正する際にはコメントを含めてリファクタリングする
- テストコードの修正も忘れない
- 修正前の名前が残っていないか再検索