Drumato Programming Ideology
結構肌感覚で得た,roughなものを書いておく.best practiceではない.
基本思想
Must
readable
simple
testable
just do it
Should
comment(WHY/WHY NOT)
外部依存は全部interface
May
Git
commitの単位は以下すべてを含む
impl code/unittest/documentation/comment
これら全て含めて,どのcommitを起点に読み始めてもなにかわかるようにあるべき.
etc
データとその操作は近くに
policyとimplementationは混ぜない
参照の一点性
基本単一代入/const
programは必ず変更される
かっこいいことやって色々完璧に作ろうとしても,結局書き換えることになる
KISS
technicalなことをやると気持ちいいのは事実,でも必要?
どれが一番simpleかを考える
最適化は必要になったらする
DRY
とりあえず意味のある値は全部constにしてしまうぐらいで良い
一度しか使われてなくても説明性が上がる
どこかで必要になる"場合分け"をどこに書くべきか考える
test qualityに直結する
うまくやれば,どこか1つに書かれているlogicをtestすれば良い
重複を許すpointを考える
workflow全体にDRYを適用する
関数の粒度
SLAPと合わせて考える
関数の説明と名前が対応する?
ex. "readFile()内で存在するかcheckしている -> fileExists()を呼ぶ"のように切り分ける
おすすめ: 名前可逆性
関数を説明する => 命名する => 名前だけ見て説明が思いつくか?
References