teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2016/03/17 13:50

投稿

miyabi-sun
miyabi-sun

スコア21454

answer CHANGED
@@ -1,11 +1,23 @@
1
- 挙げるとすれば5つですかね
1
+ 色々付け足したら長くなりました。
2
+ 以下は私が工夫してプログラミング速度が速くなったと実感した経緯です。
3
+ 共感出来る箇所、出来ない箇所あるかと思いますが、共感した箇所だけ参考にしてみてください。
2
4
 
5
+ - プログラミング力とは使える関数の数
3
6
  - コーディングスタイルの確立
4
- - 状態変数は持つな
7
+ - 状態変数は持つな
5
- - 命名には徹底的にこだわれ
8
+ - 命名には徹底的にこだわれ
9
+ - でもプロジェクトのコーディング規約が基本的に有線
6
10
  - カーソルキーは極力減らそう
7
- - タイピングの無駄
11
+ - その他タイピングの無駄
12
+ - 日本語とプログラミング言語の指使いは全く違う
13
+ - タイピング速度はこのように活かすのだ
8
14
 
15
+ # プログラミング力とは使える関数の数
16
+
17
+ 私はJavaScriptとPHPしか使えませんが、
18
+ 標準関数の覚えている量は戦力の決定的差です。
19
+ その他プロジェクトで使ってるライブラリやフレームワークのメソッドも顕著に効果があります。
20
+
9
21
  # コーディングスタイルの確立
10
22
 
11
23
  他の人も上げてますが、プログラミングの速度は読んだ量、書いた量に比例します。
