p_chinのおっぱいブログ

UnityとPerlなど

perlでメソッドや関数を作る時に気をつけたい事のメモ

最近一つの機能をガーッと実装して、気付いたら分かりにくいコードを量産してたので、下記に今後から気をつけたい事をメモる


 

そもそも関数にする理由

  • 関数名の先頭にアンダースコアを付けて外部クラスから呼ばれたくないアピールできる
  • 複雑な処理をする場合は分ける。そしたらその関数だけ単体テストが書ける

 

関数を作る時の注意

  • DB操作するメソッドは関数にしないでResultSetやRowに実装したが方が良い
  • 関数にするのは処理の一塊のみで、Utilityの様な、1つ以上の処理から呼ばれる場合に作った方が良い

 

メソッドを作るときに気をつけた方が良い事

  • 引数が3つを超える、もしくはメソッド名と引数の相性が悪く、わかりにくい場合は引数をhashにしてhashのkeyで引数の意味を教えてあげて分かりやすくしよう
  • メソッド内の処理をまた他のメソッドに分割するのは良いが、その本来の目的はコードの可読性を向上させる為なので、読みにくくなりそうなら分けない判断も大事

 

DB操作するメソッドの引数にplayer_idを指定しない方が良い理由

player_idがメソッドで必要な場合でも, PlayerテーブルのRowオブジェクトなりを渡した方が良い。理由が2つある

  • idは数字なので外部から適当に数字を入力しても動いてしまう可能性がある
  • PlayerのRowオブジェクトを渡してれば、そのidがに確実にDB内にある事を保証してくれる

 

英語的におかしくないか調べる

適切なオブジェクトに処理を持たせる

  • He make me happy.「彼を幸せにする」メソッドを作りたいなら、$he->make($me, $happy);とかなら、heがmeを幸せにするメソッドなんだなって分かる
  • オブジェクト=S, メソッド名=V, 引数=O or Cみたいな感じ
  • まず書きたい処理があったら、どのオブジェクトに持たせるのかを一旦考え直した方が良い

 

まとめ

UnityのC#書く時も気をつけようと思った