C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/
C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf
C99
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
http://kikakurui.com/x3/X3010-2003-01.html
C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/
JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/
前
C言語なら俺に聞け 146
https://mevius.5ch.net/test/read.cgi/tech/1525031257/
探検
C言語なら俺に聞け 147
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2018/08/16(木) 23:36:02.22ID:fOCSKLtw114デフォルトの名無しさん
2018/08/22(水) 09:35:21.99ID:ULC6Ul0L115114
2018/08/22(水) 09:36:42.99ID:ULC6Ul0L ごめん、ちがた
116デフォルトの名無しさん
2018/08/22(水) 09:52:30.97ID:2YTphjWh >>107
条件を判断するためだけにLOCK/UNLOCKを行うコードだとしたら最悪のコードだ
do {
LOCK
判断
UNLOCK
if (!判断結果)break;
} while (1);
素直にこうしなさい
条件を判断するためだけにLOCK/UNLOCKを行うコードだとしたら最悪のコードだ
do {
LOCK
判断
UNLOCK
if (!判断結果)break;
} while (1);
素直にこうしなさい
117デフォルトの名無しさん
2018/08/22(水) 11:11:08.70ID:yAP1ongv 条件判断が目的じゃないと思うぞ
118デフォルトの名無しさん
2018/08/22(水) 11:35:04.81ID:yJL450CM どこが素直なんだ
締め切りが迫ってバグが取れず
なりふり構ってらんなくなったやつが書く
イカレたコードでしかない
締め切りが迫ってバグが取れず
なりふり構ってらんなくなったやつが書く
イカレたコードでしかない
119デフォルトの名無しさん
2018/08/22(水) 11:58:31.90ID:DbwOmzYq >>116
これは酷いw
これは酷いw
120デフォルトの名無しさん
2018/08/22(水) 12:04:07.83ID:MGgq/0yt イカれたコードを紹介するぜ
121デフォルトの名無しさん
2018/08/22(水) 12:27:28.23ID:2YTphjWh ん?
一番素直だろうが
条件判断の為だけにLOCKしてるという前提で
判断を関数に分ける?
分けるかどうかはこんなちっぽけな理由で判断するべきじゃないよ
判断の度に関数にしてたら意味不明な関数で溢れるぞ
もちろん意味が明瞭で他にも同じ判断を使う可能性があるのであれば
関数やマクロでパッキングすべきだが
一番素直だろうが
条件判断の為だけにLOCKしてるという前提で
判断を関数に分ける?
分けるかどうかはこんなちっぽけな理由で判断するべきじゃないよ
判断の度に関数にしてたら意味不明な関数で溢れるぞ
もちろん意味が明瞭で他にも同じ判断を使う可能性があるのであれば
関数やマクロでパッキングすべきだが
122デフォルトの名無しさん
2018/08/22(水) 12:36:44.83ID:yJL450CM LOCK
判断
UNLOCK
というアトミックなシーケンスを関数にする理由はちっぽけじゃない
LOCK/UNLOCKが必要な具体的な場面を想定しての発言には見えない
判断
UNLOCK
というアトミックなシーケンスを関数にする理由はちっぽけじゃない
LOCK/UNLOCKが必要な具体的な場面を想定しての発言には見えない
123デフォルトの名無しさん
2018/08/22(水) 12:50:05.96ID:2YTphjWh124デフォルトの名無しさん
2018/08/22(水) 13:02:48.20ID:Xk7aTjF/ >>123
いやー、わからんのはあなたに実務もしくは勉強の経験がないからよ
いやー、わからんのはあなたに実務もしくは勉強の経験がないからよ
125デフォルトの名無しさん
2018/08/22(水) 13:14:18.16ID:yJL450CM 昨日のvoid func(int ary[100]);にしても
ary[1000]を警告する処理系の具体的な例が挙がってないしな
ary[1000]を警告する処理系の具体的な例が挙がってないしな
126デフォルトの名無しさん
2018/08/22(水) 13:39:37.67ID:2YTphjWh127デフォルトの名無しさん
2018/08/22(水) 14:01:43.77ID:yJL450CM 間違いない、昨日のバカだ
NGIDっと
NGIDっと
128デフォルトの名無しさん
2018/08/22(水) 14:12:07.92ID:JOaq3c53 >>127
そういうあなたは昨日のイキってた方の人?
そういうあなたは昨日のイキってた方の人?
129デフォルトの名無しさん
2018/08/22(水) 14:15:28.00ID:J6lVaoNe パッと見て何をしているか分からないソースって
後の人が取っても苦労するし、気の毒
後の人が取っても苦労するし、気の毒
130デフォルトの名無しさん
2018/08/22(水) 14:19:13.21ID:J6lVaoNe 多分書いた人の意図は
while文内の判定時に
LOCKしたいのかとは思うが
while文内の判定時に
LOCKしたいのかとは思うが
131デフォルトの名無しさん
2018/08/22(水) 14:26:31.81ID:TfhbroeT while ( ^∀^)
132デフォルトの名無しさん
2018/08/22(水) 15:10:17.96ID:44OVOulF check_func()というアドホックっぽい関数名が誤解のもとかな
get条件atomically()にすれば意図が明白
get条件atomically()にすれば意図が明白
133デフォルトの名無しさん
2018/08/22(水) 15:19:38.80ID:yJL450CM atomicallyって文言いるかねえ
いちいち全部につけて回るより
LOCK/UNLOCKしてることは
忘れたフリができるほうがいいと思うが
いちいち全部につけて回るより
LOCK/UNLOCKしてることは
忘れたフリができるほうがいいと思うが
134デフォルトの名無しさん
2018/08/22(水) 16:17:52.89ID:BT6ndhEb 英語圏の人には for (;;) をまとめて熟語的に "forever" と読めて
座りがいいのかも知れん。
カーニハンとパイクの『プログラミング作法』に
それに近いようなことが書いてあった。
座りがいいのかも知れん。
カーニハンとパイクの『プログラミング作法』に
それに近いようなことが書いてあった。
135デフォルトの名無しさん
2018/08/22(水) 16:25:37.12ID:6OOlmfSC >>133
条件取得の関数がすでにあってそれがアトミックでないケースも想定
条件取得の関数がすでにあってそれがアトミックでないケースも想定
136デフォルトの名無しさん
2018/08/22(水) 16:31:28.34ID:UfcjGeQr137デフォルトの名無しさん
2018/08/22(水) 16:44:34.35ID:AU3mefLA138デフォルトの名無しさん
2018/08/22(水) 16:54:07.40ID:yJL450CM139134
2018/08/22(水) 17:01:35.42ID:BT6ndhEb 「その部分のループ、終了条件が色々なんでとりあえず for (;;) で回して」
みたいな口答でのやりとりで for (;;) を forever と読めば手っ取り早いでしょ。
while (1) で…よりも言いやすいんじゃないかと。
これは空想論だけどね。
みたいな口答でのやりとりで for (;;) を forever と読めば手っ取り早いでしょ。
while (1) で…よりも言いやすいんじゃないかと。
これは空想論だけどね。
140デフォルトの名無しさん
2018/08/22(水) 17:28:26.65ID:yJL450CM 無限ループで済むことを
forの第2式を空欄で
なんて回りくどい言い方しねえよ
forの第2式を空欄で
なんて回りくどい言い方しねえよ
141デフォルトの名無しさん
2018/08/22(水) 17:52:35.43ID:l5cdWJfA142デフォルトの名無しさん
2018/08/22(水) 17:59:10.07ID:l5cdWJfA143デフォルトの名無しさん
2018/08/22(水) 18:07:38.93ID:yJL450CM144デフォルトの名無しさん
2018/08/22(水) 18:22:36.66ID:PnEe4J3b マウント取りたくて必死なアスペだから仕方ない
145デフォルトの名無しさん
2018/08/22(水) 18:30:03.99ID:l5cdWJfA 口頭で
forの第2式を空欄で
なんて発想は出て来なかった
forの第2式を空欄で
なんて発想は出て来なかった
146デフォルトの名無しさん
2018/08/22(水) 20:52:31.01ID:ROURn6Ut for ( ;∀;)
147デフォルトの名無しさん
2018/08/22(水) 21:21:35.96ID:yJL450CM > while (条件)でしかループが組めないのはちょっとさみしい
ここは同意
while(1) であろうが for(;;) であろうが同じこと
どっちかが好みで他方で書かれたからって可読性が落ちたとか騒ぐ
救いようのないドアホには付き合ってらんね
それだけだ
ここは同意
while(1) であろうが for(;;) であろうが同じこと
どっちかが好みで他方で書かれたからって可読性が落ちたとか騒ぐ
救いようのないドアホには付き合ってらんね
それだけだ
148デフォルトの名無しさん
2018/08/22(水) 21:23:43.06ID:82KbBjx+ >>116を認めないお前も同じようなものかと
149デフォルトの名無しさん
2018/08/22(水) 21:26:52.07ID:MwkxeX8r whileで無限ループする場合、0じゃなければ1以外を
使ってもいいわけだがどうする?
電話番号とか使えばオシャレかもしれないよ
使ってもいいわけだがどうする?
電話番号とか使えばオシャレかもしれないよ
150デフォルトの名無しさん
2018/08/22(水) 21:27:18.15ID:JglTnHlJ とりあえず、おかしなのに絡まれた >>134 に同情を禁じ得ない。
151デフォルトの名無しさん
2018/08/22(水) 21:28:19.40ID:yJL450CM 別にiocccのコードが読めろとか言ってない
int *aryがint ary[100]じゃなきゃ読めないとかぬかしたり
while(1)がfor(;;)じゃなきゃ読めないとかぬかす
想像を絶するアホには付き合ってらんねつってるだけ
lock/doit/unlockを関数化する必要性がわからないアホも含まれる
int *aryがint ary[100]じゃなきゃ読めないとかぬかしたり
while(1)がfor(;;)じゃなきゃ読めないとかぬかす
想像を絶するアホには付き合ってらんねつってるだけ
lock/doit/unlockを関数化する必要性がわからないアホも含まれる
152デフォルトの名無しさん
2018/08/22(水) 21:33:30.14ID:Jjipv9/i153デフォルトの名無しさん
2018/08/22(水) 21:42:00.39ID:yJL450CM じゃあ喚くのやめろ
うるせえんだよ
うるせえんだよ
154デフォルトの名無しさん
2018/08/22(水) 21:43:08.30ID:Jjipv9/i >>153
やっぱり日本語不自由な人なんだw
やっぱり日本語不自由な人なんだw
155デフォルトの名無しさん
2018/08/22(水) 21:51:19.93ID:Vzjpb7lE 何がじゃあなのかわからない
思考がbool値しかないのか
思考がbool値しかないのか
156デフォルトの名無しさん
2018/08/22(水) 21:51:23.19ID:wgajpaTM アトミックな操作の意味がわかってたらああはならんのですよ
157デフォルトの名無しさん
2018/08/22(水) 21:52:48.42ID:Vzjpb7lE 世の糞コードのほとんどはコミュニケーションの失敗により発生する
158デフォルトの名無しさん
2018/08/22(水) 21:54:35.09ID:Jjipv9/i C言語以前に日本語もちゃんと理解できない人と議論が噛み合うわけない。
相手しただけ損したわ、アホらしい。
相手しただけ損したわ、アホらしい。
159デフォルトの名無しさん
2018/08/22(水) 22:02:56.29ID:yJL450CM 勝手に損してろ
誰にも賠償請求できない
泣き寝入りだな
アホw バカwww
誰にも賠償請求できない
泣き寝入りだな
アホw バカwww
160デフォルトの名無しさん
2018/08/22(水) 22:05:01.83ID:Jjipv9/i はいはい、ちゃんとにほんごをべんきょうしてりかいできるようになってから、かきこんでくださいね。
161デフォルトの名無しさん
2018/08/22(水) 22:13:51.56ID:RPMrdt6N まあ概ね ID:yJL450CM が言っていることは正しい。
>>107のコードは、かなり特殊で、普通はあり得ない。
キモイかと問われれば、キモイと答えるのが正しい。
(必要ならやればいいが)
>>116
それはdo-whileの標準的使い方とは異なるので、混乱を招く。
>>132
check_func()は、107を書き直した場所がすぐに分かる名前にしただけ。
実際、問題なく伝わってるだろ。
本番コードでこの名前はあり得ない。名前が被るから。
ただ、正直、こんなどうでもいいところで拘るのは止めた方がいい。上達しなくなる。
どれでもいいから自分が好きなのを選び、グダグダ言わずにどんどん書いた方がいい。
なお、Goにはwhileが無い。廃止されて、forだけになっている。
ちなみに、俺は
固定長ループ(単純ループ): for … for (int i=0;i<num;i++) 程度の簡単な場合は常にこれ
可変長ループ(複雑なループ): while
無限ループ: while (1)
do-while: 使わない
にしているが、正直、ここら辺は好みだし、自分がどう決めるかだけ。(上記は標準的だとも思っているが)
それよりは、自分の中で統一するほうが重要だ。
(少なくとも自分が書いたコードを読むときに混乱しなくなる)
業務なら、グダグダ言わずコーディングルールに従えばいい。
場所によってはwhileとforのどちらかが禁止とかもある。(どっちかは忘れた)
理由はバグって無限ループにしてしまったときにコード上から判定しづらいとかだったはず。
>>107のコードは、かなり特殊で、普通はあり得ない。
キモイかと問われれば、キモイと答えるのが正しい。
(必要ならやればいいが)
>>116
それはdo-whileの標準的使い方とは異なるので、混乱を招く。
>>132
check_func()は、107を書き直した場所がすぐに分かる名前にしただけ。
実際、問題なく伝わってるだろ。
本番コードでこの名前はあり得ない。名前が被るから。
ただ、正直、こんなどうでもいいところで拘るのは止めた方がいい。上達しなくなる。
どれでもいいから自分が好きなのを選び、グダグダ言わずにどんどん書いた方がいい。
なお、Goにはwhileが無い。廃止されて、forだけになっている。
ちなみに、俺は
固定長ループ(単純ループ): for … for (int i=0;i<num;i++) 程度の簡単な場合は常にこれ
可変長ループ(複雑なループ): while
無限ループ: while (1)
do-while: 使わない
にしているが、正直、ここら辺は好みだし、自分がどう決めるかだけ。(上記は標準的だとも思っているが)
それよりは、自分の中で統一するほうが重要だ。
(少なくとも自分が書いたコードを読むときに混乱しなくなる)
業務なら、グダグダ言わずコーディングルールに従えばいい。
場所によってはwhileとforのどちらかが禁止とかもある。(どっちかは忘れた)
理由はバグって無限ループにしてしまったときにコード上から判定しづらいとかだったはず。
162107
2018/08/22(水) 22:19:27.48ID:Vm7yolE7 非常にくだらない質問にレス付けてくれてサンクス
なんか荒れる原因つくってスマンかった
やっぱりあの書き方きめえよなあ・・・
なんか荒れる原因つくってスマンかった
やっぱりあの書き方きめえよなあ・・・
163デフォルトの名無しさん
2018/08/22(水) 22:57:41.03ID:RPMrdt6N >>112
> LOCK, UNLOCKのインデントがズレててキモい
これは諦めろ。
酷い話、インデントがぴったり合ってないと駄目な奴はプログラマに向いてない。
どうやってもずれるからだ。
googleのコーディングルールにも昔は
・インデントを揃える努力は、キリがないしやるだけ無駄だから諦めろ
と書いてあったはず。(今見る限りないが)
ちなみにキモイ理由は、インデントではなくて、完全に入れ子になっていないからだ。
最近はこの「入れ子」の厳密さも増していて、XML(HTML等)では入れ子しか文法的に認めないだろ。
例えば、
<while>
</while>
ならありだが、
<lock>
<while>
</lock>
</while>
は駄目で、
<while>
<lock>
</lock>
</while>
にしなければならない。
> LOCK, UNLOCKのインデントがズレててキモい
これは諦めろ。
酷い話、インデントがぴったり合ってないと駄目な奴はプログラマに向いてない。
どうやってもずれるからだ。
googleのコーディングルールにも昔は
・インデントを揃える努力は、キリがないしやるだけ無駄だから諦めろ
と書いてあったはず。(今見る限りないが)
ちなみにキモイ理由は、インデントではなくて、完全に入れ子になっていないからだ。
最近はこの「入れ子」の厳密さも増していて、XML(HTML等)では入れ子しか文法的に認めないだろ。
例えば、
<while>
</while>
ならありだが、
<lock>
<while>
</lock>
</while>
は駄目で、
<while>
<lock>
</lock>
</while>
にしなければならない。
164デフォルトの名無しさん
2018/08/23(木) 00:15:44.74ID:wxGNRrqx >>161
do while の標準的な使い方?
無限ループも標準的な使い方ですよ
do whileはforやwhileに比べてパフォーマンスが良いことがあるので
使える時には積極的に使う人もいます
do whileを一切使わない人もいますが
do while の標準的な使い方?
無限ループも標準的な使い方ですよ
do whileはforやwhileに比べてパフォーマンスが良いことがあるので
使える時には積極的に使う人もいます
do whileを一切使わない人もいますが
165デフォルトの名無しさん
2018/08/23(木) 00:29:51.18ID:qYtPM3Ou166デフォルトの名無しさん
2018/08/23(木) 00:38:41.07ID:wxGNRrqx ロックしたい対象がわかりづらい
同じ用途のロック/アンロックが2箇所ずつある
同じ用途のロック/アンロックが2箇所ずつある
167デフォルトの名無しさん
2018/08/23(木) 00:40:13.64ID:wxGNRrqx C++の場合だと
無駄にロック期間が長くなる可能性がある
無駄にロック期間が長くなる可能性がある
168デフォルトの名無しさん
2018/08/23(木) 00:53:05.68ID:/qY100we >>167
なんで?
なんで?
169デフォルトの名無しさん
2018/08/23(木) 00:59:32.58ID:HinwMmX/ 頭が良い人ならすぐに意図がくみ取れるけど
メンテする人が必ずしも頭が良いとは限らない
コメント書いてもバグではまって始めて読まれたりするからね
ワザと作られた落とし穴なんて受けとられる危険もありそう
バカでも分かるような書き方をする方が安全かなと思う
メンテする人が必ずしも頭が良いとは限らない
コメント書いてもバグではまって始めて読まれたりするからね
ワザと作られた落とし穴なんて受けとられる危険もありそう
バカでも分かるような書き方をする方が安全かなと思う
170デフォルトの名無しさん
2018/08/23(木) 01:59:34.18ID:y9Wx8uZn >>164
>>116のコードは、while (1) で開始しても同じだし、(=do-whileを使う意味がない)
そもそも>>113に比べてメリットもないだろ。
そこで do-while 使う奴なんて皆無だと思うぞ。
まあそれでもやりたければやればいい。
個人開発ではメチャやって、その失敗を業務に生かした方がいい。
ただ、上達したければ、ある程度普通のコーディングルールで組んだ方がいい。(世間に合わせる)
自分と相手のルールが一致してたら、相手のコードも読みやすく、
結果、同じ時間、同じ努力でも読める量に違いが出てくるから。
あと、初心者はよく
・色々文法を知ってて、様々な書き方が出来る奴が偉い
と勘違いしがちのようだが、これは明確な間違いだ。(これは他言語では本当に酷い)
こんな糞どうでもいいところを様々な書き方をしているような奴は雑魚だ。
上手い奴は、そいつが決めたやり方に従って、一定の書き方で書く。
だから、後で読み直すときも楽だってこと。
自分の手書き文字なら相当汚くても読めるだろ。それに近い。
基本的には意味のない手動インライン展開は止めた方がいい。
それは無駄に関数を大きくする。
関数呼び出しのコストが気になるなら、C++なら inline が用意されてる。
そもそもロックなんて糞遅いから、そこでCPU命令数個ケチる意味もないはずだが。
可読性を上げる為に最初にやるべきなのは、関数を分割して小さくすることだ。
呼び出しコストは考えず、分割しまくった方がいい。
結果、抽象度が上がり、読みやすくなる。(全体を読まなくても済むようになる)
>>116のコードは、while (1) で開始しても同じだし、(=do-whileを使う意味がない)
そもそも>>113に比べてメリットもないだろ。
そこで do-while 使う奴なんて皆無だと思うぞ。
まあそれでもやりたければやればいい。
個人開発ではメチャやって、その失敗を業務に生かした方がいい。
ただ、上達したければ、ある程度普通のコーディングルールで組んだ方がいい。(世間に合わせる)
自分と相手のルールが一致してたら、相手のコードも読みやすく、
結果、同じ時間、同じ努力でも読める量に違いが出てくるから。
あと、初心者はよく
・色々文法を知ってて、様々な書き方が出来る奴が偉い
と勘違いしがちのようだが、これは明確な間違いだ。(これは他言語では本当に酷い)
こんな糞どうでもいいところを様々な書き方をしているような奴は雑魚だ。
上手い奴は、そいつが決めたやり方に従って、一定の書き方で書く。
だから、後で読み直すときも楽だってこと。
自分の手書き文字なら相当汚くても読めるだろ。それに近い。
基本的には意味のない手動インライン展開は止めた方がいい。
それは無駄に関数を大きくする。
関数呼び出しのコストが気になるなら、C++なら inline が用意されてる。
そもそもロックなんて糞遅いから、そこでCPU命令数個ケチる意味もないはずだが。
可読性を上げる為に最初にやるべきなのは、関数を分割して小さくすることだ。
呼び出しコストは考えず、分割しまくった方がいい。
結果、抽象度が上がり、読みやすくなる。(全体を読まなくても済むようになる)
171デフォルトの名無しさん
2018/08/23(木) 03:30:32.78ID:w8vcpguW あくまで、プログラマが初心者の場合の話だけど。
いろいろなソースを見てきたけど。
仕事としてやるなら、初心者は、なるべく関数化してほしくないかな。
練習としてなら、いいけどね。
関数化する等して、抽象化した方が見やすいソースになるかというと、
間違いじゃないけど、正しくもない。
有能なプログラマーが書いたソースは素晴らしいし、可読性も申し分ない、うん。
でも、クソなコードは、関数化しちゃいけないものが、関数化されているなどが原因で、
追跡が難くなるんだな。
オブジェクト指向を謳う言語のソースなんか、C以上にプログラマーの手腕によって、
可読性の差が生じてしまう。関数だけでなく、クラスの設計が腐ってて、どうしもないとかね。
そうゆうソースの追跡は辛いわ。
Cの場合、ぐちょくちょなソースの場合、関数化されていない方が、
コードのメンテ等で、強引に追跡する際は苦労が少ない、そんな感じ。
いろいろなソースを見てきたけど。
仕事としてやるなら、初心者は、なるべく関数化してほしくないかな。
練習としてなら、いいけどね。
関数化する等して、抽象化した方が見やすいソースになるかというと、
間違いじゃないけど、正しくもない。
有能なプログラマーが書いたソースは素晴らしいし、可読性も申し分ない、うん。
でも、クソなコードは、関数化しちゃいけないものが、関数化されているなどが原因で、
追跡が難くなるんだな。
オブジェクト指向を謳う言語のソースなんか、C以上にプログラマーの手腕によって、
可読性の差が生じてしまう。関数だけでなく、クラスの設計が腐ってて、どうしもないとかね。
そうゆうソースの追跡は辛いわ。
Cの場合、ぐちょくちょなソースの場合、関数化されていない方が、
コードのメンテ等で、強引に追跡する際は苦労が少ない、そんな感じ。
172デフォルトの名無しさん
2018/08/23(木) 04:08:27.50ID:rN/Im7Tc そんなこたねえよ
関数を作った方がいいしファイルを分けた方がいい
ネストは浅い方がいい
関数を作った方がいいしファイルを分けた方がいい
ネストは浅い方がいい
173デフォルトの名無しさん
2018/08/23(木) 05:49:50.39ID:OJr5a4rA174デフォルトの名無しさん
2018/08/23(木) 06:27:06.53ID:OG65bZxS175デフォルトの名無しさん
2018/08/23(木) 06:33:10.57ID:HkL3Bs+i176デフォルトの名無しさん
2018/08/23(木) 07:24:39.71ID:qYtPM3Ou177デフォルトの名無しさん
2018/08/23(木) 07:52:07.91ID:wxGNRrqx178デフォルトの名無しさん
2018/08/23(木) 08:12:35.84ID:wxGNRrqx >>172
行数やファイルの数で値段が決まる業界の人?
行数やファイルの数で値段が決まる業界の人?
179デフォルトの名無しさん
2018/08/23(木) 08:16:18.32ID:wxGNRrqx 全てのLOCK/UNLOCKのペアはそれだけで関数にする
2重ループやループ内のswitch caseは使わないで関数に分ける
いろんな人がいるね
自分では本当に例外なく実践してるんだろうか
2重ループやループ内のswitch caseは使わないで関数に分ける
いろんな人がいるね
自分では本当に例外なく実践してるんだろうか
180デフォルトの名無しさん
2018/08/23(木) 08:31:20.08ID:wxGNRrqx 宗教の例
gotoは使ってはいけない
2重ループは使ってはいけない
3項演算子は使ってはいけない
インデントは全て揃える
全てのリテラルは別途定義する
変数名に型情報を埋め込む
関数の途中でreturnしてはいけない
関数は小さいほど良い
条件分の中に関数コールや副作用のある文を書いてはいけない
インクルードファイルをネストしてはいけない
コメントは全て /* */ で (// や #if 0 を使ってはいけない)
全ての演算子のネストに対して ( ) をつける
全てのロック、アンロックのペアは関数に分けなければいけない
gotoは使ってはいけない
2重ループは使ってはいけない
3項演算子は使ってはいけない
インデントは全て揃える
全てのリテラルは別途定義する
変数名に型情報を埋め込む
関数の途中でreturnしてはいけない
関数は小さいほど良い
条件分の中に関数コールや副作用のある文を書いてはいけない
インクルードファイルをネストしてはいけない
コメントは全て /* */ で (// や #if 0 を使ってはいけない)
全ての演算子のネストに対して ( ) をつける
全てのロック、アンロックのペアは関数に分けなければいけない
181デフォルトの名無しさん
2018/08/23(木) 08:38:21.29ID:NBx27jJF182デフォルトの名無しさん
2018/08/23(木) 08:41:48.74ID:KjqMFLSY switch caseはは無駄にカラムを消費する。から嫌い。
183デフォルトの名無しさん
2018/08/23(木) 09:21:50.49ID:itriZIP9184デフォルトの名無しさん
2018/08/23(木) 09:48:06.49ID:O7XDpWhz >>183
ある程度の規模の関数になると結局その1命令に見えるはずの処理が正確に何してるかを理解するためには関数内を覗くはめになっちゃう。
覗かないですむほど関数仕様を単純化すると今度は関数が増えて管理の手間が増える矛盾。
後者のほうが正解なんだろうけど、なかなか理想通りには行かないよね。
ある程度の規模の関数になると結局その1命令に見えるはずの処理が正確に何してるかを理解するためには関数内を覗くはめになっちゃう。
覗かないですむほど関数仕様を単純化すると今度は関数が増えて管理の手間が増える矛盾。
後者のほうが正解なんだろうけど、なかなか理想通りには行かないよね。
185デフォルトの名無しさん
2018/08/23(木) 09:52:28.00ID:XUhqK5T4 その方向性の行き着く先がオブジェクト指向
186デフォルトの名無しさん
2018/08/23(木) 09:52:54.19ID:itriZIP9 >>184
ある程度の規模ってLOCK/UNLOCKの話だぜ?
ある程度の規模ってLOCK/UNLOCKの話だぜ?
187デフォルトの名無しさん
2018/08/23(木) 10:01:30.20ID:O7XDpWhz188デフォルトの名無しさん
2018/08/23(木) 10:11:39.46ID:rN/Im7Tc >>178
ファイル数とか初めて聞いたよ。
疎結合高凝集は大抵の場面で正義だよ。トータル1000行のソースだったら好きにすればいいが。
あと関数にもファイルにも「意味のある名前をつける」
ある意味大変難しいんだがこれができれば保守性が全然違う。
ファイル数とか初めて聞いたよ。
疎結合高凝集は大抵の場面で正義だよ。トータル1000行のソースだったら好きにすればいいが。
あと関数にもファイルにも「意味のある名前をつける」
ある意味大変難しいんだがこれができれば保守性が全然違う。
189デフォルトの名無しさん
2018/08/23(木) 10:34:14.06ID:3bgfj1QZ 規模は覗かないとわからんよ
1個の関数からしか呼ばれないたった3行の、
ただ単に特定のループの終了条件を示す為の関数
結局両方見ないと意味不明
こんな関数が山ほどあるプロジェクトは悪夢だ
1個の関数からしか呼ばれないたった3行の、
ただ単に特定のループの終了条件を示す為の関数
結局両方見ないと意味不明
こんな関数が山ほどあるプロジェクトは悪夢だ
190デフォルトの名無しさん
2018/08/23(木) 10:36:26.67ID:rN/Im7Tc エディタが悪いんじゃないか?
191デフォルトの名無しさん
2018/08/23(木) 10:40:50.31ID:3bgfj1QZ たった3行の為に
関数名を考え
関数ヘッダを作成し
プロファイリングや静的解析ツールやMAPの項目も増える
大きく依存した関数なのに
グローバル関数とローカル関数を分けて書くという宗教を理由に
全然別の場所に書く
最悪ですねえ
こういう人は
ifなども含め、複数文からなる全ての条件判断を関数にするんでしょうか
あり得ないですね
もちろん単なる1個のループの終了条件ではなくて
その条件に意味があって
他でも使う可能性があるなら関数に分けるべきですが
関数名を考え
関数ヘッダを作成し
プロファイリングや静的解析ツールやMAPの項目も増える
大きく依存した関数なのに
グローバル関数とローカル関数を分けて書くという宗教を理由に
全然別の場所に書く
最悪ですねえ
こういう人は
ifなども含め、複数文からなる全ての条件判断を関数にするんでしょうか
あり得ないですね
もちろん単なる1個のループの終了条件ではなくて
その条件に意味があって
他でも使う可能性があるなら関数に分けるべきですが
192デフォルトの名無しさん
2018/08/23(木) 11:09:24.18ID:itriZIP9 >>187
改めて一般論をしても構わんが
改めて一般論をしても構わんが
193デフォルトの名無しさん
2018/08/23(木) 11:29:56.84ID:rN/Im7Tc プロファイリングのときってstaticな関数も同列に扱うもんなの?
194デフォルトの名無しさん
2018/08/23(木) 11:40:17.42ID:HinwMmX/ ある程度の規模、って
サイトによって違うんだし
一般化はできないんじゃ
サイトによって違うんだし
一般化はできないんじゃ
195デフォルトの名無しさん
2018/08/23(木) 12:10:32.95ID:O7XDpWhz >>194
地雷臭がするから煽るのやめとけってw
地雷臭がするから煽るのやめとけってw
196デフォルトの名無しさん
2018/08/23(木) 12:48:09.07ID:iNuWULI+ >>177
> 私も当然他の処理があると思った
> 無いとするとビジーループか?
> これだと気持ち悪いとかいう以前の問題になる
君のレベルが低いだけ
最近のプロセッサはロック/アンロックをハードウェアレベルで行うようになってるけどビジーループ自体は使われてる
スピンロック でググれ
> 私も当然他の処理があると思った
> 無いとするとビジーループか?
> これだと気持ち悪いとかいう以前の問題になる
君のレベルが低いだけ
最近のプロセッサはロック/アンロックをハードウェアレベルで行うようになってるけどビジーループ自体は使われてる
スピンロック でググれ
197デフォルトの名無しさん
2018/08/23(木) 15:13:34.14ID:HinwMmX/ >>195
アリガトス、鼻の敏感なお方
アリガトス、鼻の敏感なお方
198デフォルトの名無しさん
2018/08/23(木) 15:40:21.02ID:/qY100we >>191
行数の問題じゃないんだよなあ
行数の問題じゃないんだよなあ
199デフォルトの名無しさん
2018/08/23(木) 16:15:45.18ID:rN/Im7Tc 「長いから分割する」という発想で関数作ってる人は割といるんだよ。
そうするとまあコンテクストが広い範囲に分散してつらい。
そうするとまあコンテクストが広い範囲に分散してつらい。
200デフォルトの名無しさん
2018/08/23(木) 16:28:54.58ID:EgEtgRif そういえば昔客とソースレビューしてて、
引数チェックのための早期returnしてたら、
客「途中returnはやめてください」
俺「そうするとネストが深くなりすぎますよ?」
客「それなら関数に分けて下さい」
俺「分けた関数の先でも引数チェックするので同じですよ?」
客「それならその先の関数も別の関数に分けて下さい」
俺「…(反論するのめんどくせえ、言うとおりに作ってしまえ)」
結果、思い出すのも恐ろしい意味不明な関数ばかりのコードが出来上がったわ。
引数チェックのための早期returnしてたら、
客「途中returnはやめてください」
俺「そうするとネストが深くなりすぎますよ?」
客「それなら関数に分けて下さい」
俺「分けた関数の先でも引数チェックするので同じですよ?」
客「それならその先の関数も別の関数に分けて下さい」
俺「…(反論するのめんどくせえ、言うとおりに作ってしまえ)」
結果、思い出すのも恐ろしい意味不明な関数ばかりのコードが出来上がったわ。
201デフォルトの名無しさん
2018/08/23(木) 16:54:56.17ID:rN/Im7Tc 途中リターン禁止ってほんとアホだよね。要はreturnの否定だからな。
最近はMISRAからも外れてるらしいが
最近はMISRAからも外れてるらしいが
202デフォルトの名無しさん
2018/08/23(木) 17:00:42.78ID:itriZIP9 >>191
単なる1個のループの条件に意味がないことなんてあるのか?
たった3行というがlock/unlockという2行で
他のタスクが干渉しないようにガードする必要がある条件だぞ
干渉されるとしたら何でだ? それでも意味がないのか?
単なる1個のループの条件に意味がないことなんてあるのか?
たった3行というがlock/unlockという2行で
他のタスクが干渉しないようにガードする必要がある条件だぞ
干渉されるとしたら何でだ? それでも意味がないのか?
203デフォルトの名無しさん
2018/08/23(木) 18:14:09.43ID:wxGNRrqx204デフォルトの名無しさん
2018/08/23(木) 18:30:50.97ID:9jasVWpA そこまでローレベルの話じゃないと思うよ
無関係ではないけど
無関係ではないけど
205デフォルトの名無しさん
2018/08/23(木) 19:15:54.01ID:iNuWULI+206デフォルトの名無しさん
2018/08/23(木) 19:28:43.42ID:k97Awv43 じゃあハードセマフォか?
それスピンロックじゃないよな
恥の上塗りwww
それスピンロックじゃないよな
恥の上塗りwww
207デフォルトの名無しさん
2018/08/23(木) 19:51:18.42ID:iNuWULI+ >>206 が必死にググって見つけて来た関係ありそうな(でも全く頓珍漢な)言葉 → ハードセマフォ
自爆志願者かよ w
自爆志願者かよ w
208デフォルトの名無しさん
2018/08/23(木) 19:59:05.89ID:k97Awv43 >>196自体がとんちんかんなわけだがwww
209デフォルトの名無しさん
2018/08/23(木) 19:59:23.06ID:EgEtgRif な、ここのスレは読解力が乏しいのにお互いにマウント取り合って傍から見たらアホちゃうのって奴が多いだろ?
よくもまあLOCK/UNLOCK如きで生産性のカケラもない議論できるわ。
よほど暇なんかな?
よくもまあLOCK/UNLOCK如きで生産性のカケラもない議論できるわ。
よほど暇なんかな?
210デフォルトの名無しさん
2018/08/23(木) 20:01:59.92ID:k97Awv43 LOCK/UNLOCKごとき
だよねえ
だよねえ
211デフォルトの名無しさん
2018/08/23(木) 20:17:25.18ID:e3M4pNLl ハードセマフォってなに…?
212デフォルトの名無しさん
2018/08/23(木) 20:24:14.60ID:k97Awv43 ハードウェアセマフォ
213デフォルトの名無しさん
2018/08/23(木) 20:25:47.93ID:HinwMmX/ C言語のはなしに戻ってくるのはあと何日先かな
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★4 [七波羅探題★]
- 【地震速報】青森県で震度6強 沿岸部に津波警報 ★6 [ぐれ★]
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 [蚤の市★]
- 【速報】気象庁は津波注意報すべて解除 [蚤の市★]
- 【サッカー】58歳カズ「オファーが来ている」 J3福島と近日中にも交渉 早ければ年内にも決断 [征夷大将軍★]
- 「日の丸にバツ印」掲げた大学生 あいまいな国旗損壊罪に「怖い」 The Mainichi [少考さん★]
- 働いて参ります
- ( ・᷄ὢ・᷅ )あ?
- 地震
- こんぺこ!こんぺこ!こんぺこ!🐰🏡
- 早大名誉教授「高市内閣の高支持率はデータ操作か、支持している日本人がアホなのか」👈核心を突いてしまう [868050967]
- ブタをぶったたく
