エンジニア歴2年目を迎え、ソースレビューをするようになってきて、良いコード・悪いコードって往々にしあるなと実感。
4月から新卒エンジニアになった人の中には、先輩のコードはきれいなのに、自分のはなんか汚いでも、なんでかを言語化できない人って多い思う。そんな人へのヒントになればなぁ
概要
この記事では、良いコードと悪いコードを見比べてなぜ悪いのか、どこが悪いのかを自分の実体験を交えながら説明出来たらなと思います。
そもそも、会社でプログラムを書く以上はチーム戦です。
複数人で開発をするので、自分一人だけ読めるコードはもってのほか。だから、会社ごとにルールは違えど、コーディング規約(ルール)が存在しています。
規約は守っているけど、なんでか汚いコードを書く人って結構います
そんな人やコードを助けていきたい!!
良いコードの目的
上記でも挙げたコーディング規約を守ってたら何してもいいんじゃないと感じる人はいるかも(管理人も1年前は同じ風に考えてました笑)知れません。
でも、規約を守って尚且つ良いコードにすることでかなりのメリットを受けられます
- 生産性を上げれて、メンテナンス工数を減らせれる
- バグの温床を事前につぶせる
- ほかの人が読んでも読みやすい
などです。
これらのメリットを受けられるとかなり効率的な仕事ができます。
だからこそ、意識して良いコードを書いてほしいです。
でも、良いコードってそんなに難しいものでもないと思っています。
簡単なところから良いコードにできますので、やってみてください!!
良いコード・悪いコード
変数名や関数名をわかりやすく
【悪いコード】
// ユーザ名を取得して、$strに格納する
$str = $this->getName();
// ユーザからの入力のバリエーションチェック関数
public function cheack() {
// チェック機能
}
どうでしょうか、こういう命名をしていた人って結構多いと思います。
命名をするときに気を付けてほしいのですが、
そのコードを見ただけで何が入っているのか、どうな機能になっているのかが分かることが重要です。
【良いコード】
// ユーザ名を取得して格納する
$usrName = $this->getName();
// ユーザIDを取得して格納する
$userId = $this->getId();
name, Idだけでも大丈夫ですが、何の情報かを表現することを忘れたらダメです。
この行を見るだけで、何のどの情報が入っているかわかるようになります。
1つの関数やクラスで数百~数千行に及ぶソースも存在します。(見るのも嫌になるけど)
そんなときに、変数名だけ読めば何が入っているのか分かるのが重要です。
// ユーザからの入力のバリエーションチェック関数
public function checkForInputData() {
// チェック機能
}
関数名も変数と同じです。
どんな処理をするのかを表現することです。
これも数百行に及ぶコードの中で、呼び出されてもすぐにどんな処理なのかを理解できる関数名にすることが重要です。
適切なタイミングで適切な言葉でコメントを書く
コメントについてはプログラマーで3パターンに分かれると思います
- そもそも書かない派
- 1行1行すべてにコメントを書く派
- 書くけど理解が難しそうなところにだけ書く派
この3派閥であなたはどれでしょうか。
そもそも書かない派
これは、本当になしです。概要でも話しましたが、会社での開発はチーム戦です。
ほかの人のことも考えてほしいです。
でも、時々います。
10年くらいエンジニアしている人の中にも書かない人が居てビビりました。
なぜ書かないのか聞いたら、
後で書く、そもそもいらない、自分以外みないなど言っており、
「???」となりました。(何も言いませんが。)
1行1行すべてにコメントを書く派
これは、新人や何も考えていない人にありがちです。
1行1行あると、本当に必要なコメントが見にくくなります。
時々あるのがこれ
// 変数に代入
$item = 100;
// 加算
$item += 1;
書きたくなることは、わからんでもないけど、コメントの意味を少し考えてほしい。
コメント=人が見て分かりやすくする
コメント≠何をやっているのか遂次書く
悪くないし、心がけは大変良い。
だから、次のステップへ行ってほしい!!
書くけど理解が難しそうなところにだけ書く派
この派閥が一番いい。
上記でも書いた通り、
コメントは、人が見て分かりやすくすること
だから、1行1行書いていたら、本当にコードで分かってほしいところが分からない。
それって、コード上の重要なところを示せていないことになります。
具体的に言うと、
$arr = [1, 2, 3, 4];
// 各要素を2倍にする
foreach ($arr as &$value) {
$value = $value * 2;
}
これだけでいいんです。
重要なところだと思うところだけ、コメントを書くことで、
ほかの人が分かりやすくなります!
まとめ
いかがだったでしょうか。
命名やコメントなど当たり前のように思ってもできてない人結構います。
これらって結局ほかの人(いつか見返す自分も含めて)が読みやすくなるために心がけることなんですね。
人が見て分かりやすいコードを書くって心がけるだけでかなり良いコードになります。
思いやりを持ってコードを書けるようになりましょう!!
コメント