コーディングスタイルを統一する意味ってあるの?
■ このスレッドは過去ログ倉庫に格納されています
さすがに1つの関数内でごちゃまぜになってると気持ち悪いけど
別に関数違えばバラバラでも良くない?
統一することでなにかメリットあった?
良い書き方と悪い書き方があって、良い書き方に統一するという話ではなくて
どちらでも良い書き方のうち、どちらかに統一するのは
意味があるのか?って話ね func_20180417_103423とかいう文化圏で育った奴 たしかに重箱の隅をつつくような規約は効率が良くなるかどうか疑問だな
多少の表記のゆれよりきちんとモジュール化、カプセル化されてる方が大事 >>6
スタイルがバラバラで、なにか困るんですか? >>1
>良い書き方と悪い書き方があって、良い書き方に統一するという話ではなくて
それは、悪い書き方を制限するってとらえた方がいい
>どちらでも良い書き方のうち、どちらかに統一するのは
>意味があるのか?って話ね
どちらでも良い(構わない)なら、統一することが良い(望ましい)書き方だ
統一は制限の一種といえるし、そうすることで誰にとっても理解しやすくなる そう言われてみればコーディングスタイル決めてないけど
こまったことないわ >>11
だってほっとくと1000行超えてるのに関数に分けようとしねーし ステップ数で成果を測るのが嫌いなのに
ステップ数で関数を評価しようとするみなさん >>12
そんな分け方で良いはず無いだろw
機能単位で最少単位に分割しても1000行超えちまうなら諦めろ プログラマの給料は行数ベースの歩合制にすべき
そうすればこんな手抜きコードじゃなくて
001 for (i = 0; i < 10; i++) {
002 x[i] = func(i);
003 }
誰にでも分かりやすいこういうコードになるだろう
001 x_0 = func_0();
002 x_1 = func_1();
003 x_2 = func_2();
004 x_3 = func_3();
005 x_4 = func_4();
006 x_5 = func_5();
007 x_6 = func_6();
008 x_7 = func_7();
009 x_8 = func_8();
010 x_9 = func_9(); >>8
> どちらでも良い(構わない)なら、統一することが良い(望ましい)書き方だ
なんで?
> 統一は制限の一種といえるし、そうすることで誰にとっても理解しやすくなる
どちらでも良いってことは、人によっては自分のスタイルじゃないものを
強制されるってことですよ? 誰にとってもっていうのは違いますよね? >>17
せやな、日本人と韓国人と中国人が同じチームで作業したら
日本人は変数名や関数名に一番わかりやすい日本語名を付けるし
韓国人も中国人も自国語の名前を付けるのが一番効率いいわな
お互いのコードを見てもチンプンカンプンだけど開発効率を考えたらしょうがないよね
C言語のプロジェクトだけど俺はRubyが好きだから関数名は全部#defineでRubyっぽく書くよ
隣の人はCOBOLっぽいコードを書いてて全然わからんけどそれがその人にだけは一番わかりやすいんだからしょうがないね >>18
それは皮肉かなんかですか?
自然言語の違いは、コーディングスタイルじゃないでしょう?
別の話を混ぜないように
> C言語のプロジェクトだけど俺はRubyが好きだから関数名は全部#defineでRubyっぽく書くよ
これもコーディングスタイルじゃないですね コーディングスタイルを決めておかないと馬鹿が好き勝手に変なことやりだして、
説明したり、質問したりのコミュニケーションコストがかかるじゃん
そういう糞みたいな無駄な時間をすごしたくないじゃん
一人で開発してるなら好き勝手やればいい 一行のif分でも{}をつけろとか、こういうのはたしかにいらんよな 同じスタイルになっていれば、似たような処理の中の違いを拾いやすい。
関数分割・統合など既存コードを切り貼りする際にスタイルをどうするか考える必要が無い。 >>21
これ。
1人じゃなくても、お互いに信用できる程度の小規模チームならぶっちゃけいらない。
ただいつスポットで愚か者が手を出すことになるか分からんから、ある程度は決めておいた方が後々楽になるっていう経験則を多くのチームが持っているから規約を定めるんだと思う。 >>25
Appleがそれで盛大にミスってたんだよなあ
コーディングスタイルとかそういうの関係なくif文に{はつけるべき >>25
必要だと思うよ
絶対付ける
他の人に迷惑かけないために
lintで強制してほしい 一行のifなら
if(・・・) return 0;
みたいにすればOK あー、ごめんごめん
if (・・・) return 0;
ifの後にスペースが必要だったねw #define ERROR_CHECK(cond) if (cond) return 0
ERROR_CHECK(ret);
こうすべきだよね! 俺はコーディングする時は左足を上にして足を組むスタイルだけど、昔の同僚には椅子の上にあぐらかく奴もいたわ
ここらへんのスタイルも統一した方が良いのか とりあえず靴脱ぐのはいいがその足をこっちに向けるな >>41
アップルが実際にやらかしたバグ
if ((err = ReadyHash(&SSLHashSHA1, &hashCtx)) != 0)
goto fail;
if ((err = SSLHashSHA1.update(&hashCtx, &clientRandom)) != 0)
goto fail;
if ((err = SSLHashSHA1.update(&hashCtx, &serverRandom)) != 0)
goto fail;
if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0)
goto fail;
goto fail;
if ((err = SSLHashSHA1.final(&hashCtx, &hashOut)) != 0)
goto fail; >>45
いまのツールならオートインデントとか到達しないコードとかですぐ捕まりそうだけど
結構昔なのかな? >>45
あんまりまじめに読み込んでないんだけど、初見としてはgoto failが二つあるのが目に付いた >>46
相当古いコードか、偏屈な天才が謎の変なエディタに異様なこだわりを持っててそれを使ってたとか こう書いていれば一目瞭然だったのにね
if ((err = ReadyHash(&SSLHashSHA1, &hashCtx)) != 0) goto fail;
if ((err = SSLHashSHA1.update(&hashCtx, &clientRandom)) != 0) goto fail;
if ((err = SSLHashSHA1.update(&hashCtx, &serverRandom)) != 0) goto fail;
if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0) goto fail;
goto fail;
if ((err = SSLHashSHA1.final(&hashCtx, &hashOut)) != 0) goto fail; 2010年代に作られた言語はだいたい
ifの後に単体の文はかけない
必ずブロックがいる Cだと if if else のときどっちの if に対する else になるのか
未定義みたいな話なかったっけ? >>52
どう見ても近い方のifだろ
仕様は知らないけどそんなの未定義なの?んで遠い方のifにつながるコンパイラがあるの? 自分がコンパイラの気持ちになれば自ずと分かる話をいちいち説明させるなって事だよw 別にひと文ごとに英語や日本語その他の言語が入れ替わる文章でもOKっていうならいいんじゃない
つまり機能を満たしてればいいんでしょ? 防御的な意味で意味のあるものはある
if文等は一行だけでも中括弧で囲む
配列要素の区切りにはカンマを置く
とか
最近はIDE使うからあんまり意味ない気もする
つかlinterとかformatter使うから書いてるときはスタイル意識しない >>46
GCCやClangと言ったコンパイラに警告する機能はあるが
明示的に有効にしないと機能しないらしい Rubyで配列作るときに%()を使うかどうかですごい揉めてたことがあったな
これと[]リテラルが混在するとマジでバグの元になるからそういうところは統一した方がいいと思った if(honyarara){...}みたいに比較省略できるけど、あれが不具合の原因だと分かりづらいから、何と比較しているのか面倒でも書いて欲しい。
if(honyarara!=false)、if(honyarara!=NULL)、if(honyarara>0)、if(honyarara==true)とか。
同様に三項演算子使う場合も honyarara ? A : B みたいにしないで、(honyarara != false) ? A : B と書いて欲しい。 ただしこれは同意
> if(honyarara != NULL) >>60
Javascrptだと特に予期せぬバグになるからな、マジで >>62
コード中に全角スペースやめてくれ
賢いコンパイラはその旨言ってくれるけどそうでないと
場合によってはデバッグするのかなり大変なんだわ >>64
全角スペースか半角スペースかタブ文字かくらい一目で見分けが付くようにエディタ設定しとけやwww if(a.isEmpty()==true)
こんなの書いてたら知能に障害があるとしか思えない >>66
秀丸はできるけとVisual studioで設定できるの?
出来るならまじ教えてほしい >>60
例えばJavaScriptで明示的に真偽値としたいなら!!hogeみたいに二重否定してもいい
けどパッと見意味不明だし普通に書いた方がいいよな >!!hogeみたいに二重否定
!!うわー気持ち悪い
if(a.isEmpty())
シンプルにこれで問題ないと思う
もちろんメソッドが真偽値を返す前提で Visual Studioはそんなことも出来んのか
やっぱりVimがナンバーワン! 強い気持ちで否定するときに使ってほしいコード
return !!!!!!!!!!!!!!!!!!!!false; >>59
> Rubyで配列作るときに%()を使うかどうかですごい揉めてたことがあったな
根本的な原因は記号の数が足りないのがいけない
使わない制御コードなくして文字に変更しようぜ! 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
IIVY0 オブジェクト指向的に考えれば
クラスの内部なんて他のクラスからは知ったことではない
異なるクラスの間でスタイルを合わせる意味は全くない
馬鹿「データベースアクセスクラスとPDFクラスで書きかたが違うんですけどどういうことですか?」
賢者「それらは全く関係がない異なるクラスだからです」 メンテナという全てにアクセスするクラスがいるので統一は必要です キャメルかスネークかはそんな気にせんでも良いかなとは思う。 優劣が無いスタイルこそ規約で縛るべきなんだが
そんな当たり前のことも理解出来ないのか>>1は 実際のファイルのスタイルを変えずにエディタ上の編集は好きなスタイルでできるようにする、ってのはあかんか?
細かいとこで無理は出るだろうけど不可能じゃないよな
利点も薄い気はするが >82
一票!
改行位置とインデントだけでもかなり読みやすくなるし >>82
今はその方向性が主流
書くときはともかく保存時にフォーマッタに処理させる
フォーマッタに自動でやらせられないものもリンターに指摘させて後で直す ■ このスレッドは過去ログ倉庫に格納されています