よろしくお願いします。
皆様のソースコードを作成する上でのこだわり、
暗黙の了解や一般論等がありましたらぜひ教えていただきたいです。
腕を上達させたいと思い、サンプルコードをqiita様などで拝見することがよくあります。
コードの書き方などは人それぞれという意見もあるとは思いますが、
開発やプロジェクトには多くの人が携わります。
特にインデントの部分における暗黙の了解や常識等がありましたら教えていただきたいです。よろしくお願いいたします。
例えば
c
1main(argc,argv)//引数を指定する際、スペースを空けるか 2main(argc, argv) 3 4int a,b,c//変数定義の際,のあとスペースを入れるか 5int a, b, c 6 7if(a>0)//if文にはスペースを空けるか 8if(a > 0) 9if (a>0) 10if (a > 0)
などです。
皆様がネット上にコードを公開する際はどのようにしていますでしょうか。
また、プログラマーの方々から見て、このコード書いたのはきっと素人だなと思うようなコードの特徴等ありましたら教えていただきたいです。
よろしくお願いします。
追記
初心者が変な癖をつけて後々恥ずかしい思いをしないためにというニュアンスで質問させて頂いきました。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答14件
0
大きな企業だと社内のコーディングルールを公開してるところもありますので、それを参考にするといいと思います。
以前いた職場ではGoogleのコーディング規約を参考に、いくらなんでもこれはめんどくさいよね、みたいなところはチームで相談してちょっとアレンジしてルール決めしました。
投稿2016/08/05 06:53
総合スコア1298
0
実際には関わられている業務チームのコード規約を参考にされれば良いかと思いますが、
一般的には良いコードの特徴としては
コメントの使用と作法が適切である
字下げを含めたソースコードのレイアウトが良い
桁位置合わせが適切である
キーワードと変数名の区別が明確化されている
演算子やキーワードの前後での空白を適切に使用している
ユーザー定義識別子(関数名・変数名など)のスペリングの作法が適切である
プログラミング構文の使用法や使用禁止を実施している(例えばgoto文の使用禁止)
などが挙げられるかと思います。
投稿2016/10/04 23:06
総合スコア1628
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
いわゆる、
コーディング規約
と呼ばれるものですね。
issei.さんの回答通り、その開発単位で何らかのルールで統一されていれば、
あとは価値観の違いなのでどんな方法が優れているということはありません。
*特にこだわりや理由が無ければ、シェアの高いコーディング規約を採用すると利便性が高いです。
言語によっても色々あるので
言語名 コーディング規約
あたりをキーワードにして検索してみると、そのタイミングでよく使われているであろうコーディング規約がみつかるので、その中からしっくりくるものを使ってみるというのがお勧めです。
また、IDEやエディタによっては、コーディング規約に沿って体裁を整える機能を持っているものもあるので、ネットや他のチームとのコードのやり取りをする場合はそういった機能を使うと楽です。
投稿2016/08/05 06:57
総合スコア18709
0
コーディング規約がある場合はそれに従うのがルールとなります。
変な癖をつけて恥ずかしい思いをしたくないのであれば、
自分が良いと思ったソースコードをひたすら真似をして身に着けていけばよいと思います。
そのうえで、自分がソースコードを書く際にブレがなければ自然と素人ではなくなるはずです。
例えば、「この関数は引数の間にスペースがあるのに、こっちの関数はスペースがない」や、
改行のタイミングなども場所によって違ったりすると統一感がなく見えます。
まあ、今はフォーマッタやコードスニペットがあるので最終的に一括である程度は整えられますが・・・。
投稿2016/08/05 07:38
総合スコア2021
0
こんにちは。
区切り記号前後のスペースの有無はあまりつけないです。,の後ろにスペース1つが自分の方針です。
でも、単なる好みで強い理由はあまりせん。何か統一的な方針が欲しいのでこのようにしているだけです。
しかし、インデントは慎重に付けます。
{}の付け方やインデントのスペース数は人によって色々な方針がありますが、同じブロックの文頭が揃ってないや入れ子のブロックの文頭が同じとかはあり得ないと考えています。
インデントのスペース数は国内は4が多い印象です。グーグルは2を推奨してます。linuxのリーナス氏は8を推奨してます。私は4が好きですね。
統一することは事実上不可能と思いますので、決まりがあればそれに合わせ、ない時は自分のコードは自分好みで、他の人のコードはその人の好みに合わせるのが良いのではないかと思っています。
投稿2016/08/05 07:11
総合スコア23272
0
ソースコードを書く上での暗黙の了解
Google JavaScript Style Guide 和訳
Google Java Style (非公式和訳)
有名なコーディング規約が知りたいなら上記リンク、
リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック
可読性に関する一般論が知りたいなら上記書籍がオススメです。
複数人でコーディングするときは、
職場などでの規約に従うことになると思います。
じゃあ、そういう制約がない場合、何を基準にするか?
たとえばRubyですと、「Rubocop」という、
静的解析ツールを私はよく使います。
これは自動で書式などをチェックしてくれるので便利です。
ただし、標準の設定に必ずしも100%従うわけでもないですけど。
こういうツールは、メジャーな言語なら、
ほかの言語でもありますので、探してみてください。
投稿2016/10/05 08:58
総合スコア5592
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
会社やプロジェクト毎にコーディング規約やコメント規約があります。
それに合わせてることが重要です。
なにが正しい、なにが変なのかは、やはりコーディング規約と比較する必要があります。
一概に変な癖とは判断できないと思います。
一度、インターネットでJavaやC#のコーディング規約を検索してみてはどうでしょうか?
投稿2016/08/09 14:38
編集2016/08/09 14:39総合スコア338
0
環境によりますがIDEで大まかなサポートをしてくれるものもありますね
私はもっぱらVisualStudioを使っているので気にしたことがありません
無い環境だとオレオレルールを組み込んだコード整形のツールを使うとかでしょうか
そういうことも大事だと思いますがその辺りはツールに任せて、もっと他のコードのクオリティの部分で気を使いたい(自戒
投稿2016/08/05 23:22
総合スコア3939
0
コーディングスタイルの話ですね。コーディング規約で規定されているならそれに従い、そうでなければ基本的には「見やすさ」と「統一感」を心がければ良いと思います。
ぎちぎちに詰めて書くよりも、適度にスペースを空けて書いた方が見やすいと思います。私は、カンマの後ろや演算子の前後には(基本的には)スペースを空けるようにしています。
異なる複数の処理が1行に書かれていると見づらいです。1行に複数の命令を書くことができる言語は多いですが、基本的に1行には一つの処理にとどめるべきです。デバッグにも影響しますから。
インデントは重要です。きちんとインデントしていれば制御構造の外観を瞬時に把握することができます。私は4文字のハードタブ派ですが、スペース4文字派も多いですし、2文字というのも結構見かけます。
いろんなコードを見て回って、自分が見やすいと思ったコーディングスタイルを真似すれば良いと思います。
投稿2016/08/05 09:17
総合スコア5938
0
プロジェクトでコーディング規約があるならそれに従う。
ないプロジェクトなら、なるべく既存ソースにあわせる。
それもないなら自由。
自分の好みでコーディングしましょう。
どの書き方がいいとか悪いとかはそれほどないと思いますが、個人的には空白なしでギュウギュウに詰まってるのは見づらいですね。
また、今はこの書き方がいいと思っていても、数年経ったり、別の人のコードを見ると考えが変わってきます。
投稿2016/08/05 06:55
総合スコア16996
0
前提
グローバル変数は極力使わない、使う時はハンガリアンgをつける。
一つの関数は精々30行程度に収めたい。
中括弧は省略できても省略しない。
小括弧も余程くどくない限り省略しない。
括弧等、対になる記号や処理がある場合はセットを先に作ってから内部を記述する。
比較演算子==の両辺のうち片方のみが変数ならば、これは右辺とする。
積極的にconstを使う。
My命名規則
変数名は全て小文字、定数は全て大文字(単語間はアンダーバー)、関数名は二単語目以降の先頭のみ大文字、構造体(クラス)名は単語の先頭のみ大文字、基本的に英単語で構成する
その他
while(1)よりもfor(;;)の方が一文字少ない(ほぼどうでもいい、というか力尽きたので寝ます・・・)
投稿2016/10/06 15:02
編集2016/10/06 15:04総合スコア4830
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
今日、ちょうど会社のエンジニアMTGでコーディング規約について触れていました。
いろいろとあったのですが、まとめるとフレームワークのルールに従うってことですかね。
投稿2016/10/06 14:14
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
習慣からかけ離れるほどコードの読み書き(特に書くこと)がつらくなるので、まずはより広い範囲で通用しそうなスタイルに従うのがいいと思います。Cの子孫の言語(C++, Java, C#, Scala, etc.)であれば概ねK&Rスタイルがよいと思います。
C
1if( a+1==b ){ // 非K&R。論理を作るよりこの規則の方がつらいと感じるプログラマーもいそう 2 invoke( a,b ); 3 int c,d; 4 5if (a + 1 == b) { // K&R 6 invoke(a, b); 7 int c, d;
スタイル以外についての一般論については範囲が広すぎて「小さく作る」「明快に作る」といった抽象的な言葉しかできてきそうもないので、あなた自身が様々な場面での失敗や勉強を通じて知見を得ていってくださいという応援しかできません・・・
投稿2016/10/05 03:09
総合スコア18392
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。