回答編集履歴
1
追記
answer
CHANGED
@@ -1,11 +1,23 @@
|
|
1
|
-
|
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
|
-
人間
|
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
|
-
|
73
|
+
プログラマの場合、日本語はローマ字の人が多いと思いますが、
|
46
|
-
まさか**Shiftキーを押しながら89と入力し、左キーで戻ってからiをタイプ**…等とはやってませんよね?
|
47
|
-
|
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
|
-
|
93
|
+
> select * from piko where xxx = "yyy";
|
94
|
+
```
|
95
|
+
|
96
|
+
GUI操作をどんなに突き詰めたとしても、4行を打ち込む速度には敵いません。
|
97
|
+
大量にSQLを発行したり戻る場合は、GUIのSQLクライアントを別途に用意しておくと捗ることもあります。
|