はじめに
エンジニアとして働き始めて早半年。ワオ!
3ヵ月目だったときのわたしに、超すごすご先輩エンジニアの方が「リーダブルコード」を読むだけで実装力変わるよ、と教えてくれたので、必死で読みました。
その時の学びを今更ながら記録しますう📝。
駆け出しエンジニアでも入りやすいポイントばかりですし、少し意識するだけで可読性増し増しぃ➚🔥 なので、よければ参考にしてみてください。
長めなので、少しずつ意識するのがおすすめです🙆♀️
命名
- **「具体的」な命名を**😕get... どこから取ってくるの?キャッシュ?db?
🙆🏻♀️FetchPage..インターネットから取ってくるとわかる!pageが付いてることで、「何を」取ってくるかまでわかる。
🗝ヒント
- 類義語を探していくとぴったりな言葉が見つかるかも!
- 変数名には大切な情報を入れると良い(time →time_msだったらミリ秒なことがわかる)
- 特殊やなつ(ファンバサダーとか)は、チーム全体で決めて認識揃えると良い
-
他の意味に誤解されないか確認してみる
名前を決める前に、反対意見を考えるなどして、他の人が自分のコードを読んだときに誤解されないか想像してみよう!
🗝ヒント
- 限界値 min-max
- 範囲の指定 first-last(その値も含んでいることが分かる)。begin-end(beginはその値を含み、endはその値を含んでいない。けど少し曖昧。けどこれがイディオムだから最善🤔)
- bool is,has,can,shouldをつけると良い。否定形よりも肯定系のものの方が良い(例:disable_ssl = false; → use_ssl = true;)
美しさ
- 改行でまとまり意識 - 同じ内容ごとに塊にして、改行とか。 - 同じことを何回もしているのなら、1つの関数にまとめる - 意味のある並び順(どの順番でも良いなら、重要順, アルファベット順にするとか。また、同じコード内では同じ順番にすべき) - 複数行で同じ内容のことをしているなら、シルエットを揃えるコメント内容
👆コメントの目的は、書き手の意図を読み手に知らせることコメントすべきこと
-
なぜそうしたかなどの自分の考え
-
コードの欠如(TODO:〜を使うとかで書く
-
他の人が後から見た時にハマりそうな罠に書く
-
コードの理解に役立つwhat(全体像、何をしているのか) how(どうやってるのか) why(なぜやったのか)
※ただし、コメントで補おうとせず常に綺麗なコードを意識
どうコメントすべきか
- 代名詞は避ける(×それ、これ。どれやねん
- 実例を書いてみる
- 情報密度の高い言葉を使って簡潔に(例:この情報はデータベースとここに保存する。このクラスを読み込むときにメンバが存在してたらそこから読み.....→このクラスは、データベースのキャッシュ層である
制御フローを読みやすくする
- if/elseの順番```jsx
if(a == b ){
//第一ケース。
//1,肯定系の条件を使う ▲ a!==b
//単純な方を先に書く →if/esleが同じ画面に表示されてわかりやすい
//目立つ条件を先に書く
} else {
}
```
-
三項演算子
- 基本はif/else 。それによって簡潔になるもののみ三項演算子。
-
早期リターンはウェルカム🌺
-
ネストは浅く
- 変更するときに、既存のコードに付け足しちゃえ〜は危険。そうやってネストしていく...一歩下がってみて全体をみよう!!!
- 失敗ケースを早めに返す、ネストが消える
-
要約変数・説明変数
-
式を変数に代入しておく
例 ▲ if(user_id === doucument.user_id) { ... } ↓ ◎ const user_owns_document = user_id === document.user_id if(user_owns_document){ .... } if(!user_owns_document){ .... }
※何でもかんでも変数はダメ。✖️一度しか使わないもの
-
-
反対を考えてみる
-
プライベートとグローバルの使い分け
- 基本プライベート、他でも使う時にグローバル(変に他で使われないように!!
-
書き換えれない変数
- letよりconstの方がベター
コードに思いを込める
- 誰もが分かるように書くべし!手順
1. コードの動作を簡単な言葉で同僚にもわかるように説明する
2. その説明の中で使ってるキーワードやフレーズに注目する
3. その説明に合わせてコードを書く!✌️
🗝ヒント
デバック時にもかなり役立つ!
ある大学で、生徒はデバッグに悩んだ時に、🧸に問題を声を出して説明する。それだけで解決策が見つかる!!(ラバーダッキング
短いコードを書くべし
- 必要な要件のみ任意のユーザーの緯度経度にたいして、最も高い店舗を検索する
↓
🙆🏻♀️テキサス州のユーザーに、テキサスにある最も高い店舗を検索する
テキサスで考えられるものだけに絞られた!
- たまにライブラリを15分読もう
知らなかった出来ることがでてきそう!