IT, まとめ

コーディングスタイルを統一する意味ってあるの?

引用元: ・コーディングスタイルを統一する意味ってあるの?

1: デフォルトの名無しさん 2018/04/17(火) 10:57:52.15 ID:/iau8dFJ
さすがに1つの関数内でごちゃまぜになってると気持ち悪いけど
別に関数違えばバラバラでも良くない?
統一することでなにかメリットあった?

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

6: デフォルトの名無しさん 2018/04/17(火) 14:54:58.06 ID:ixI7lVkv
>>1
1人でやるならそれでいいんじゃね?
7: デフォルトの名無しさん 2018/04/17(火) 16:03:42.08 ID:/iau8dFJ
>>6
スタイルがバラバラで、なにか困るんですか?
8: デフォルトの名無しさん 2018/04/17(火) 20:11:43.68 ID:/+eZ0JZT
>>1
>良い書き方と悪い書き方があって、良い書き方に統一するという話ではなくて

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

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

どちらでも良い(構わない)なら、統一することが良い(望ましい)書き方だ
統一は制限の一種といえるし、そうすることで誰にとっても理解しやすくなる

17: デフォルトの名無しさん 2018/04/17(火) 22:04:23.99 ID:/iau8dFJ
>>8
> どちらでも良い(構わない)なら、統一することが良い(望ましい)書き方だ
なんで?

> 統一は制限の一種といえるし、そうすることで誰にとっても理解しやすくなる
どちらでも良いってことは、人によっては自分のスタイルじゃないものを
強制されるってことですよ? 誰にとってもっていうのは違いますよね?

18: デフォルトの名無しさん 2018/04/17(火) 22:34:52.85
>>17
せやな、日本人と韓国人と中国人が同じチームで作業したら
日本人は変数名や関数名に一番わかりやすい日本語名を付けるし
韓国人も中国人も自国語の名前を付けるのが一番効率いいわな
お互いのコードを見てもチンプンカンプンだけど開発効率を考えたらしょうがないよね

C言語のプロジェクトだけど俺はRubyが好きだから関数名は全部#defineでRubyっぽく書くよ
隣の人はCOBOLっぽいコードを書いてて全然わからんけどそれがその人にだけは一番わかりやすいんだからしょうがないね

19: デフォルトの名無しさん 2018/04/17(火) 22:52:29.01 ID:kfA9f4eg
>>18
変数名に日本語とかヤベエ奴じゃん
20: デフォルトの名無しさん 2018/04/17(火) 22:53:26.12 ID:/iau8dFJ
>>18
それは皮肉かなんかですか?
自然言語の違いは、コーディングスタイルじゃないでしょう?
別の話を混ぜないように

> C言語のプロジェクトだけど俺はRubyが好きだから関数名は全部#defineでRubyっぽく書くよ
これもコーディングスタイルじゃないですね

81: デフォルトの名無しさん 2018/07/05(木) 08:57:17.04 ID:53L3gqZU
優劣が無いスタイルこそ規約で縛るべきなんだが
そんな当たり前のことも理解出来ないのか>>1
2: デフォルトの名無しさん 2018/04/17(火) 12:36:46.88 ID:1GolraXE
func_20180417_103423とかいう文化圏で育った奴
3: デフォルトの名無しさん 2018/04/17(火) 13:26:47.13 ID:oudQnCi3
たしかに重箱の隅をつつくような規約は効率が良くなるかどうか疑問だな
多少の表記のゆれよりきちんとモジュール化、カプセル化されてる方が大事
4: デフォルトの名無しさん 2018/04/17(火) 14:29:08.12 ID:KPrnwj2Y
整形機能のあるIDEで1発終了だから気にしない。
5: デフォルトの名無しさん 2018/04/17(火) 14:52:38.93 ID:mpFiPQ3t
WBAWBC統一王者
9: デフォルトの名無しさん 2018/04/17(火) 20:18:18.96 ID:f7PKSmCj
そう言われてみればコーディングスタイル決めてないけど
こまったことないわ
10: デフォルトの名無しさん 2018/04/17(火) 20:23:05.26 ID:Z/PMm1Zv
いや一関数の行数制限だけはマジでかけてほしい
11: デフォルトの名無しさん 2018/04/17(火) 20:41:30.11 ID:f7PKSmCj
>>10
なんでや?
12: デフォルトの名無しさん 2018/04/17(火) 20:56:08.59 ID:Z/PMm1Zv
>>11
だってほっとくと1000行超えてるのに関数に分けようとしねーし
13: デフォルトの名無しさん 2018/04/17(火) 21:02:50.90 ID:f7PKSmCj
>>12
なんで関数分けるんや?
15: デフォルトの名無しさん 2018/04/17(火) 21:15:26.81 ID:KPrnwj2Y
>>12
そんな分け方で良いはず無いだろw
機能単位で最少単位に分割しても1000行超えちまうなら諦めろ
14: デフォルトの名無しさん 2018/04/17(火) 21:04:24.62 ID:f7PKSmCj
ステップ数で成果を測るのが嫌いなのに
ステップ数で関数を評価しようとするみなさん
16: デフォルトの名無しさん 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();

