ディレクトリ名
ディレクトリの整理をして思った。
スペース区切りのディレクトリの表記法が統一されていない。
こだわりが無いので困る。なので、次のことを考えてみた。
[目的]ディレクトリ名の表記法を決める
一般的には次の表記法が使われているよう。
例として「This is an example.」というディレクトリ名を考えてみる。
- パスカル記法: ThisIsAnExample
- キャメル記法: thisIsAnExample
- アンダースコア記法: this_is_an_example
自分なりにそれぞれの特徴を考えてみる。
・パスカル記法とキャメル記法はアンダースコアを使用しないので文字数が短くなる。
・しかし、大文字が含まれているのでShift同時打ちという作業が増える。この作業は小指に良くない。そのことを考えるとパスカル記法よりもキャメル記法、それらよりもアンダースコアー記法が小指に優しい。
・一般的にシェルには補完機能が含まれているので、初動動作が早くて負担が少ない方が良い。そのことを考えると一文字目が小文字のキャメル記法とアンダースコア記法が良い。
・Linuxの生みの親リーナスさんが書いた Coding Styleの第1章のインデントに次のように書いてある。このことを考えるとアンダースコア法が目に優しい。
ここまでの表記法ランキング(独断と偏見)は、
論拠 - そもそもインデントとは、ブロックの始まりと終わりをはっきりさせるた
めのものです。大きなインデントの恩恵は、20時間連続してモニタを眺めてい
るときなどに特に実感できます。
1位 アンダースコアー法、2位 キャメル記法、3位 パスカル記法
現在使用しているノートPC(Ubuntu12.10)でのそれぞれの表記法でのディレクトリ数を調べてみた。ソースコードを一番下に載せる。
ホームディレクトリ以下
パスカル記法: 244 キャメル記法: 180 アンダースコアー記法: 439
ルートディレクトリ以下
パスカル記法: 2138 キャメル記法: 976 アンダースコアー記法: 2053
どうせなので、他の計算機でも調べてみた(大学の計算機遅いので除外)。ルートディレクトリ以下のみ。
・CentOS
パスカル記法: 756 キャメル記法: 174 アンダースコアー記法: 484
大まかに見ると。1位 パスカル記法、2位 アンダースコアー記法、3位 キャメル記法となる。
最下位のパスカル記法がトップに躍り出る。なぜ?
目に優しいのはアンダースコアー記法としたが、ファイル名が小文字のみの場合はディレクトリとのコントラストが効いてパスカル記法の方が目に優しいのかもしれない。ディレクトリとファイルで色を分けている場合があるので効果は薄そうだが。
ファイルの場合の記法数を調べてみた。
現在使用しているノートPC(Ubuntu12.10)
ホームディレクトリ以下
パスカル記法: 4387 キャメル記法: 3139 アンダースコアー記法: 16398
ルートディレクトリ以下
<パスカル記法: 47697 キャメル記法: 13064 アンダースコアー記法: 88972
CnetOS(ルートディレクトリ以下)
パスカル記法: 5173 キャメル記法: 809 アンダースコアー記法: 19045
予想通りファイルは小文字のみのアンダースコアー記法が多い。
上の記法以外の小文字のみのファイル、大文字を含むファイルの場合の数も調べる必要がありそうだけど考えない。
まとめ
ディレクトリ名もファイル名もアンダースコアー記法に決定する。理由は大文字打つのつらいから。
備考として
初めてLinuxマシンを触ったときルートディレクトリ以下の大まかな概要が分からなかった。
大まかに知りたい人は次のコマンドを打つと良い。
「 man hier 」
残っている問題として、ディレクトリ名を長くするか階層に分けるか。
#!/bin/bash # source_dir以下のディレクトリの記法をカウントする source_dir=$PWD pascal_cnt=0 camel_cnt=0 under_cnt=0 for file in $(find $source_dir -type d -print 2> /dev/null); do tmp=$(basename $file) case $tmp in [A-Z]*[A-Z]* ) pascal_cnt=$(($pascal_cnt + 1)) ;; [a-z]*[A-Z]* ) camel_cnt=$(($camel_cnt + 1)) ;; [a-z]*[_]* ) under_cnt=$(($under_cnt + 1)) esac done echo "パスカル記法:" $pascal_cnt " キャメル記法:" $camel_cnt \ " アンダースコアー記法:" $under_cnt exit 0