まえがき
釣りみたいなタイトルで申し訳ないです
久しぶりにプログラミングして、インターンとかで頻繁にコードを書いている人にコードレビューしてもらいました。
めちゃめちゃ勉強になったのでその途中で気づいたことをまとめます。
「今回の僕が個人的に気づいたこと」というだけで、普遍性があるものではないかもしれません。
あくまで目安くらいに考えていただけるとありがたいです。
意見や感想などある方はコメントしていただきたく思います。
本編
久しぶりにプログラミングして、コードレビューしまくってもらいました。
大量のコメントをつけてもらったのですが、その修正案の中に共通するものがあることに気づきました。
それは、命名 です。
今回は特に 関数の命名 について書いていきます。
関数命名の大前提
-
関数には要素がある
-
主語
- この関数を扱う主体は誰か
-
述語
- この関数は何をするか
-
目的語
- この関数は何を扱うものか
-
主語
-
関数は主語か目的語のクラスに置く
- 置けなければ以下を確認する
- 関数に複数の要素を持たせていないか
- 他の変数や関数の配置が正しいか
- 置けなければ以下を確認する
-
クラス名以外の関数の要素を関数名に含ませる
- 述語と目的語が「○○の値を知る」「○○の状態を確認する」などなら「get」
- 述語と目的語が「○○の値を変える」「○○の状態を設定する」などなら「set」
- 述語と目的語が「○○かどうかを知る」などなら「is」で返り値はBoolean
- 他の関数と区別ができるように、修飾語もきちんと付ける
例
- 「Player」が「Card」を「Playする」関数
class Player{
fun playCard(): Card{
- 「Player」が「Playしているかどうか」を「知る」関数
class Player{
fun isPlaying(): Boolean{
まとめ
僕もプログラミングを始めた一昨年くらいまでは プログラムなんて動けばいい と思っていたのですが、実際に 後からコードが読めない事態に陥る ことが増えてからは、少し気をつけているつもりでした。
しかし、今回のコードレビューで原則がわかり、今度こそ読みやすいコードが書けるようになったのではないかなと思います。