7
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

コーディング初心者に伝えたい、きれいなコードを書くためのたった7つのこと

Posted at

今や自己啓発本の代名詞とも言えるフレーズをタイトルにしてみました。最近はもっぱら自虐的に「・・・たった212のこと」みたいなものありますが、私のは本当にたった7つですw

基本

~まず押さえてほしい~

  1. 変数等の名前を適切につける

    • きれいなコードは文章を読むように読めないといけません
    • 必ず英語で書いてください
  2. 安易にコピーしない

    • コードをきれいにするポイントは、重複を減らすことと細かく分けること(後述)に尽きます
    • 重複を減らすことの究極はイテレーションです
  3. データ類とその処理を1カ所にまとめる

    • これができていると、集団開発的・運用的に非常にやりやすくなります

メソッド設計

~綺麗なコードはメソッド設計が上手~

  1. 長過ぎる処理は適度に分割する

    • 細かく分けることは読みやすくするだけでなく、コピーコードを減らすことにもつながる
    • 使い回し可能な部品を増やすことになるから
    • 様々な粒度で機能ごとに分割すれば、使いやすくなります
    • 処理とフローを分離するのも大切 (フローは処理を制御構文を使って組み立てたものです)
  2. 関連のある処理はまとめて書く

    • メソッドを細かく分けると、メソッド数は必然と増えるので、どこに何が書いてあるか整理されてないと全容を把握できません
    • 収納用の箱をたくさん用意したけど、中に入っているものはバラバラというような状態ですね
    • モデルに関することはモデルに描く、メソッドの順番も関連しているものは並べて書くとか、基本的なとこです
  3. 例外的な処理はガード節を使い、早々にreturnする

    • メソッド処理内容の理解を早くする上での重要なテクニックです

テスト

~限られた時間を貴重にするために~

  1. 重要な箇所を重点的にテストする
    • どんな慎重にコーディングしたって本番前に基本的なテストを抜くことはありえません
    • ただ、限られた時間の中では、ここだけは絶対にバグってはいけない、という重要な点を優先するようにしましょう

蛇足

  • なお、誤解を恐れずに書きますが、「綺麗なコードをキープすること」は「バグを回避する」ことと短期的にはイコールではありません!
  • 最善のコードというのは、ソフトウェアの規模・フェーズ・目的によって異なります
    • 人間も年齢を重ねるに応じた綺麗さってありますよね
  • 故に「綺麗なコードをキープする」ためには、絶え間ないリファクタリングが必要なのですが、リファクタリングを行うことは、コードコピーを行うよりも短期的にはバグを生むリスクが高いです
  • コードを綺麗にしようとした結果、最悪サービス一時停止などのユーザファーストでない状況に陥った経験、私以外にもきっとありますよね...?
  • 状況にもよりますが、それでも私はリファクタリングを行うことをお勧めしたいです。エンジニアとしての成長にもつながるし、何よりも私自身がそのような細かい努力を怠ったコードを多数向き合ってきたからです。あのような地獄は後に続くものに味わってほしくない・・・っw
  • リファクタリングが多い、心身代謝の多いコードは生きています!これからも成長するバイタリズムに溢れているんです!
7
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?