Help us understand the problem. What is going on with this article?

もし2年前の自分にコードを書く時のアドバイスするとしたら

More than 1 year has passed since last update.

こんにちは。リブセンスでエンジニアをしているfkm_yです。

もし2年前にWeb業界へ入ったばかりの自分へコードを書くときのアドバイスをするとしたら…要領の悪い私へ最低限これくらいは指摘受ける前に出来ててほしいなと思うことを書いてみました。

メソッドの役割は1つにしよう

例えば1つのメソッド内で作成と削除など複数の役割を与えると複雑になってしまいます。複雑になってしまうと変更がしにくく、再利用もしにくいコードとなってしまいます。また何の役割のメソッドなのか定義するのも難しくなってしまいます。

変数やメソッドには正しい名前を付けよう

極端ですがupdate_xxxと書いてあるのに削除されているととても読みにくいです。名前の通りの処理になっていれば読みやすく、機能の拡張やバグ修正がとてもしやすいです。

YAGNIを意識しよう

YAGNIは"You ain't gonna need it"の略で「必要になってから作る」的な意味です。
よくシステムを作っている将来的にはこういう機能も必要になるかもしれないと推測で機能を作ろうとすることがありますが、そもそも使われない可能性もありますしコードの複雑度が上がってしまいます。必要になるかもと推測で作る機能よりも今必要な機能のクオリティを上げるようにしましょう。

N+1問題に気をつけよう

N+1問題とは1(親テーブル)+N(子テーブル)件のクエリが発行されてしまい、パフォーマンスを著しく落としてしまう問題です。クエリの発行回数を抑えるには事前にデータをロードしておけば対応することも出来ます。
慣れるまでは発行されるクエリのlogを視て確認するか、bulletgemを使ってN+1を検知するようにしましょう。

例外を意識しよう

接続エラーやnullなどの不正な値が送られてくるケースを考慮しよう。
コードを書いてる時には正しいデータを想定しがちだけど、思いの外おかしなデータが渡されてきます。
その際におかしな挙動をさせないためにも例外処理を書いて場合によってはシステムを止めるようにしよう。不正な値でシステムを正常終了させて不正な結果を返しても良いことはありません。
また例外発生時のメッセージは具体的に書き、エラー発見者がアクションできる情報を書きましょう。「例外が発生しました」だけとかは本当に止めましょう。原因調査、影響調査に時間が掛かってしまいます。

公式ドキュメントを読もう

ついついその場しのぎのハウツー記事を読んでしまいがちですが、公式ドキュメントを読みましょう。ハウツー系の記事は情報が古いなどで正しくない可能性もあります。必死になって探していた情報が公式情報に記載されていたなんてこともあるので公式ドキュメントを読むようにしましょう。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away