質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.62%

  • JavaScript

    15867questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • Java

    13466questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

綺麗なコードの書き方を教えてください

解決済

回答 4

投稿 編集

  • 評価
  • クリップ 2
  • VIEW 2,133

skies

score 5

コーディングスタイルと言うのでしょうか?
AさんとBさんのコードを見比べている際に、for文の()内・ifと()の間の空白有無や、コメント//後ろの空白、breakやreturn上の改行有無、ブロック{}内の何も記載されてない行のインデント(タブ)の有無、の違いが気になりました。
どっちでも良いのかもしれませんが、こっちの方が良いよという書き方はありますか?
また、綺麗な書き方をするに当たって何を気をつけたら良いですか?
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 4

checkベストアンサー

+3

インデントやブロックの書き方といったコードの体裁は「コーディング規約」と呼ばれる規約に沿って行います。
コーディング規約は様々な団体が言語ごとに提唱していますが、例えば
googleだと
原文
要約
の様なコーディング規約を発表しています。
*2014年と新しい事なので、一般化しているかは別です。

チームで開発する場合は他の人と合わせないとめんどくさいことになりますが、個人での作業であれば極端な話、美意識次第でなんでもいいです。

性質上「どの規約が優れている」という結論は出せませんが、JAVAのコーディング規約をいくつか見てみて、自分に合うコーディング規約でコーディングしてみればいいと思います。
*メジャーなコーディング規約だと、Eclipse等のIDEで簡単にコード整形/チェックが出来たりするので、メジャーな規約でやってみることをお勧めします。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/08/27 02:27

    ご回答ありがとうございます。いろいろな規約が存在するんですか!Googleの良さそうですね〜ちょっと調べてみます。

    キャンセル

+3

コーディング規約はいろいろありますが、私はGoogle JavaScript Style Guideを使用しています。
ただし、スペースやインデントの付け方まで踏まえると宗教に近く、コーディング規約で縛られない部類が多いと思います。
個人的には私が尊敬する人に倣って次のように書きます。

function hello (string) {

  if (!arguments.length) {  // 引数がないなら
    string = 'Hello, World!';
  } else {
    string = String(string); // String 型に変換
  }

  return string;
}

console.log(hello()); // "Hello, World!"

私は多少冗長になっても分かりやすい記述を求める為、空行やインデントは多めに入れています。
(※今回は説明の為、if-else を使用しましたが、普段なら三項演算子を使うと思います。)

 - ブロックが一つでも {} を省略しません
 - 三項演算子を入れ子にしません
 - function は keyword 間に半角スペースを一つ入れます
 - 空行にインデントは入れません(これはエディタが自動補完する部分なのでエディタによっては空行にインデントが入ります。インデントにメリットはないので良いエディタがあれば教えてあげるといいと思います。)
 - 本格的なコードを書く時には JSDoc を使用します
 - Closure Compiler でパース出来るコードにします(MS IE の条件付きコンパイルは使用しません)

インデントに関しては Closure Compiler で機械的に整形するのも有りだと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/08/27 02:31

    ご回答ありがとうございます。他の人がどの様に書いて何を気にしてるのか知りたかったので、とてもマッチしたお答えでした。参考にさせて頂きます!

    キャンセル

+2

どっちでも良いのかもしれませんが、こっちの方が良いよという書き方
複数人で開発するときは、コーディング規約に従いますが、
ひとりで読み書きするなら、率直に言って大差ないです。

もちろん、if文やfor文でのインデントとか、
基本的な部分はできている前提です。

しいて言えば、プログラミングの書籍でよく見るような
標準的な書き方なら問題ないと言えるでしょう。

細かいコーディングスタイルよりも、
後述の論理的な構造が重要になります。


綺麗な書き方をするに当たって何を気をつけたら良いですか?
「きれい」という言い方は定性的ですが、
理解にかかる時間が短いとか、バグの発生率が低いという、
定量的な結果につながる書き方が重要になります。

しかし、そんなことを言われても、どうすればよいのか困るかもしれません。
そこで、メトリクスツールを使ってコードを静的解析するという手はあります。

とくに「循環的複雑度」はバグの発生率に直結します。
これは関数やメソッドを切り分けると減ります。

コードの可読性には、表面上の見ばえの問題と論理的な構造上の問題があって、
とくに後者のメソッドの抽出はプログラミング上で最重要だと考えています。
(後述の『リーダブルコード』にも「メソッドの抽出」に関する記述があります)




Amazon.co.jp: リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック

よくこの本を薦めていますが、
コードの可読性に関しては『リーダブルコード』が良書です。

オライリーの本にしては平易で、初心者の方でもわりと読みやすいです。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/08/27 02:56

    ご回答ありがとうございます。メトリクスツールと言うものがあるんですね、論理的な構造は難しそうですね。。先ずはおすすめ頂いたリーダブルコードを買ってみようと思います。

    キャンセル

+1

コーディング規約には、大雑把に分類すると、インデントの仕方やブロックの表記など「スタイル」に関わるものと、クラスや変数のネーミングルールやメソッドの使い方など「意味や使い方」に関わるものがあります。

前者は機械的にチェック&整形できるものなので、Eclipse等のIDEの便利機能に任せるのが良いです。

一方、後者については機械的には対応できないので、組織(あるいはプロジェクト)としてのポリシーを決めて全員で遵守する必要があります。

その際、tanatさんも例示してくださっているように、優れた実例やまとめがWeb上にたくさん公開されていますので(これが絶対というようなものはない)、それらを参考に自分たちの実情に合った規約を作ると良いです。
ただ、示されている規約は多岐に渡り膨大なルールがありますので、規約をまとめるというのはとても骨の折れる作業です。ですから、まずはニーズに近い規約をそのまま適用し、実際に運用しながらブラッシュアップして行くのが実際的な取り組み方ではないでしょうか。

ブラッシュアップに当たっては、そうした規約が盛り込まれた背景やねらいを理解できると助かりますので、以下のような書籍も大いに参考になると思います。

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック
Javaルールブック~読みやすく効率的なコードの原則

スタイル」については、各自の「好み」によって議論の分かれるところですが、「見やすさ」に直結するので効果が一目で分かりますし、機械的に実施可能な部分でもあるので、直ぐにでも適用するべきです。

一方、スタイル以外の部分は徹底するまでに努力と時間が必要ですけれども、品質に大きく影響する部分なので、じっくり腰を据え全員で「納得」しながら進めて行くのが良いと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/08/27 02:41

    ご回答ありがとうございます。参考書のおすすめありがとうございます!書籍を真似れば可読性も上がりそうで良いですね。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.62%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • JavaScript

    15867questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • Java

    13466questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。