コーディングスタイルと言うのでしょうか?
AさんとBさんのコードを見比べている際に、for文の()内・ifと()の間の空白有無や、コメント//後ろの空白、breakやreturn上の改行有無、ブロック{}内の何も記載されてない行のインデント(タブ)の有無、の違いが気になりました。
どっちでも良いのかもしれませんが、こっちの方が良いよという書き方はありますか?
また、綺麗な書き方をするに当たって何を気をつけたら良いですか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
コーディング規約はいろいろありますが、私はGoogle JavaScript Style Guideを使用しています。
ただし、スペースやインデントの付け方まで踏まえると宗教に近く、コーディング規約で縛られない部類が多いと思います。
個人的には私が尊敬する人に倣って次のように書きます。
JavaScript
1function hello (string) { 2 3 if (!arguments.length) { // 引数がないなら 4 string = 'Hello, World!'; 5 } else { 6 string = String(string); // String 型に変換 7 } 8 9 return string; 10} 11 12console.log(hello()); // "Hello, World!"
私は多少冗長になっても分かりやすい記述を求める為、空行やインデントは多めに入れています。
(※今回は説明の為、if-else
を使用しましたが、普段なら三項演算子を使うと思います。)
- ブロックが一つでも
{}
を省略しません - 三項演算子を入れ子にしません
function
は keyword 間に半角スペースを一つ入れます- 空行にインデントは入れません(これはエディタが自動補完する部分なのでエディタによっては空行にインデントが入ります。インデントにメリットはないので良いエディタがあれば教えてあげるといいと思います。)
- 本格的なコードを書く時には JSDoc を使用します
- Closure Compiler でパース出来るコードにします(MS IE の条件付きコンパイルは使用しません)
インデントに関しては Closure Compiler で機械的に整形するのも有りだと思います。
投稿2015/08/25 23:32
総合スコア18189
0
ベストアンサー
インデントやブロックの書き方といったコードの体裁は「コーディング規約」と呼ばれる規約に沿って行います。
コーディング規約は様々な団体が言語ごとに提唱していますが、例えば
googleだと
原文
要約
の様なコーディング規約を発表しています。
*2014年と新しい事なので、一般化しているかは別です。
チームで開発する場合は他の人と合わせないとめんどくさいことになりますが、個人での作業であれば極端な話、美意識次第でなんでもいいです。
性質上「どの規約が優れている」という結論は出せませんが、JAVAのコーディング規約をいくつか見てみて、自分に合うコーディング規約でコーディングしてみればいいと思います。
*メジャーなコーディング規約だと、Eclipse等のIDEで簡単にコード整形/チェックが出来たりするので、メジャーな規約でやってみることをお勧めします。
投稿2015/08/25 18:16
総合スコア18728
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
どっちでも良いのかもしれませんが、こっちの方が良いよという書き方
複数人で開発するときは、コーディング規約に従いますが、
ひとりで読み書きするなら、率直に言って大差ないです。
もちろん、if文やfor文でのインデントとか、
基本的な部分はできている前提です。
しいて言えば、プログラミングの書籍でよく見るような
標準的な書き方なら問題ないと言えるでしょう。
細かいコーディングスタイルよりも、
後述の論理的な構造が重要になります。
綺麗な書き方をするに当たって何を気をつけたら良いですか?
「きれい」という言い方は定性的ですが、
理解にかかる時間が短いとか、バグの発生率が低いという、
定量的な結果につながる書き方が重要になります。
しかし、そんなことを言われても、どうすればよいのか困るかもしれません。
そこで、メトリクスツールを使ってコードを静的解析するという手はあります。
とくに「循環的複雑度」はバグの発生率に直結します。
これは関数やメソッドを切り分けると減ります。
コードの可読性には、表面上の見ばえの問題と論理的な構造上の問題があって、
とくに後者のメソッドの抽出はプログラミング上で最重要だと考えています。
(後述の『リーダブルコード』にも「メソッドの抽出」に関する記述があります)
Amazon.co.jp: リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック
よくこの本を薦めていますが、
コードの可読性に関しては『リーダブルコード』が良書です。
オライリーの本にしては平易で、初心者の方でもわりと読みやすいです。
投稿2015/08/25 19:31
編集2015/08/25 19:40総合スコア5592
0
コーディング規約には、大雑把に分類すると、インデントの仕方やブロックの表記など「スタイル」に関わるものと、クラスや変数のネーミングルールやメソッドの使い方など「意味や使い方」に関わるものがあります。
前者は機械的にチェック&整形できるものなので、Eclipse等のIDEの便利機能に任せるのが良いです。
一方、後者については機械的には対応できないので、組織(あるいはプロジェクト)としてのポリシーを決めて全員で遵守する必要があります。
その際、tanatさんも例示してくださっているように、優れた実例やまとめがWeb上にたくさん公開されていますので(これが__絶対__というようなものはない)、それらを参考に自分たちの実情に合った規約を作ると良いです。
ただ、示されている規約は多岐に渡り膨大なルールがありますので、規約をまとめるというのはとても骨の折れる作業です。ですから、まずはニーズに近い規約をそのまま適用し、実際に運用しながらブラッシュアップして行くのが実際的な取り組み方ではないでしょうか。
ブラッシュアップに当たっては、そうした規約が盛り込まれた背景やねらいを理解できると助かりますので、以下のような書籍も大いに参考になると思います。
リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック
Javaルールブック~読みやすく効率的なコードの原則
「スタイル」については、各自の「好み」によって議論の分かれるところですが、「見やすさ」に直結するので効果が一目で分かりますし、機械的に実施可能な部分でもあるので、直ぐにでも適用するべきです。
一方、スタイル以外の部分は徹底するまでに努力と時間が必要ですけれども、品質に大きく影響する部分なので、じっくり腰を据え全員で「納得」しながら進めて行くのが良いと思います。
投稿2015/08/25 19:54
総合スコア5936
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/08/26 17:31