X



コーディングスタイルを統一する意味ってあるの?
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2018/04/17(火) 10:57:52.15ID:/iau8dFJ
さすがに1つの関数内でごちゃまぜになってると気持ち悪いけど
別に関数違えばバラバラでも良くない?
統一することでなにかメリットあった?

良い書き方と悪い書き方があって、良い書き方に統一するという話ではなくて
どちらでも良い書き方のうち、どちらかに統一するのは
意味があるのか?って話ね
0003デフォルトの名無しさん
垢版 |
2018/04/17(火) 13:26:47.13ID:oudQnCi3
たしかに重箱の隅をつつくような規約は効率が良くなるかどうか疑問だな
多少の表記のゆれよりきちんとモジュール化、カプセル化されてる方が大事
0005デフォルトの名無しさん
垢版 |
2018/04/17(火) 14:52:38.93ID:mpFiPQ3t
WBAWBC統一王者
0008デフォルトの名無しさん
垢版 |
2018/04/17(火) 20:11:43.68ID:/+eZ0JZT
>>1
>良い書き方と悪い書き方があって、良い書き方に統一するという話ではなくて

それは、悪い書き方を制限するってとらえた方がいい

>どちらでも良い書き方のうち、どちらかに統一するのは
>意味があるのか?って話ね

どちらでも良い(構わない)なら、統一することが良い(望ましい)書き方だ
統一は制限の一種といえるし、そうすることで誰にとっても理解しやすくなる
0009デフォルトの名無しさん
垢版 |
2018/04/17(火) 20:18:18.96ID:f7PKSmCj
そう言われてみればコーディングスタイル決めてないけど
こまったことないわ
0011デフォルトの名無しさん
垢版 |
2018/04/17(火) 20:41:30.11ID:f7PKSmCj
>>10
なんでや?
0013デフォルトの名無しさん
垢版 |
2018/04/17(火) 21:02:50.90ID:f7PKSmCj
>>12
なんで関数分けるんや?
0014デフォルトの名無しさん
垢版 |
2018/04/17(火) 21:04:24.62ID:f7PKSmCj
ステップ数で成果を測るのが嫌いなのに
ステップ数で関数を評価しようとするみなさん
0015デフォルトの名無しさん
垢版 |
2018/04/17(火) 21:15:26.81ID:KPrnwj2Y
>>12
そんな分け方で良いはず無いだろw
機能単位で最少単位に分割しても1000行超えちまうなら諦めろ
0016デフォルトの名無しさん
垢版 |
2018/04/17(火) 21:35:41.97
プログラマの給料は行数ベースの歩合制にすべき

そうすればこんな手抜きコードじゃなくて
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();
0017デフォルトの名無しさん
垢版 |
2018/04/17(火) 22:04:23.99ID:/iau8dFJ
>>8
> どちらでも良い(構わない)なら、統一することが良い(望ましい)書き方だ
なんで?

> 統一は制限の一種といえるし、そうすることで誰にとっても理解しやすくなる
どちらでも良いってことは、人によっては自分のスタイルじゃないものを
強制されるってことですよ? 誰にとってもっていうのは違いますよね?
0018デフォルトの名無しさん
垢版 |
2018/04/17(火) 22:34:52.85
>>17
せやな、日本人と韓国人と中国人が同じチームで作業したら
日本人は変数名や関数名に一番わかりやすい日本語名を付けるし
韓国人も中国人も自国語の名前を付けるのが一番効率いいわな
お互いのコードを見てもチンプンカンプンだけど開発効率を考えたらしょうがないよね

C言語のプロジェクトだけど俺はRubyが好きだから関数名は全部#defineでRubyっぽく書くよ
隣の人はCOBOLっぽいコードを書いてて全然わからんけどそれがその人にだけは一番わかりやすいんだからしょうがないね
0020デフォルトの名無しさん
垢版 |
2018/04/17(火) 22:53:26.12ID:/iau8dFJ
>>18
それは皮肉かなんかですか?
自然言語の違いは、コーディングスタイルじゃないでしょう?
別の話を混ぜないように

