aboutsummaryrefslogtreecommitdiffhomepage
path: root/markup/pod/live-manual/media/text/ja/project_coding-style.ssi
blob: cc8c41ae6b243d5d03964917917ca629ee8f8094 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
:B~ コーディングスタイル

1~coding-style コーディングスタイル

この章では Live システムで利用されているコーディングスタイルについて述べます。

2~ 互換性

_* Bash シェル固有の書式や記号を使わないでください。例えば配列構造の利用など

_* POSIX のサブセットだけを使ってください - 例えば `foo` よりも $(foo) を使ってください。

_*  'sh -n' と 'checkbashisms' によりスクリプトをチェックできます。

_* シェルコードが全て確実に 'set -e' で動作するようにしてください。

2~ インデント

_* 常にスペースよりもタブを使います。

2~ 改行

_* 通常、行は最大で80文字までです。

_* 「Linux 式」で改行します:

悪い例:

code{

 if foo; then
         bar
 fi

}code

良い例:

code{

 if foo
 then
         bar
 fi

}code

_* 関数についても同様です:

悪い例:

code{

 Foo () {
         bar
 }

}code

良い例:

code{

 Foo ()
 {
         bar
 }

}code

2~ 変数

_* 変数は常に大文字です。

_* live-build で利用する変数は先頭を常に #{LB_}# で始めます。

_* live-build 内部の一時変数は #{\_LB_}# で始めます。

_* live-build のローカル変数は #{\_\_LB_}# で始めます。

_* live-config 中のブートパラメータにつながる変数は #{LIVE_}# で始めます。

_* live-config 中の他の変数は全て #{_}# で始めます。

_* 変数は大括弧「{}」で囲みます。例えば #{$FOO}# ではなく #{${FOO}}# とします。

_* 空白文字の可能性を考慮し、常に引用符を使って変数を保護します: #{${FOO}}# ではなく #{"${FOO}"}# とします。

_* 一貫性を保つため、変数に値を割り当てるときは常に引用符を使います:

悪い例:

code{

 FOO=bar

}code

良い例:

code{

 FOO="bar"

}code

_* 複数の変数を使うときは表現全体を引用符で囲みます:

悪い例:

code{

 if [ -f "${FOO}"/foo/"${BAR}"/bar ]
 then
         foobar
 fi

}code

良い例:

code{

 if [ -f "${FOO}/foo/${BAR}/bar" ]
 then
         foobar
 fi

}code

2~ その他

_* sed を呼び出すときは区切り文字に「#{|}#」を使います。例えば「#{sed -e 's|foo|bar|'}#」

_* 比較やテストには #{test}# コマンドを使わず、「#{[}#」や「#{]}#」を使います。例えば「#{if [ -x /bin/foo ];
...}#」を使い、「#{if test -x /bin/foo; ...}#」は使いません。

_* #{test}# よりも #{case}# の方が読みやすく実行速度も早いため、可能な部分ではこちらを使います。

_* ユーザの環境と混ざる可能性を限定するため、関数の名前には大文字を使います。