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

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

ただいまの
回答率

90.51%

  • プログラミング言語

    751questions

    プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

  • コーディング規約

    52questions

    コーディング規約とは、コードの書き方についての決め事のことです。 文法のことではなく、そのチームなどの中の約束事としてどのような書き方で行うかを定めるもの。 項目の例として、関数や変数の命名規則、コーディングのスタイル、括弧やインデントの書き方などが挙げられます。

ソースコードを書く上での暗黙の了解等があれば教えていただけたら幸いです。

受付中

回答 14

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 2,189

_unknown

score 4

よろしくお願いします。

皆様のソースコードを作成する上でのこだわり、
暗黙の了解や一般論等がありましたらぜひ教えていただきたいです。
腕を上達させたいと思い、サンプルコードをqiita様などで拝見することがよくあります。

コードの書き方などは人それぞれという意見もあるとは思いますが、
開発やプロジェクトには多くの人が携わります。
特にインデントの部分における暗黙の了解や常識等がありましたら教えていただきたいです。よろしくお願いいたします。

例えば

main(argc,argv)//引数を指定する際、スペースを空けるか
main(argc, argv)

int a,b,c//変数定義の際,のあとスペースを入れるか
int a, b, c

if(a>0)//if文にはスペースを空けるか
if(a > 0)
if (a>0)
if (a > 0)


などです。

皆様がネット上にコードを公開する際はどのようにしていますでしょうか。

また、プログラマーの方々から見て、このコード書いたのはきっと素人だなと思うようなコードの特徴等ありましたら教えていただきたいです。

よろしくお願いします。

追記

初心者が変な癖をつけて後々恥ずかしい思いをしないためにというニュアンスで質問させて頂いきました。

  • 気になる質問をクリップする

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