> C言語のプロジェクトだけど俺はRubyが好きだから関数名は全部#defineでRubyっぽく書くよ
これもコーディングスタイルじゃないですね
0021デフォルトの名無しさん
垢版 |
2018/04/18(水) 00:30:32.66ID:CIIgyV33
コーディングスタイルを決めておかないと馬鹿が好き勝手に変なことやりだして、
説明したり、質問したりのコミュニケーションコストがかかるじゃん
そういう糞みたいな無駄な時間をすごしたくないじゃん
一人で開発してるなら好き勝手やればいい
0022デフォルトの名無しさん
垢版 |
2018/04/18(水) 00:49:52.00ID:52qEUHSf
>>21
馬鹿と開発しなきゃいいのに
0023デフォルトの名無しさん
垢版 |
2018/04/18(水) 00:50:18.83ID:52qEUHSf
なんで馬鹿と開発するんだろ
0026デフォルトの名無しさん
垢版 |
2018/04/18(水) 07:47:15.76ID:9pUXkCln
同じスタイルになっていれば、似たような処理の中の違いを拾いやすい。
関数分割・統合など既存コードを切り貼りする際にスタイルをどうするか考える必要が無い。
0028デフォルトの名無しさん
垢版 |
2018/04/18(水) 18:19:59.90ID:H7I9iyKC
>>21
これ。
1人じゃなくても、お互いに信用できる程度の小規模チームならぶっちゃけいらない。
ただいつスポットで愚か者が手を出すことになるか分からんから、ある程度は決めておいた方が後々楽になるっていう経験則を多くのチームが持っているから規約を定めるんだと思う。
0029デフォルトの名無しさん
垢版 |
2018/04/18(水) 19:32:04.33ID:BsJyLYoy
>>24
馬鹿とは働いたことない
0030デフォルトの名無しさん
垢版 |
2018/04/18(水) 19:33:45.48ID:BsJyLYoy
>>25
Appleがそれで盛大にミスってたんだよなあ
コーディングスタイルとかそういうの関係なくif文に{はつけるべき
0035デフォルトの名無しさん
垢版 |
2018/04/18(水) 23:14:02.68ID:BsJyLYoy
これが馬鹿か
0038デフォルトの名無しさん
垢版 |
2018/04/19(木) 00:11:07.89
#define ERROR_CHECK(cond) if (cond) return 0

ERROR_CHECK(ret);

こうすべきだよね!
0040デフォルトの名無しさん
垢版 |
2018/04/19(木) 07:25:36.99ID:kIK3R/E/
俺はコーディングする時は左足を上にして足を組むスタイルだけど、昔の同僚には椅子の上にあぐらかく奴もいたわ
ここらへんのスタイルも統一した方が良いのか
0044デフォルトの名無しさん
垢版 |
2018/04/19(木) 17:47:07.24
とりあえず靴脱ぐのはいいがその足をこっちに向けるな
0045デフォルトの名無しさん
垢版 |
2018/04/19(木) 19:19:03.44ID:r6J+JAu5
>>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;
0046デフォルトの名無しさん
垢版 |
2018/04/19(木) 20:06:51.62ID:D+uDr/B/
>>45
いまのツールならオートインデントとか到達しないコードとかですぐ捕まりそうだけど
結構昔なのかな?
0047デフォルトの名無しさん
垢版 |
2018/04/19(木) 20:10:25.45ID:4CSAD5gH
>>45
あんまりまじめに読み込んでないんだけど、初見としてはgoto failが二つあるのが目に付いた
0048デフォルトの名無しさん
垢版 |
2018/04/19(木) 20:14:55.69ID:qT/GtXSl
>>46
相当古いコードか、偏屈な天才が謎の変なエディタに異様なこだわりを持っててそれを使ってたとか
0049デフォルトの名無しさん
垢版 |
2018/04/19(木) 21:35:03.72ID:LT7XffwA
こう書いていれば一目瞭然だったのにね

  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;
0050デフォルトの名無しさん
垢版 |
2018/04/19(木) 21:55:26.47ID:agF5d9pF
2010年代に作られた言語はだいたい
ifの後に単体の文はかけない
必ずブロックがいる
0052デフォルトの名無しさん
垢版 |
2018/04/19(木) 22:46:24.63ID:TiqCtHYx
Cだと if if else のときどっちの if に対する else になるのか
未定義みたいな話なかったっけ?
0054デフォルトの名無しさん
垢版 |
2018/04/19(木) 23:32:11.67ID:/GXx5a5x
>>52
どう見ても近い方のifだろ
仕様は知らないけどそんなの未定義なの?んで遠い方のifにつながるコンパイラがあるの?
0055デフォルトの名無しさん
垢版 |
2018/04/20(金) 21:28:24.42ID:uy6ZTS8A
自分がコンパイラの気持ちになれば自ずと分かる話をいちいち説明させるなって事だよw
0056デフォルトの名無しさん
垢版 |
2018/04/21(土) 03:00:44.53ID:0hRtl5v6
別にひと文ごとに英語や日本語その他の言語が入れ替わる文章でもOKっていうならいいんじゃない
つまり機能を満たしてればいいんでしょ?
0057デフォルトの名無しさん
垢版 |
2018/04/22(日) 21:41:59.04ID:XoHZPHE0
防御的な意味で意味のあるものはある
if文等は一行だけでも中括弧で囲む
配列要素の区切りにはカンマを置く
とか
最近はIDE使うからあんまり意味ない気もする
つかlinterとかformatter使うから書いてるときはスタイル意識しない
0058デフォルトの名無しさん
垢版 |
2018/04/22(日) 21:52:22.45ID:Kip6eXci
>>46
GCCやClangと言ったコンパイラに警告する機能はあるが
明示的に有効にしないと機能しないらしい
0059デフォルトの名無しさん
垢版 |
2018/04/23(月) 08:13:43.28ID:BjvECnGu
Rubyで配列作るときに%()を使うかどうかですごい揉めてたことがあったな
これと[]リテラルが混在するとマジでバグの元になるからそういうところは統一した方がいいと思った
0060デフォルトの名無しさん
垢版 |
2018/04/23(月) 11:09:34.75ID:1i6WUaW3
if(honyarara){...}みたいに比較省略できるけど、あれが不具合の原因だと分かりづらいから、何と比較しているのか面倒でも書いて欲しい。
if(honyarara!=false)、if(honyarara!=NULL)、if(honyarara>0)、if(honyarara==true)とか。
同様に三項演算子使う場合も honyarara ? A : B みたいにしないで、(honyarara != false) ? A : B と書いて欲しい。
0064デフォルトの名無しさん
垢版 |
2018/04/23(月) 12:17:04.00ID:V8pBnF9b
>>62
コード中に全角スペースやめてくれ
賢いコンパイラはその旨言ってくれるけどそうでないと
場合によってはデバッグするのかなり大変なんだわ
0065デフォルトの名無しさん
垢版 |
2018/04/23(月) 12:17:06.31
>>60
boolに関しては書かないのが美しい
0066デフォルトの名無しさん
垢版 |
2018/04/23(月) 12:18:31.07
>>64
全角スペースか半角スペースかタブ文字かくらい一目で見分けが付くようにエディタ設定しとけやwww
0069デフォルトの名無しさん
垢版 |
2018/04/23(月) 12:31:12.15ID:5T3zNxGs
>>60
例えばJavaScriptで明示的に真偽値としたいなら!!hogeみたいに二重否定してもいい
けどパッと見意味不明だし普通に書いた方がいいよな
0070デフォルトの名無しさん
垢版 |
2018/04/23(月) 12:46:16.39ID:6FYf21K/
>!!hogeみたいに二重否定
!!うわー気持ち悪い

if(a.isEmpty())

シンプルにこれで問題ないと思う
もちろんメソッドが真偽値を返す前提で
0075デフォルトの名無しさん
垢版 |
2018/04/23(月) 21:52:24.00ID:FGTQYpja
>>59
> Rubyで配列作るときに%()を使うかどうかですごい揉めてたことがあったな

根本的な原因は記号の数が足りないのがいけない

使わない制御コードなくして文字に変更しようぜ!
0076デフォルトの名無しさん
垢版 |
2018/05/23(水) 19:40:52.42ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

IIVY0
0077デフォルトの名無しさん
垢版 |
2018/07/05(木) 01:50:59.17ID:RfoszcD2
ZXS
0078デフォルトの名無しさん
垢版 |
2018/07/05(木) 06:16:45.11ID:OTfP6cvC
オブジェクト指向的に考えれば
クラスの内部なんて他のクラスからは知ったことではない
異なるクラスの間でスタイルを合わせる意味は全くない

馬鹿「データベースアクセスクラスとPDFクラスで書きかたが違うんですけどどういうことですか?」
賢者「それらは全く関係がない異なるクラスだからです」
0081デフォルトの名無しさん
垢版 |
2018/07/05(木) 08:57:17.04ID:53L3gqZU
優劣が無いスタイルこそ規約で縛るべきなんだが
そんな当たり前のことも理解出来ないのか>>1
0082デフォルトの名無しさん
垢版 |
2018/07/10(火) 17:15:25.57ID:hxdwH89H
実際のファイルのスタイルを変えずにエディタ上の編集は好きなスタイルでできるようにする、ってのはあかんか?
細かいとこで無理は出るだろうけど不可能じゃないよな
利点も薄い気はするが
0084デフォルトの名無しさん
垢版 |
2018/07/28(土) 19:35:15.01ID:g5xPw0Dm
>>82
今はその方向性が主流
書くときはともかく保存時にフォーマッタに処理させる
フォーマッタに自動でやらせられないものもリンターに指摘させて後で直す
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況