---
# System prepended metadata

title: リーダブルコード輪読会 第9章

---

リーダブルコード輪読会 第9章
===


# ディスカッションをより豊かにするためのグランドルール

- 参加者は毎回任意
    - 途中参加・聞くだけでもOK！

- ページ数と同時に、節のタイトルやキーワードを記入してもらえると探す手間を省けて嬉しいです

- ファシリテーターや話している人は集中しがちなので、話していない人に議論内容をメモ:pencil:してもらえると嬉しいです 

- 気になる質問や同感するものには :+1: を末尾につけてください。

- 社外秘情報は書かないこと!!!
    - オープン設定で誰でも見れてしまうので


# タイムテーブル


| 時間 | 所要時間 | 内容 |備考 |
| --------  | -------- | -------- | -------- |
| 15:00  | 5-10分?   | (書いてなければ)感想記入&書かれた感想・気づき・疑問をもっと掘り下げたいものを、 :+1: 付けていく  |      |
| 15:10?   | 40-45分  | 本の節ごとにディスカッション     |    |
|15:55? | 5分 | 次回読む範囲決めてクローズ | |

## 下に感想などを書いていって下さい。どんな些細なことでもOKです。


---


# 序章、9.1 変数を削除する

## 感想・気づき
- 「中間結果を削除する」これはとても大事
    - リファクタリング時にこれを取りこぼすと、後々こうする意味を深読みして時間浪費することがあった...

### 実践してる人
#### 書籍通りのやり方をしているか。または、何か違う点はあるか。
- 基本は動くものを作ってから、読みやすいコードにリファクタリングしていくイメージ
    - 挙動が完成してない状態で、読みやすさを意識しすぎないようにしてる
    - 実装中に変数減らす閃きがあって、命名に悩んだものが不要になるケース:+1:


### 実践してない人
#### 簡単に導入できそうか。難しいと感じた場合は、何が引っ掛かりそうか。
- 

## 疑問
- 「中間結果を削除する」の例で、arrayを回しているforの中でsplice()していることに違和感を覚えたのは自分だけか？？
    - :memo:言われてみると違和感がある、けど本質ではないので議論はスキップ

---


# 9.2 変数のスコープを縮める

## 感想・気づき
- クラス設計へ言及しているのがいい
    - 「見えてしまう」コードを減らす > コード・設計を単純化するアプローチの基本
    - １メソッド内でもコードブロックがあり、その中で使われない引数・ローカル変数があるのは、メソッドが大きすぎるサインになったりする
- スコープを縮めるのは良いが、外側と内側で同じ名前の変数が使われてリークする場合があったorz
    - 長めなメソッドだと、同じ名前の変数を使ってることを意識し辛い？
- JavaやC#で、public staticのフィールドを多数使っているプロジェクトがありリファクターしたことがある。public staticのフィールドは「誰が持つべきオブジェクトか」が分からなくなる（考えなくなる）のでやめた方が良い。
    - :memo:画面遷移のロジックに使われていた、Singletonを使っているわけでもないのに...
    - :memo:リファクタリングに1年くらい費やす大工事に...

### 実践してる人
#### 書籍通りのやり方をしているか。または、何か違う点はあるか。
- スコープは最小で考え、必要に応じて範囲を広げていくイメージ
    - :memo:最初からスコープの範囲を検討して設計するスタイル > 詳細設計ドキュメントが必要なプロジェクトなど
    - :memo:テストなど後工程になって、修正が必要になるが、ドキュメントに反映されないパターンなども...

### 実践してない人
#### 簡単に導入できそうか。難しいと感じた場合は、何が引っ掛かりそうか。
- 

## 疑問
- p118のクロージャの例、読みやすさは下がっているように見える。この書き方は使います？
    - グローバル変数なので、すぐに手を加えられない場合の応急処置の1例な気がする
    - 可読性は異論あるかもしれないが、システムとして安全にはなっている
    - JavaScriptならこうガードできる、という書き方と理解
    - クロージャを返すメソッドは読みづらさが高くなる印象受ける
    - :memo: 読みやすくはない、けど必要に応じてこう書けるよって紹介のイメージ

---


# 9.3 変数は一度だけ書き込む

## 感想・気づき
- オブジェクト指向の設計で、イミュータブルなオブジェクトがおすすめされることにも繋がる
- 意識したことはなかったが、9.4の例を見たら納得した

### 実践してる人
#### 書籍通りのやり方をしているか。または、何か違う点はあるか。
- 最近は意識してやっている、昔はできてなかった
    - (設計の話になるが)引数をプリミティブ型にすると、思わぬ代入のリスクがあるので自前の型にした方がいいのではとか、色々考え中...
    - :memo: DDD的な話の紹介です

### 実践してない人
#### 簡単に導入できそうか。難しいと感じた場合は、何が引っ掛かりそうか。
- 

## 疑問
- 


---


# 9.4 最後の例

## 感想・気づき
-

### 実践してる人
#### 書籍通りのやり方をしているか。または、何か違う点はあるか。
- 

### 実践してない人
#### 簡単に導入できそうか。難しいと感じた場合は、何が引っ掛かりそうか。
- 

## 疑問
- 


---


# 9.5 まとめ

## 感想・気づき
- この章の内容はいずれも設計に通じる話ばかりだった
- 機能追加・変更の際に変数増やしてしまう解決策を取りがちだけど、やっぱり危険だなあと再認識

## 疑問
- 