質問への追記・修正、ベストアンサー選択の依頼

  • issei.

    2016/08/05 17:24

    多少の癖くらいなら、ファイル内で統一されていれば目を瞑ってもらえます(小声。厳しいところだと書き直しになることもありますが、厳しいところは書き方のルール(コーディング規約)があるので、そんなに身構えなくても大丈夫だと思います。

    キャンセル

  • kei344

    2016/08/06 12:28

    タイトルが「義ソースコード」になっていますが、「義」は不要では?

    キャンセル

  • _unknown

    2016/10/04 19:37

    すみません。気づきませんでした。

    キャンセル

回答 14

+4

大きな企業だと社内のコーディングルールを公開してるところもありますので、それを参考にするといいと思います。
以前いた職場ではGoogleのコーディング規約を参考に、いくらなんでもこれはめんどくさいよね、みたいなところはチームで相談してちょっとアレンジしてルール決めしました。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2016/10/04 20:02

    ありがとうございます。
    Googleのコーディング規約を調べてみます。
    読みやすいコードがかけるように工夫していきたいです。

    キャンセル

+3

いわゆる、
コーディング規約
と呼ばれるものですね。

issei.さんの回答通り、その開発単位で何らかのルールで統一されていれば、
あとは価値観の違いなのでどんな方法が優れているということはありません。
*特にこだわりや理由が無ければ、シェアの高いコーディング規約を採用すると利便性が高いです。

言語によっても色々あるので
言語名 コーディング規約
あたりをキーワードにして検索してみると、そのタイミングでよく使われているであろうコーディング規約がみつかるので、その中からしっくりくるものを使ってみるというのがお勧めです。

また、IDEやエディタによっては、コーディング規約に沿って体裁を整える機能を持っているものもあるので、ネットや他のチームとのコードのやり取りをする場合はそういった機能を使うと楽です。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2016/10/04 20:02

    ありがとうございます。
    言語名 コーディング規約で調べてみます。
    読みやすいスタイルを身につけたいです。

    キャンセル

+3

実際には関わられている業務チームのコード規約を参考にされれば良いかと思いますが、

一般的には良いコードの特徴としては

コメントの使用と作法が適切である
字下げを含めたソースコードのレイアウトが良い
桁位置合わせが適切である
キーワードと変数名の区別が明確化されている  
演算子やキーワードの前後での空白を適切に使用している
ユーザー定義識別子(関数名・変数名など)のスペリングの作法が適切である
プログラミング構文の使用法や使用禁止を実施している(例えばgoto文の使用禁止)

などが挙げられるかと思います。

https://ja.wikipedia.org/wiki/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E4%BD%9C%E6%B3%95
ご参考まで

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

+2

こんにちは。

区切り記号前後のスペースの有無はあまりつけないです。,の後ろにスペース1つが自分の方針です。
でも、単なる好みで強い理由はあまりせん。何か統一的な方針が欲しいのでこのようにしているだけです。

しかし、インデントは慎重に付けます。
{}の付け方やインデントのスペース数は人によって色々な方針がありますが、同じブロックの文頭が揃ってないや入れ子のブロックの文頭が同じとかはあり得ないと考えています。

インデントのスペース数は国内は4が多い印象です。グーグルは2を推奨してます。linuxのリーナス氏は8を推奨してます。私は4が好きですね。
統一することは事実上不可能と思いますので、決まりがあればそれに合わせ、ない時は自分のコードは自分好みで、他の人のコードはその人の好みに合わせるのが良いのではないかと思っています。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2016/10/04 20:02

    ありがとうございます。
    様々なスタイルがあるのですね。
    読みやすいコードを書けるように頑張ります。

    キャンセル

+2

コーディング規約がある場合はそれに従うのがルールとなります。

変な癖をつけて恥ずかしい思いをしたくないのであれば、
自分が良いと思ったソースコードをひたすら真似をして身に着けていけばよいと思います。

そのうえで、自分がソースコードを書く際にブレがなければ自然と素人ではなくなるはずです。
例えば、「この関数は引数の間にスペースがあるのに、こっちの関数はスペースがない」や、
改行のタイミングなども場所によって違ったりすると統一感がなく見えます。

まあ、今はフォーマッタやコードスニペットがあるので最終的に一括である程度は整えられますが・・・。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2016/10/04 20:03

    ありがとうございます。
    フォーマッタ、コードスニペットですか?
    初めて聞きました。調べてみます。

    キャンセル

+1

挙げていただいている点は、最低限、そのソースファイル内で統一されていれば問題ありません。
むしろ、コメントの書き方や、ロジックの書き方・切り分け方を気にされた方が良いと思います。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2016/10/04 20:02

    ありがとうございます。
    書くことも大事ですが、動くコードも大事ですよね。
    コメントなどにも注意するようにします。

    キャンセル

+1

プロジェクトでコーディング規約があるならそれに従う。
ないプロジェクトなら、なるべく既存ソースにあわせる。
それもないなら自由。
自分の好みでコーディングしましょう。
どの書き方がいいとか悪いとかはそれほどないと思いますが、個人的には空白なしでギュウギュウに詰まってるのは見づらいですね。
また、今はこの書き方がいいと思っていても、数年経ったり、別の人のコードを見ると考えが変わってきます。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2016/10/04 20:02

    ありがとうございます。
    読みやすいコードは気持ちがいいですよね。
    いろいろな人のコードを読んで読みやすいように工夫します。

    キャンセル

+1

コーディングスタイルの話ですね。コーディング規約で規定されているならそれに従い、そうでなければ基本的には「見やすさ」と「統一感」を心がければ良いと思います。

ぎちぎちに詰めて書くよりも、適度にスペースを空けて書いた方が見やすいと思います。私は、カンマの後ろや演算子の前後には(基本的には)スペースを空けるようにしています。

異なる複数の処理が1行に書かれていると見づらいです。1行に複数の命令を書くことができる言語は多いですが、基本的に1行には一つの処理にとどめるべきです。デバッグにも影響しますから。

インデントは重要です。きちんとインデントしていれば制御構造の外観を瞬時に把握することができます。私は4文字のハードタブ派ですが、スペース4文字派も多いですし、2文字というのも結構見かけます。

いろんなコードを見て回って、自分が見やすいと思ったコーディングスタイルを真似すれば良いと思います。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2016/10/04 20:03

    ありがとうございます。
    デバッグを意識するのは重要ですよね。
    いろいろなコードを見て練習したいと思います。

    キャンセル

+1

環境によりますがIDEで大まかなサポートをしてくれるものもありますね
私はもっぱらVisualStudioを使っているので気にしたことがありません
無い環境だとオレオレルールを組み込んだコード整形のツールを使うとかでしょうか

そういうことも大事だと思いますがその辺りはツールに任せて、もっと他のコードのクオリティの部分で気を使いたい(自戒

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2016/10/04 20:03

    ありがとうございます。
    ツールを使用するという方法もあるのですね。
    調べてみたいと思います。

    キャンセル

+1

会社やプロジェクト毎にコーディング規約やコメント規約があります。
それに合わせてることが重要です。

なにが正しい、なにが変なのかは、やはりコーディング規約と比較する必要があります。
一概に変な癖とは判断できないと思います。

一度、インターネットでJavaやC#のコーディング規約を検索してみてはどうでしょうか?

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2016/10/04 20:03

    ありがとうございます。
    コーディング規約などは毎回変わったりするのですね。
    勉強になりました。

    キャンセル

+1

ソースコードを書く上での暗黙の了解

Google JavaScript Style Guide 和訳
Google Java Style (非公式和訳)

有名なコーディング規約が知りたいなら上記リンク、

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

可読性に関する一般論が知りたいなら上記書籍がオススメです。


複数人でコーディングするときは、
職場などでの規約に従うことになると思います。

じゃあ、そういう制約がない場合、何を基準にするか?

たとえばRubyですと、「Rubocop」という、
静的解析ツールを私はよく使います。

これは自動で書式などをチェックしてくれるので便利です。
ただし、標準の設定に必ずしも100%従うわけでもないですけど。

こういうツールは、メジャーな言語なら、
ほかの言語でもありますので、探してみてください。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

0

習慣からかけ離れるほどコードの読み書き(特に書くこと)がつらくなるので、まずはより広い範囲で通用しそうなスタイルに従うのがいいと思います。Cの子孫の言語(C++, Java, C#, Scala, etc.)であれば概ねK&Rスタイルがよいと思います。

if( a+1==b ){     // 非K&R。論理を作るよりこの規則の方がつらいと感じるプログラマーもいそう
  invoke( a,b );
  int c,d;

if (a + 1 == b) { // K&R
  invoke(a, b);
  int c, d;


スタイル以外についての一般論については範囲が広すぎて「小さく作る」「明快に作る」といった抽象的な言葉しかできてきそうもないので、あなた自身が様々な場面での失敗や勉強を通じて知見を得ていってくださいという応援しかできません・・・

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

0

今日、ちょうど会社のエンジニアMTGでコーディング規約について触れていました。
いろいろとあったのですが、まとめるとフレームワークのルールに従うってことですかね。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

0

前提
グローバル変数は極力使わない、使う時はハンガリアンgをつける。
一つの関数は精々30行程度に収めたい。
中括弧は省略できても省略しない。
小括弧も余程くどくない限り省略しない。
括弧等、対になる記号や処理がある場合はセットを先に作ってから内部を記述する。
比較演算子==の両辺のうち片方のみが変数ならば、これは右辺とする。
積極的にconstを使う。

My命名規則
変数名は全て小文字、定数は全て大文字(単語間はアンダーバー)、関数名は二単語目以降の先頭のみ大文字、構造体(クラス)名は単語の先頭のみ大文字、基本的に英単語で構成する

その他
while(1)よりもfor(;;)の方が一文字少ない(ほぼどうでもいい、というか力尽きたので寝ます・・・)

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

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

  • プログラミング言語

    751questions

    プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

  • コーディング規約

    52questions

    コーディング規約とは、コードの書き方についての決め事のことです。 文法のことではなく、そのチームなどの中の約束事としてどのような書き方で行うかを定めるもの。 項目の例として、関数や変数の命名規則、コーディングのスタイル、括弧やインデントの書き方などが挙げられます。