-
Notifications
You must be signed in to change notification settings - Fork 0
coding rule
Tastsuika edited this page Oct 22, 2018
·
1 revision
アッパーキャメルケース
- 例
LikeThis
ローワーキャメルケース
- 例
likeThis
全大文字のアンスコつなぎ
- 例
LIKE_THIS
特別な理由がない限り、明記することが望ましい
- public クラス外からのアクセス可能
- private クラス内でのみアクセス可能
- protected 同じクラス、またはその派生クラスのメンバーからのみアクセス可能
- コンポーネントとステートをベースにフォルダで区切っていく
.
├── actions
│ └── [ComponentName]
│ ├── [ComponentName]ActionType.js
│ ├── [ComponentName]Action.js
│ └── [ComponentName]ActionCreator.js
├── components
│ └── [ComponentName]
│ ├── [ComponentName].tsx
│ └── [ComponentName].test.tsx
├── containers
│ └── [ComponentName]
│ └── [ComponentName].js
├── reducers
│ └── [StateName]
│ ├── [StateName].js
│ └── [StateName].test.js
└── states
│ └── [StateName]
│ └── [StateName]State.js
- ActionとComponentは基本対応しているので、コンポーネントごとに分けてフォルダを作成する
-
ActionType
,Action
,ActionCreator
を分けて定義する
- Componentごとにフォルダを作成する
- Connected Component (Container)であっても
React.Component
を継承した素のComponentはこちらにまとめる
- プロパティメソッドを使って定義すると、
constructor
でbind(this)
する必要がなくなるので、コードの量を大幅に減らすことができる
private onTodoClick = (id: number) => () => {
this.props.onTodoClick(id)
}
- Connected Component (Container)の以下3つのfunctionをここで定義する
mapStateToProps
mapDispatchToProps
connect
- State名ごとにフォルダを分けて定義する
- ReducerはStateと1対1で対応しているので、State名ごとにフォルダを分ける
- Redecerのfunctionには必ず返り値のStateの型を明記する