@@ -14,25 +26,41 @@
14
26
  もし読んでなければ[リーダブルコード](http://www.amazon.co.jp/%E3%83%AA%E3%83%BC%E3%83%80%E3%83%96%E3%83%AB%E3%82%B3%E3%83%BC%E3%83%89-%E2%80%95%E3%82%88%E3%82%8A%E8%89%AF%E3%81%84%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E6%9B%B8%E3%81%8F%E3%81%9F%E3%82%81%E3%81%AE%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%A7%E5%AE%9F%E8%B7%B5%E7%9A%84%E3%81%AA%E3%83%86%E3%82%AF%E3%83%8B%E3%83%83%E3%82%AF-Theory-practice-Dustin-Boswell/dp/4873115655)を読みましょう。
15
27
  そして全セクションで納得もしくは「いや、自分は絶対にこう思う。」と確信するまで読破しましょう。
16
28
 
17
- # 状態変数は持つな
29
+ ## 状態変数は持つな
18
30
 
19
- 状態変数とはメソッドの中でステップ毎に値が変わる変数を指します。
20
- 主にループ文の中で使われるiとかjとかそういう奴も含みます。
21
-
22
- 人間覚え続ける事が出来る個数は7個が限界なので、
31
+ 人間の頭の中で同時に記憶出来るモノは7個が限界と言われています。
23
32
  状態変数の管理は人間様にとって非常に重いコストとしてのしかかってきます。
24
33
  その結果考慮漏れ、バグにつながります。
25
34
 
26
- # 命名は徹底的にこだわれ
35
+ しかし、状態変数を無理削るとプログラムのパフォーマンスが低下する可能性もあります。
36
+ 何でもかんでも持つな!減らせというわけではありませんが、必要最小限を保つ努力は怠らないようにしましょう。
37
+ 「ん?この状態変数って必要不可欠だっけ?」と問いかけるだけでもかなり減らせるかと思います。
27
38
 
28
- ここサボる奴やってもダメです。
39
+ ## 命名に徹底的こだわれ
29
- 変数、メソッド名・・・それはtmp以外のあるべき名前があるはず。
30
40
 
41
+ 実際に動いてるプログラムの中に`tmp,num,str,hoge,fuga,foo,bar`のような変数があればアウト。
31
- 使い捨てる為に名付けたtmpは自分メモリの中で管理し続る必要出てくるので、
42
+ 使い捨てる為に名付けたtmpはコードを読む度に「えーと、これなんだっ?」という無駄な時間発生します。
32
- 気を抜いた瞬間考慮漏れ、バグの原因となります。
43
+ 怠った瞬間考慮漏れ、バグの原因となります。
33
44
 
34
- # ソルキーは極力減らそう
45
+ ## でもプロジェクトのコディング規約が基本的に有線
35
46
 
47
+ 明らかにプロジェクトのコーディング規約がおかしい場合は戦うべきです。
48
+ ですが、好み程度の差異なら素直に従った方が良いです。
49
+ カッコやカンマの書き方一つでも、統一されてないと追加開発の速度や品質がガタ落ちします。
50
+
51
+ # タイピングの無駄
52
+
53
+ 例えば`(j)`と入力する時どうしてますか?
54
+ まさか**Shiftキーを押しながら89と入力し、左キーで戻ってからjをタイプ**…等とはやってませんよね?
55
+ その後の状況もひどくカッコから出る為に右キーを入力する必要がありますので、2回もホームポジションを崩す事になります。
56
+
57
+ バグを極力減らす事が出来るので、褒められるべき良い癖の一つですが、速度を意識する場合は悪癖ともいえます。
58
+ モダンなエディタやIDEは閉じカッコや"忘れはチェックしてくれますのでカッコ忘れたらどうすんだ等と思う必要はありません。
59
+
60
+ 矯正には[Typing.io](https://typing.io/)をどうぞ。
61
+
62
+ ## カーソルキーは極力減らそう
63
+
36
64
  上下左右キーがコーディング時、一番の無駄な作業です。
37
65
  SublimeやAtom等のモダンなエディタは無駄なカーソルキーを減らすためのショートカットやプラグインの数々が用意されており、高速なプログラミングをサポートしてくれます。
38
66
  VimやEmacsも高速にプログラミング出来るので、頑張って覚えるのもありでしょう。
@@ -40,13 +68,30 @@
40
68
  大事なのは道具をどう使うかです。
41
69
  良い手段が思いついたら積極的に使っていきましょう。
42
70
 
43
- # タイピングの無駄
71
+ ## 日本語とプログラミング言語指使いは全く違う
44
72
 
45
- 例えば`(i)`入力する時どうしてますか?
73
+ プログラマの場合、日本語はローマ字の人が多い思いますが、
46
- まさか**Shiftキーを押しながら89と入力し、左キーで戻ってからiをタイプ**…等とはやってませんよね?
47
- 後の状況もひどくカコから出る為キーを入力する必要がありますで、2回もホムポジション崩す事になります。
74
+ ローマ字入力場合、左手は大抵ASERに指をセトし、必要応じてT・G・Bキーに人差し指伸ばせば殆どカバー出来てしいます。
75
+ なので意外と左手の指を動かすという習慣が根付いていないので、プログラミングや英語用のタイピング速度を測った時に速くタイプ出来ていないという事は往々にしてあります。
48
76
 
49
- チから入力するなら全て左から入力したほうがいに決まって
77
+ ## タピング度はこうやって活かのだ
50
- モダンなエディタやIDEは閉じカッコや"忘れはチェックしてくれますのでカッコ忘れたらどうすんだ等と思う必要はありません。
51
78
 
79
+ この関数どうやって動かすんだっけ…?
80
+ 対話シェルを立ち上げてささっと確認出来ます。
81
+
82
+ LinuxのGUI版にはGuakeという、ホットキーを押すと上からコンソールが生えてくる便利ツールがあります
83
+ 「Guake Windows」や「Mac Guake」等とググると別のツールですがホットキーでコンソールを呼び出せるツールがあります。
84
+
85
+ RDBに値を確認しにいく時も極力SQLを打ち込みましょう。
86
+ phpMyAdminにアクセスしてマウスをポチポチやって確認するとか最悪です。
87
+ 例えばMySQLであればmy.cnfを設定しておき、素早く開発環境のDBにアクセス出来る状態にしておきましょう
88
+
89
+ ```Bash
90
+ $ mysql dbserver
91
+ > show tables; -- テーブル名を確認
92
+ > show columns from piko; -- 対象のテーブルのカラムを確認
52
- 矯正には[Typing.io](https://typing.io/)をどうぞ。
93
+ > select * from piko where xxx = "yyy";
94
+ ```
95
+
96
+ GUI操作をどんなに突き詰めたとしても、4行を打ち込む速度には敵いません。
97
+ 大量にSQLを発行したり戻る場合は、GUIのSQLクライアントを別途に用意しておくと捗ることもあります。