21: デフォルトの名無しさん 2018/04/18(水) 00:30:32.66 ID:CIIgyV33
コーディングスタイルを決めておかないと馬鹿が好き勝手に変なことやりだして、
説明したり、質問したりのコミュニケーションコストがかかるじゃん
そういう糞みたいな無駄な時間をすごしたくないじゃん
一人で開発してるなら好き勝手やればいい
22: デフォルトの名無しさん 2018/04/18(水) 00:49:52.00 ID:52qEUHSf
>>21
馬鹿と開発しなきゃいいのに
28: デフォルトの名無しさん 2018/04/18(水) 18:19:59.90 ID:H7I9iyKC
>>21
これ。
1人じゃなくても、お互いに信用できる程度の小規模チームならぶっちゃけいらない。
ただいつスポットで愚か者が手を出すことになるか分からんから、ある程度は決めておいた方が後々楽になるっていう経験則を多くのチームが持っているから規約を定めるんだと思う。
23: デフォルトの名無しさん 2018/04/18(水) 00:50:18.83 ID:52qEUHSf
なんで馬鹿と開発するんだろ
24: デフォルトの名無しさん 2018/04/18(水) 01:16:59.78 ID:CIIgyV33
働いたことないのかな
29: デフォルトの名無しさん 2018/04/18(水) 19:32:04.33 ID:BsJyLYoy
>>24
馬鹿とは働いたことない
25: デフォルトの名無しさん 2018/04/18(水) 03:30:06.22 ID:7zOfv67J
一行のif分でも{}をつけろとか、こういうのはたしかにいらんよな
27: デフォルトの名無しさん 2018/04/18(水) 12:48:57.42 ID:/eO0kjhF
>>25
なぜ?
30: デフォルトの名無しさん 2018/04/18(水) 19:33:45.48 ID:BsJyLYoy
>>25
Appleがそれで盛大にミスってたんだよなあ
コーディングスタイルとかそういうの関係なくif文に{はつけるべき
31: デフォルトの名無しさん 2018/04/18(水) 21:32:56.63 ID:FLvVXkO/
>>25
必要だと思うよ
絶対付ける
他の人に迷惑かけないために

lintで強制してほしい

26: デフォルトの名無しさん 2018/04/18(水) 07:47:15.76 ID:9pUXkCln
同じスタイルになっていれば、似たような処理の中の違いを拾いやすい。
関数分割・統合など既存コードを切り貼りする際にスタイルをどうするか考える必要が無い。
32: デフォルトの名無しさん 2018/04/18(水) 22:28:21.42 ID:yZY50SSw
一行のifなら

if(・・・) return 0;

みたいにすればOK

33: デフォルトの名無しさん 2018/04/18(水) 22:55:19.15 ID:FLvVXkO/
>>32
そういうの見ると死ねって思う
36: デフォルトの名無しさん 2018/04/18(水) 23:14:07.92 ID:ITlW1RMQ
>>33
なんで?(殺意)
37: デフォルトの名無しさん 2018/04/18(水) 23:27:00.47 ID:FLvVXkO/
>>36
バグの温床だから
41: デフォルトの名無しさん 2018/04/19(木) 12:06:43.81 ID:K/LVkPLf
>>37
なんで?(殺意)
45: デフォルトの名無しさん 2018/04/19(木) 19:19:03.44 ID: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;

46: デフォルトの名無しさん 2018/04/19(木) 20:06:51.62 ID:D+uDr/B/
>>45
いまのツールならオートインデントとか到達しないコードとかですぐ捕まりそうだけど
結構昔なのかな?
48: デフォルトの名無しさん 2018/04/19(木) 20:14:55.69 ID:qT/GtXSl
>>46
相当古いコードか、偏屈な天才が謎の変なエディタに異様なこだわりを持っててそれを使ってたとか
58: デフォルトの名無しさん 2018/04/22(日) 21:52:22.45 ID:Kip6eXci
>>46
GCCやClangと言ったコンパイラに警告する機能はあるが
明示的に有効にしないと機能しないらしい
47: デフォルトの名無しさん 2018/04/19(木) 20:10:25.45 ID:4CSAD5gH
>>45
あんまりまじめに読み込んでないんだけど、初見としてはgoto failが二つあるのが目に付いた
34: デフォルトの名無しさん 2018/04/18(水) 22:58:50.31 ID:yZY50SSw
あー、ごめんごめん

if (・・・) return 0;

ifの後にスペースが必要だったねw

35: デフォルトの名無しさん 2018/04/18(水) 23:14:02.68 ID:BsJyLYoy
これが馬鹿か
38: デフォルトの名無しさん 2018/04/19(木) 00:11:07.89
#define ERROR_CHECK(cond) if (cond) return 0

ERROR_CHECK(ret);

こうすべきだよね!

39: デフォルトの名無しさん 2018/04/19(木) 00:45:59.80 ID:LT7XffwA
コーディングスタイルとは関係ない話ばっかり
40: デフォルトの名無しさん 2018/04/19(木) 07:25:36.99 ID:kIK3R/E/
俺はコーディングする時は左足を上にして足を組むスタイルだけど、昔の同僚には椅子の上にあぐらかく奴もいたわ
ここらへんのスタイルも統一した方が良いのか
42: デフォルトの名無しさん 2018/04/19(木) 12:16:44.81 ID:P2Ts8AHc
椅子の上に正座するスタイルは?
43: デフォルトの名無しさん 2018/04/19(木) 16:18:59.20 ID:QjYlAcbY
ワイシャツにネクタイが基本スタイル
44: デフォルトの名無しさん 2018/04/19(木) 17:47:07.24
とりあえず靴脱ぐのはいいがその足をこっちに向けるな
49: デフォルトの名無しさん 2018/04/19(木) 21:35:03.72 ID: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;

50: デフォルトの名無しさん 2018/04/19(木) 21:55:26.47 ID:agF5d9pF
2010年代に作られた言語はだいたい
ifの後に単体の文はかけない
必ずブロックがいる
51: デフォルトの名無しさん 2018/04/19(木) 21:59:36.84 ID:LT7XffwA
2010年代に作られた言語ってなんや?
52: デフォルトの名無しさん 2018/04/19(木) 22:46:24.63 ID:TiqCtHYx
Cだと if if else のときどっちの if に対する else になるのか
未定義みたいな話なかったっけ?
54: デフォルトの名無しさん 2018/04/19(木) 23:32:11.67 ID:/GXx5a5x
>>52
どう見ても近い方のifだろ
仕様は知らないけどそんなの未定義なの?んで遠い方のifにつながるコンパイラがあるの?
53: デフォルトの名無しさん 2018/04/19(木) 22:46:34.90 ID:qT/GtXSl
Swiftとか?
55: デフォルトの名無しさん 2018/04/20(金) 21:28:24.42 ID:uy6ZTS8A
自分がコンパイラの気持ちになれば自ずと分かる話をいちいち説明させるなって事だよw
56: デフォルトの名無しさん 2018/04/21(土) 03:00:44.53 ID:0hRtl5v6
別にひと文ごとに英語や日本語その他の言語が入れ替わる文章でもOKっていうならいいんじゃない
つまり機能を満たしてればいいんでしょ?
57: デフォルトの名無しさん 2018/04/22(日) 21:41:59.04 ID:XoHZPHE0
防御的な意味で意味のあるものはある
if文等は一行だけでも中括弧で囲む
配列要素の区切りにはカンマを置く
とか
最近はIDE使うからあんまり意味ない気もする
つかlinterとかformatter使うから書いてるときはスタイル意識しない
59: デフォルトの名無しさん 2018/04/23(月) 08:13:43.28 ID:BjvECnGu
Rubyで配列作るときに%()を使うかどうかですごい揉めてたことがあったな
これと[]リテラルが混在するとマジでバグの元になるからそういうところは統一した方がいいと思った
75: デフォルトの名無しさん 2018/04/23(月) 21:52:24.00 ID:FGTQYpja
>>59
> Rubyで配列作るときに%()を使うかどうかですごい揉めてたことがあったな

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

使わない制御コードなくして文字に変更しようぜ!

60: デフォルトの名無しさん 2018/04/23(月) 11:09:34.75 ID:1i6WUaW3
if(honyarara){…}みたいに比較省略できるけど、あれが不具合の原因だと分かりづらいから、何と比較しているのか面倒でも書いて欲しい。
if(honyarara!=false)、if(honyarara!=NULL)、if(honyarara>>0)、if(honyarara==true)とか。
同様に三項演算子使う場合も honyarara ? A : B みたいにしないで、(honyarara != false) ? A : B と書いて欲しい。
63: デフォルトの名無しさん 2018/04/23(月) 12:02:18.74 ID:/uUuSWda
>>60
Javascrptだと特に予期せぬバグになるからな、マジで
65: デフォルトの名無しさん 2018/04/23(月) 12:17:06.31
>>60
boolに関しては書かないのが美しい
69: デフォルトの名無しさん 2018/04/23(月) 12:31:12.15 ID:5T3zNxGs
>>60
例えばJavaScriptで明示的に真偽値としたいなら!!hogeみたいに二重否定してもいい
けどパッと見意味不明だし普通に書いた方がいいよな
61: デフォルトの名無しさん 2018/04/23(月) 11:56:07.61 ID:khho7vfC
× 比較が省略できる

○ 正しい書き方

62: デフォルトの名無しさん 2018/04/23(月) 11:59:14.16 ID:khho7vfC
ただしこれは同意
> if(honyarara != NULL)
64: デフォルトの名無しさん 2018/04/23(月) 12:17:04.00 ID:V8pBnF9b
>>62
コード中に全角スペースやめてくれ
賢いコンパイラはその旨言ってくれるけどそうでないと
場合によってはデバッグするのかなり大変なんだわ
66: デフォルトの名無しさん 2018/04/23(月) 12:18:31.07
>>64
全角スペースか半角スペースかタブ文字かくらい一目で見分けが付くようにエディタ設定しとけやwww
68: デフォルトの名無しさん 2018/04/23(月) 12:24:33.24 ID:V8pBnF9b
>>66
秀丸はできるけとVisual studioで設定できるの?
出来るならまじ教えてほしい
67: デフォルトの名無しさん 2018/04/23(月) 12:24:05.98 ID:khho7vfC
if(a.isEmpty()==true)

こんなの書いてたら知能に障害があるとしか思えない

70: デフォルトの名無しさん 2018/04/23(月) 12:46:16.39 ID:6FYf21K/
>!!hogeみたいに二重否定
!!うわー気持ち悪い

if(a.isEmpty())

シンプルにこれで問題ないと思う
もちろんメソッドが真偽値を返す前提で

71: デフォルトの名無しさん 2018/04/23(月) 12:58:50.36 ID:ezZODi8g
Visual Studioはそんなことも出来んのか
やっぱりVimがナンバーワン!
72: デフォルトの名無しさん 2018/04/23(月) 14:37:38.62 ID:V8pBnF9b
強い気持ちで否定するときに使ってほしいコード

return !!!!!!!!!!!!!!!!!!!!false;

73: デフォルトの名無しさん 2018/04/23(月) 17:37:12.19 ID:f4PMmCW/
やめろ
74: デフォルトの名無しさん 2018/04/23(月) 20:34:56.70 ID:cBTTjRuD
明日から使えるidiomありがたい
76: デフォルトの名無しさん 2018/05/23(水) 19:40:52.42 ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

IIVY0

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

馬鹿「データベースアクセスクラスとPDFクラスで書きかたが違うんですけどどういうことですか?」
賢者「それらは全く関係がない異なるクラスだからです」

79: デフォルトの名無しさん 2018/07/05(木) 07:56:21.37 ID:qLOD4ZYT
メンテナという全てにアクセスするクラスがいるので統一は必要です
80: デフォルトの名無しさん 2018/07/05(木) 08:14:25.62 ID:68wCRvW6
キャメルかスネークかはそんな気にせんでも良いかなとは思う。
82: デフォルトの名無しさん 2018/07/10(火) 17:15:25.57 ID:hxdwH89H
実際のファイルのスタイルを変えずにエディタ上の編集は好きなスタイルでできるようにする、ってのはあかんか?
細かいとこで無理は出るだろうけど不可能じゃないよな
利点も薄い気はするが
83: デフォルトの名無しさん 2018/07/28(土) 09:28:42.74 ID:E7c9fNX3
>>82
一票!
改行位置とインデントだけでもかなり読みやすくなるし
84: デフォルトの名無しさん 2018/07/28(土) 19:35:15.01 ID:g5xPw0Dm
>>82
今はその方向性が主流
書くときはともかく保存時にフォーマッタに処理させる
フォーマッタに自動でやらせられないものもリンターに指摘させて後で直す

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です