#はじめに
PHP Advent Calender 14日目の記事です。
こちらの経験談で書いたコーディングの部分で実際の現場のコードを見て感じたことについてまとめた記事になります。
若干思い出しながらになりますが最後までお付き合いいただけると幸いです。
###①複数クラスの同じ処理の共通化をし忘れる
これは、この現場だけじゃなくていろんな現場でやらかします。
修正前
class A
{
処理A(処理B,Cと共通する部分あり)
}
class B
{
処理B(処理A,Cと共通する部分あり)
}
class C
{
処理C(処理A,Bと共通する部分あり)
}
修正後
class ABC {
処理D
}
class A extends ABC
{
処理A
}
class B extends ABC
{
処理B
}
class C extends ABC
{
処理C
}
このように共通処理をクラスABCにまとめてそれを継承するといった形の方が可読性も良くなりますし、今後も共通化する部分のコーディングは行わなくて良くなるのできっと分かりやすい!
→いわゆるオブジェクト指向ですね。。。
###②クラス名や変数名がイケてない
これも結構あるあるですよね。。。
class ContainerCreationModelBean
{
処理
}
これは自分がっていうより前任者がこんな感じで書いてたんですけど〇〇BeanってJavaで出てくるJavaBeansやんけって見た瞬間突っ込んでしまった。。。
まあ多分もともとJava書いてた人なんでしょうね・・・
とはいえこれもJavaBeansの仕様を理解してない人からすると意味分からないですよね・・・
###③HTMLにPHP埋め込み
もはや害悪ですよね。。。
本当はPHPとHTMLを分けて書きたかったんですけど、これはもう規模も膨大だったので諦めて自分もそれに習って埋め込んじゃいました。。。
例
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<title>AAA</title>
</head>
<body>
<h1><?php echo "BBB"; ?></h1>
</body>
</html>
###④コントローラーの肥大化
参考資料
やはりお前らのMVCは間違っている
「コントローラーがコントロールするのはアプリケーションの処理ではない。
ユーザーの操作に基づきモデルをコントロールするのが仕事。」
グサッと刺さりますね。
結構ここを間違えて捉えてコントローラーにアプリケーションの処理のコントロールを全てやらせようとしちゃうんですよね・・・
コントローラーが便利すぎてコントローラー任せになっちゃってて役割が崩壊してちゃったなぁ・・・
###⑤ノーテストコード
これはまあなんとなく分かってたことではあったんですけどテストコードと呼ばれるものはなかったですね。
一応バッチ処理は一部あったのかな。。。
実際、テストは画面遷移をエクセルに画面スクショでエビデンス残すっていう形ですごく効率悪かったですね。。。
できればテスト用のコードも導入したかったんですけどね・・・
#終わりに
5つ事例を紹介しました!
やっぱコーディングしてて思ったのはオブジェクト指向大事だよなぁって思いました。
まだ自分の書くソースコードは、なんちゃってオブジェクト指向なのでちゃんとオブジェクト指向を意識したコーディングができるようになりたいと思います。