リーダブルコードとは
・読みやすさ、理解しやすさを追及したコードのことです
・読みやすいということはメンテナンス性も高いということです。
・理解しやすいコードはコードレビューも楽になります。
・理解しやすいコードはバグも少なくなります。
・短いほうが優れていることが多いですが、必ずしも短いほうがいいとは限りません。
俺ルール
・書き方の勝負であり、言語の勝負をしないでください。
・標準、非標準に限らずライブラリを使いましょう。
・なければ自分で関数を作りましょう。関数はなるべく汎用的に。
こういうコードを読みやすくするにはどうすればいいでしょうか?
というようなことを語るスレ。需要ありますかね?
リーダブルコーディング技術スレ
■ このスレッドは過去ログ倉庫に格納されています
2013/10/11(金) 01:06:21.56
247デフォルトの名無しさん
2014/11/23(日) 12:59:40.43ID:K4bM7kRY >>246
プリプロの記法はもうちょっとなんとかならないものか?#if/#ifdef/#endif を一行で書ければいいのだが‥
プリプロの記法はもうちょっとなんとかならないものか?#if/#ifdef/#endif を一行で書ければいいのだが‥
248デフォルトの名無しさん
2014/11/23(日) 13:20:52.44ID:hspGDGDv249デフォルトの名無しさん
2014/11/23(日) 15:02:18.53ID:E8ar0Vq9 こうだろ
DBGP(var);
DBGP(var);
250デフォルトの名無しさん
2014/11/23(日) 21:25:37.37ID:c84onc2P >>248
> 本人はわかりやすいつもりで書いてるコードが該当するんじゃね?
> 省略できるものは全部省略しちゃうとか。
だからそれがどんなのかってこと。
例えば、単語を省略して書くのは
わかりにくいとされている。
> 本人はわかりやすいつもりで書いてるコードが該当するんじゃね?
> 省略できるものは全部省略しちゃうとか。
だからそれがどんなのかってこと。
例えば、単語を省略して書くのは
わかりにくいとされている。
251デフォルトの名無しさん
2014/11/23(日) 21:27:09.08ID:c84onc2P >>246
それ、明らかにわかりにくいコードだよね。
わかりやすいコードとして考えられたのではなく、
単にやっつけ仕事でifdef DEBUGを入れたのだろう。
一般的な仕組み、例えばsyslog当たりを使えば
分かりやすくなるよね。
それ、明らかにわかりにくいコードだよね。
わかりやすいコードとして考えられたのではなく、
単にやっつけ仕事でifdef DEBUGを入れたのだろう。
一般的な仕組み、例えばsyslog当たりを使えば
分かりやすくなるよね。
252片山博文MZ次期CEO ◆T6xkBnTXz7B0
2014/11/23(日) 21:27:34.82ID:cV5L5A+9 #ifdef NDEBUG
#define DEBUG_ONLY(x)
#define RELEASE_ONLY(x) x
#else
#define DEBUG_ONLY(x) x
#define RELEASE_ONLY(x)
#endif
#define DEBUG_ONLY(x)
#define RELEASE_ONLY(x) x
#else
#define DEBUG_ONLY(x) x
#define RELEASE_ONLY(x)
#endif
253241
2014/11/24(月) 00:06:43.37ID:/hENsJtv254デフォルトの名無しさん
2014/11/24(月) 00:10:37.50ID:LP7Sk3Ho プロとか言い訳すんなやw
「コーディング規約に沿ったものでなければ 納品できない」
というのが、理由であって
わかりやすくするためではないだろ。
クライアントが望むなら、けばけばしいデザインのサイトだって作るさ。
だがそれは、クライアントの指示でだめなことをしているのであって
それが正しいと思ってはいけない。
今ここに、クソなクライアントはいないんだぜ?
「コーディング規約に沿ったものでなければ 納品できない」
というのが、理由であって
わかりやすくするためではないだろ。
クライアントが望むなら、けばけばしいデザインのサイトだって作るさ。
だがそれは、クライアントの指示でだめなことをしているのであって
それが正しいと思ってはいけない。
今ここに、クソなクライアントはいないんだぜ?
255デフォルトの名無しさん
2014/11/24(月) 00:14:44.32ID:/hENsJtv いや、言い訳じゃなくて、契約の問題ですし。。。常識でしょ?
256デフォルトの名無しさん
2014/11/24(月) 00:19:33.68ID:LP7Sk3Ho スレタイ読んでね。リーダブルコーディング技術スレ。
リーダブルなコードのための話であって、
契約で〜とかいうのが理由ならそれは無関係だろ。
リーダブルなコードのための話であって、
契約で〜とかいうのが理由ならそれは無関係だろ。
257デフォルトの名無しさん
2014/11/24(月) 00:22:07.34ID:3/CdPMI5 プロか否か、常識か否か、
これを早々に持ち出す姿勢w
これを早々に持ち出す姿勢w
258デフォルトの名無しさん
2014/11/24(月) 00:25:05.80ID:ALHBj7yp259デフォルトの名無しさん
2014/11/24(月) 00:25:55.45ID:LP7Sk3Ho プロとか常識とか言い出す奴は
信用してないわw
だってそれ、単なる虎の威を借る狐だもの。
それに、虎ですらないかもしれないしな
俺の信じる、虎さまはこうおっしゃってる。
だから信じなさい。みたいなw
俺が定義するプロはこういうものなんだ。
お前はプロじゃないのか!みたいで
どっかの宗教と同じ。お前は(俺らの)神を信じないのか!
信用してないわw
だってそれ、単なる虎の威を借る狐だもの。
それに、虎ですらないかもしれないしな
俺の信じる、虎さまはこうおっしゃってる。
だから信じなさい。みたいなw
俺が定義するプロはこういうものなんだ。
お前はプロじゃないのか!みたいで
どっかの宗教と同じ。お前は(俺らの)神を信じないのか!
260デフォルトの名無しさん
2014/11/24(月) 00:27:15.22ID:LP7Sk3Ho プロとか常識とかクライアントが決めたこことか無視しようぜ
わかりやすいコードとはなにか?
これだけで考えよう。
わかりやすいコードとはなにか?
これだけで考えよう。
261デフォルトの名無しさん
2014/11/24(月) 00:27:26.67ID:/hENsJtv う〜ん、何か余計に癇に障ったみたいだね。
不覚にもスレ違いな話題に誘導されちゃったから、しばらく黙ってるは。
以下↓本来のリーダブルコーディング技術スレ
不覚にもスレ違いな話題に誘導されちゃったから、しばらく黙ってるは。
以下↓本来のリーダブルコーディング技術スレ
262デフォルトの名無しさん
2014/11/24(月) 00:30:38.62ID:LP7Sk3Ho まあ、俺は最初から、わかりやすいコードの
話しかしてないんけどねw
○な書き方、△な書き方、どっちがわかりやすい?
の答えに、どちらでもわかりやすい。という答えがあるのは事実
だから複数のコーディング規約が存在するわけで。
書き方を(自分の好きな書き方に)統一すると、気持ちいかも知れないが
わかりやすさの点から見れば、どちらでもいいことが多い。
話しかしてないんけどねw
○な書き方、△な書き方、どっちがわかりやすい?
の答えに、どちらでもわかりやすい。という答えがあるのは事実
だから複数のコーディング規約が存在するわけで。
書き方を(自分の好きな書き方に)統一すると、気持ちいかも知れないが
わかりやすさの点から見れば、どちらでもいいことが多い。
263デフォルトの名無しさん
2014/11/24(月) 00:34:18.09ID:cBWQwcU/264デフォルトの名無しさん
2014/11/24(月) 00:35:36.40ID:LP7Sk3Ho >>263
全部俺が言ったことだなw
全部俺が言ったことだなw
265デフォルトの名無しさん
2014/11/24(月) 00:36:13.26ID:LP7Sk3Ho あ、まとめてくれてありがとよって
いうところかw
いうところかw
266デフォルトの名無しさん
2014/11/24(月) 00:50:24.64ID:VgrvAE4c267デフォルトの名無しさん
2014/11/24(月) 00:59:19.90ID:ALHBj7yp268デフォルトの名無しさん
2014/11/24(月) 01:04:11.30ID:LP7Sk3Ho > 読むぶんには読めるけど書き換えはさせてもらえない
可愛そうだよね。まあ、社内規則だからw
で、ここはリーダブルなのかはどういうことかって話すスレだから
社内規則で変えられないとかはどうでもよくて。
じゃあリーダブルなのはどういうコードかってことで、
意見を集めましょう。
ってもうみんな書いたか? 俺はsyslogって書いた。
デバッグ出力をするために再コンパイルが必要っていうのも
変な話なんだよね。そもそもオプションで指定すればいいと。
デバッグ出力機能を持っている。という所まで仕様。
で、こういう仕様を考える人、そこまで頭が回る人が、いないんだろうね。
可愛そうだよね。まあ、社内規則だからw
で、ここはリーダブルなのかはどういうことかって話すスレだから
社内規則で変えられないとかはどうでもよくて。
じゃあリーダブルなのはどういうコードかってことで、
意見を集めましょう。
ってもうみんな書いたか? 俺はsyslogって書いた。
デバッグ出力をするために再コンパイルが必要っていうのも
変な話なんだよね。そもそもオプションで指定すればいいと。
デバッグ出力機能を持っている。という所まで仕様。
で、こういう仕様を考える人、そこまで頭が回る人が、いないんだろうね。
269デフォルトの名無しさん
2014/11/24(月) 01:05:10.00ID:cBWQwcU/ 只のデバッグプリントなら読み飛ばせばいいだけじゃん
リーダブルの真逆てコードの意図が伝わってこないものを言うんじゃない?
リーダブルの真逆てコードの意図が伝わってこないものを言うんじゃない?
270デフォルトの名無しさん
2014/11/24(月) 01:06:14.43ID:cBWQwcU/ どうでもいいけど、syslogでデバッグって相当頭悪いか、ぬるい開発だな
271デフォルトの名無しさん
2014/11/24(月) 01:10:43.53ID:LP7Sk3Ho おいおい、syslogでやるのはデバッグプリントであって
デバッグそのものじゃないぞw
syslogにあるだろ。プライオリティdebugのことだよ。
http://www.atmarkit.co.jp/ait/articles/0209/07/news002_2.html
> プライオリティ(priority)
>
> priorityは、プログラムが出力するメッセージのうち、ログのレベルの重要度を設定します。
>
> priority 内容
> debug デバッグ情報
> info 情報
> notice 通知
> warn 警告
> err 一般的なエラー
> crit 致命的なエラー
> alert 緊急に対処すべきエラー
> emerg システムが落ちるような状態
> 下になるほど重要度が高い
なんでこんな基礎的を説明せにゃならんのだw
デバッグそのものじゃないぞw
syslogにあるだろ。プライオリティdebugのことだよ。
http://www.atmarkit.co.jp/ait/articles/0209/07/news002_2.html
> プライオリティ(priority)
>
> priorityは、プログラムが出力するメッセージのうち、ログのレベルの重要度を設定します。
>
> priority 内容
> debug デバッグ情報
> info 情報
> notice 通知
> warn 警告
> err 一般的なエラー
> crit 致命的なエラー
> alert 緊急に対処すべきエラー
> emerg システムが落ちるような状態
> 下になるほど重要度が高い
なんでこんな基礎的を説明せにゃならんのだw
272デフォルトの名無しさん
2014/11/24(月) 01:11:55.52ID:LP7Sk3Ho 既に世の中にあるものを使わずに(知らずに)
少ない知識でもやれるぜって考えで
オレオレで実装するのも、リーダブルにならない原因の一つだよね。
少ない知識でもやれるぜって考えで
オレオレで実装するのも、リーダブルにならない原因の一つだよね。
273デフォルトの名無しさん
2014/11/24(月) 06:48:20.80ID:owm7UG/9 なぜ、人はアンリーダブルを求めるのでしょうか?
人は生きて、死ぬだけの存在でありながら、
存在するということに意味を持たせ、生と死をより複雑なものにしようとしました。
本来、人は無駄を好む存在です。
オートメーション、自動化、リーダブルなどというものは、
将来、オートメーションにより追いやられた人々により破壊されることが目に見えているのですから、
破壊されるために効率化を豪語し、効率化に勤しむ人々がいることに、
私は含み笑いを抑えることができません。
人は生きて、死ぬだけの存在でありながら、
存在するということに意味を持たせ、生と死をより複雑なものにしようとしました。
本来、人は無駄を好む存在です。
オートメーション、自動化、リーダブルなどというものは、
将来、オートメーションにより追いやられた人々により破壊されることが目に見えているのですから、
破壊されるために効率化を豪語し、効率化に勤しむ人々がいることに、
私は含み笑いを抑えることができません。
274デフォルトの名無しさん
2014/11/24(月) 07:00:20.21ID:yM+Y0wwR リーダプルは、時間的にどの程度のスパンで考えるのかな?
275デフォルトの名無しさん
2014/11/24(月) 07:09:48.66ID:g28cqnpj 読みやすさは主観であり、人により異なる。
全員に対して読みやすさを一定量担保するために、コーディング規約を作る。
デバッグプリント関係は、『CODE COMPLETE』 第八章防御的プログラミングがお勧め。
全員に対して読みやすさを一定量担保するために、コーディング規約を作る。
デバッグプリント関係は、『CODE COMPLETE』 第八章防御的プログラミングがお勧め。
276デフォルトの名無しさん
2014/11/24(月) 07:30:10.66ID:NWUcXEp0 > 読みやすさは主観であり、人により異なる。
つまり、人によっては、Aという書き方が読みやすく、
別の人は、Bと言う書き方、Cと言う書き方が一番読みやすいということ
> 全員に対して読みやすさを一定量担保するために、コーディング規約を作る。
たとえば規約でBという書き方に統一する。
さて、統一することによって、Aという書き方は読みにくということになるのか?
Bという書き方は読みにくいということになるのか?
もちろん違う。なぜなら、
> 読みやすさは主観であり、人により異なる。
と書いてあるように、人によって、AやCが読みやすいということに変わりはないからだ。
つまりなりが良いたいかというと、
AでもBでもCでも読みやすいことには変わりないということ。
統一するのは、読みにくい書き方を無くすのが目的であり、
読みやすい書き方は複数あるということは真実だし、
読みやすい書き方ならどれでもいいことにかわりはないのである。
だからこそAとCは自分のに取っては一番ではないが
それでも読みやすいならばどれでもいいから、その規約に従うのである。
つまり、人によっては、Aという書き方が読みやすく、
別の人は、Bと言う書き方、Cと言う書き方が一番読みやすいということ
> 全員に対して読みやすさを一定量担保するために、コーディング規約を作る。
たとえば規約でBという書き方に統一する。
さて、統一することによって、Aという書き方は読みにくということになるのか?
Bという書き方は読みにくいということになるのか?
もちろん違う。なぜなら、
> 読みやすさは主観であり、人により異なる。
と書いてあるように、人によって、AやCが読みやすいということに変わりはないからだ。
つまりなりが良いたいかというと、
AでもBでもCでも読みやすいことには変わりないということ。
統一するのは、読みにくい書き方を無くすのが目的であり、
読みやすい書き方は複数あるということは真実だし、
読みやすい書き方ならどれでもいいことにかわりはないのである。
だからこそAとCは自分のに取っては一番ではないが
それでも読みやすいならばどれでもいいから、その規約に従うのである。
277デフォルトの名無しさん
2014/11/24(月) 07:35:54.08ID:tFEPR/wR >>220
>× 書き方を統一しようとする
>○ わかりやすいように書く
世間に受け入れられているコーディング規約に従うのが一番わかりやすいんだから
それ対立軸じゃなくて両方○になるか両方×になるかだろ
>× 書き方を統一しようとする
>○ わかりやすいように書く
世間に受け入れられているコーディング規約に従うのが一番わかりやすいんだから
それ対立軸じゃなくて両方○になるか両方×になるかだろ
278デフォルトの名無しさん
2014/11/24(月) 07:42:27.18ID:NWUcXEp0 > 世間に受け入れられているコーディング規約
が複数あることを忘れてない?
わかりやすい書き方は一つじゃないんだよ。
が複数あることを忘れてない?
わかりやすい書き方は一つじゃないんだよ。
279デフォルトの名無しさん
2014/11/24(月) 07:55:36.62ID:tFEPR/wR >が複数あることを忘れてない?
忘れてない
>わかりやすい書き方は一つじゃないんだよ。
もちろん
で?
忘れてない
>わかりやすい書き方は一つじゃないんだよ。
もちろん
で?
280デフォルトの名無しさん
2014/11/24(月) 07:55:49.98ID:cBWQwcU/281デフォルトの名無しさん
2014/11/24(月) 08:01:29.70ID:NWUcXEp0282デフォルトの名無しさん
2014/11/24(月) 08:03:05.74ID:NWUcXEp0 >>279
で?と言われてもな。
最初から言っているように、
わかりやすいコードを書くことが目的であって
書き方を統一することは目的じゃないんだよって話
言い換えると、わかりやすければ統一する理由はない。
本当の目的を忘れるなって話。
で?と言われてもな。
最初から言っているように、
わかりやすいコードを書くことが目的であって
書き方を統一することは目的じゃないんだよって話
言い換えると、わかりやすければ統一する理由はない。
本当の目的を忘れるなって話。
283デフォルトの名無しさん
2014/11/24(月) 08:06:01.78ID:tFEPR/wR >言い換えると、わかりやすければ統一する理由はない。
いや、AとBの両方わかりやすくても、一つの製品にAとBが混在してたら駄目だろ
いや、AとBの両方わかりやすくても、一つの製品にAとBが混在してたら駄目だろ
284デフォルトの名無しさん
2014/11/24(月) 08:28:02.98ID:tFEPR/wR デバッグ出力でsyslogって発想は無いなぁ
最初に批判されてるが
#ifdef DEBUG
は普通のイディオムだから小さなプログラムなら悪くはないし
もう少し大きな規模になってロギングフレームワークを検討しようというなら
もっと抽象度の高いレベルでちゃんとしたフレームワークを採用するだろ
(C++ならglogとか。言語ごとにあるだろ)
最初に批判されてるが
#ifdef DEBUG
は普通のイディオムだから小さなプログラムなら悪くはないし
もう少し大きな規模になってロギングフレームワークを検討しようというなら
もっと抽象度の高いレベルでちゃんとしたフレームワークを採用するだろ
(C++ならglogとか。言語ごとにあるだろ)
285デフォルトの名無しさん
2014/11/24(月) 08:38:23.76ID:owm7UG/9286デフォルトの名無しさん
2014/11/24(月) 09:04:52.85ID:NWUcXEp0287デフォルトの名無しさん
2014/11/24(月) 09:05:43.57ID:NWUcXEp0288デフォルトの名無しさん
2014/11/24(月) 09:13:38.29ID:tFEPR/wR >なんで? それで問題が起きたことなんて無いよ。
すまんが、2ch で匿名でここから議論する気はないので退散。論破と思うならそれで構わん。
教育しても俺に見返りないし。
すまんが、2ch で匿名でここから議論する気はないので退散。論破と思うならそれで構わん。
教育しても俺に見返りないし。
289デフォルトの名無しさん
2014/11/24(月) 09:16:25.55ID:NWUcXEp0 はい、論破と思いますよ?
別にわざわざいなくてもいいのに。
別にわざわざいなくてもいいのに。
290デフォルトの名無しさん
2014/11/24(月) 09:24:55.73ID:tFEPR/wR このページの「デバッグライト」とか
http://www.pro.or.jp/~fuji/mybooks/cdiag/cdiag.6.3.html
ここでは、DebugPrintというマクロを用意しているわけだが、一度これを用意したら全員がDebugPrintを使わなきゃ意味ない
DebugPrintを使ってるコードと#ifdef DEBUGを生で使っているコードが両方存在するのは最悪で。
DebugPrintを用意することで、その定義を変えればデバッグ先をsyslogにしたりできるだろ
ところが、生で#ifdef DEBUGされてるコードが残ってたらそこで変更漏れのバグになる
DebugPrintなど無くて全員生で書いていれば、変更時には漏れがないように注意するからまだマシ
DebugPrintを用意したのに使ってないというのは本当に最悪
これがまず、統一するってことな。
http://www.pro.or.jp/~fuji/mybooks/cdiag/cdiag.6.3.html
ここでは、DebugPrintというマクロを用意しているわけだが、一度これを用意したら全員がDebugPrintを使わなきゃ意味ない
DebugPrintを使ってるコードと#ifdef DEBUGを生で使っているコードが両方存在するのは最悪で。
DebugPrintを用意することで、その定義を変えればデバッグ先をsyslogにしたりできるだろ
ところが、生で#ifdef DEBUGされてるコードが残ってたらそこで変更漏れのバグになる
DebugPrintなど無くて全員生で書いていれば、変更時には漏れがないように注意するからまだマシ
DebugPrintを用意したのに使ってないというのは本当に最悪
これがまず、統一するってことな。
291デフォルトの名無しさん
2014/11/24(月) 09:27:04.25ID:tFEPR/wR もう一つは、
そもそもこういうDebugPrintみたいなのは車輪の再発明なので
今時こんな「オレオレフレームワーク」を作るのは間抜け
(元ページはCopyright 1996)
あるものを使うのが普通
そもそもこういうDebugPrintみたいなのは車輪の再発明なので
今時こんな「オレオレフレームワーク」を作るのは間抜け
(元ページはCopyright 1996)
あるものを使うのが普通
292デフォルトの名無しさん
2014/11/24(月) 09:44:09.94ID:J2WKp7i1 >>286
同じものは同じように見えるようにしておかないと、コードレビューしづらい。
コードに手をいれるときにいちいちスタイルどうするか迷うのも無駄。
・・・コードレビューしないなら問題は起こらない。
まわりと明らかにスタイルの違うコードを混入させて気にしないなら問題は起こらない。
つまりそういうことなんだろうと思ってる。
同じものは同じように見えるようにしておかないと、コードレビューしづらい。
コードに手をいれるときにいちいちスタイルどうするか迷うのも無駄。
・・・コードレビューしないなら問題は起こらない。
まわりと明らかにスタイルの違うコードを混入させて気にしないなら問題は起こらない。
つまりそういうことなんだろうと思ってる。
293デフォルトの名無しさん
2014/11/24(月) 10:02:33.90ID:NWUcXEp0294デフォルトの名無しさん
2014/11/24(月) 10:06:55.47ID:XbvFM8cR295デフォルトの名無しさん
2014/11/24(月) 10:28:26.69ID:g28cqnpj ログは異常管理にdebugレベルを含めて使うけど、
開発時のデバッグには使わないかな。
開発時のデバッグには使わないかな。
296デフォルトの名無しさん
2014/11/24(月) 10:41:04.30ID:tFEPR/wR >>294
サーバプログラムだってsyslog決め打ちなんて少ないと思うが。ログ出力先の選択肢の一つとしてsyslogがあるだけだろ。
Apache httpd (http://httpd.apache.org/docs/current/logs.html)
エラーログは普通はファイルに書かれます (通常 Unix システムでは error_log、Windows と OS/2 では error.log)。 Unix システムではエラーを syslog や パイプでプログラムに送る ことができます。
Postgresql (https://www.postgresql.jp/document/9.3/html/runtime-config-logging.html)
PostgreSQLは、stderr、csvlogおよびsyslogを含めて、サーバメッセージのログ取得に対し数種類の方法を提供します。
Tomcat (http://tomcat.apache.org/tomcat-6.0-doc/logging.html)
Logging in Apache Tomcat is implemented with the help of Apache Commons Logging library.
有名どころのオープンソースでログ機能がsyslog決め打ちって何かあるの?
サーバプログラムだってsyslog決め打ちなんて少ないと思うが。ログ出力先の選択肢の一つとしてsyslogがあるだけだろ。
Apache httpd (http://httpd.apache.org/docs/current/logs.html)
エラーログは普通はファイルに書かれます (通常 Unix システムでは error_log、Windows と OS/2 では error.log)。 Unix システムではエラーを syslog や パイプでプログラムに送る ことができます。
Postgresql (https://www.postgresql.jp/document/9.3/html/runtime-config-logging.html)
PostgreSQLは、stderr、csvlogおよびsyslogを含めて、サーバメッセージのログ取得に対し数種類の方法を提供します。
Tomcat (http://tomcat.apache.org/tomcat-6.0-doc/logging.html)
Logging in Apache Tomcat is implemented with the help of Apache Commons Logging library.
有名どころのオープンソースでログ機能がsyslog決め打ちって何かあるの?
297デフォルトの名無しさん
2014/11/24(月) 10:57:11.56ID:tFEPR/wR >>295
「デバッガを使え」みたいな方法論と、デバッグ出力をどうするかは別だと思うが、そういうこと?どうしてる?
「デバッガを使え」みたいな方法論と、デバッグ出力をどうするかは別だと思うが、そういうこと?どうしてる?
298デフォルトの名無しさん
2014/11/24(月) 11:23:35.39ID:g28cqnpj >>297
システム運用中に異常処理を行った場合、管理者にその旨を通報する用途でログを使う。
あくまで、システムの一部なので、リリース後でも取り除かれない。
開発時にだけ有効で、リリース時に無効にする用途には使わないかなって話。
システム運用中に異常処理を行った場合、管理者にその旨を通報する用途でログを使う。
あくまで、システムの一部なので、リリース後でも取り除かれない。
開発時にだけ有効で、リリース時に無効にする用途には使わないかなって話。
299デフォルトの名無しさん
2014/11/24(月) 11:56:52.74ID:NWUcXEp0 開発時のみで使うものだったら
ifdefで残したりしねーよ?
そういう残してあるコードが
じゃまだってのが、話の始まりだろ?
ifdefで残したりしねーよ?
そういう残してあるコードが
じゃまだってのが、話の始まりだろ?
300デフォルトの名無しさん
2014/11/24(月) 12:01:55.48ID:tFEPR/wR301デフォルトの名無しさん
2014/11/24(月) 12:05:06.98ID:/Xnwup+Z302デフォルトの名無しさん
2014/11/24(月) 12:55:47.70ID:NWUcXEp0 ifdefでソースコードに書いて
それをずっと保守し続けてるってことは
残す理由があるからそうしてる。
ここまでOK?
その残されたコードがじゃまで
リーダブルにならくなって困っている。
ここまではOK?
ならばifdefなんか使わずに
もっとわかりやすいコードにしろって話。
それをずっと保守し続けてるってことは
残す理由があるからそうしてる。
ここまでOK?
その残されたコードがじゃまで
リーダブルにならくなって困っている。
ここまではOK?
ならばifdefなんか使わずに
もっとわかりやすいコードにしろって話。
303デフォルトの名無しさん
2014/11/24(月) 15:12:20.28ID:DZ0ISr8h お前はいい加減周りのことも考えて行動や発言できるようになれよ
コーディングはそれから
コーディングはそれから
304デフォルトの名無しさん
2014/11/24(月) 17:13:58.44ID:+VpmsKoD >>302
で、具体的な提案もなく、文句言うだけ?
で、具体的な提案もなく、文句言うだけ?
305デフォルトの名無しさん
2014/11/24(月) 17:49:29.24ID:SQsB+YJ2 プリプロの改良だね‥
306デフォルトの名無しさん
2014/11/24(月) 18:31:46.57ID:CiPNuJ6e で、そこに#ifdefの方がわかりやすい派が現れるんですねわかります
307片山博文MZ次期CEO ◆T6xkBnTXz7B0
2014/11/24(月) 18:39:55.49ID:cxOxEmtO #ifdefをインデントするのってアリ?
308デフォルトの名無しさん
2014/11/24(月) 19:32:19.00ID:xxtEEteG 中身はインデントするかも
309デフォルトの名無しさん
2014/11/24(月) 19:42:14.05ID:UXHgSloT ソースとプリプロセッサのインデントが混じって見辛くなるから、俺はしない
310デフォルトの名無しさん
2014/11/24(月) 20:41:48.81ID:U0wuvsWn 半角スペースでインデントはよく見かける
311デフォルトの名無しさん
2014/11/24(月) 22:10:52.63ID:DZ0ISr8h プリプロセッサのみの部分(define値の切り替えとかerrorとか)だったらインデントしたほうが見やすいと思いインデントしてる
ソース内にかかる部分だと309と同じ意見でしてない
基本は#ifがネストしないようにしたいと思ってるけどね
ソース内にかかる部分だと309と同じ意見でしてない
基本は#ifがネストしないようにしたいと思ってるけどね
312デフォルトの名無しさん
2014/11/24(月) 22:23:12.31ID:TsbXFfYg プリプロ行はスペースで、コード行はタブでインデントしてる。
見やすくはなるけど、読みやすさに繋がるかどうかはわからない。
見やすくはなるけど、読みやすさに繋がるかどうかはわからない。
313デフォルトの名無しさん
2014/11/24(月) 22:28:30.02ID:EZS/NtvV #if XXX
aaa
bbb
#endif
よりも
#if XXX
void func() {
aaa
bbb
}
#else
void func() {}
#endif
func()
ってやっちゃうなあ。これならfunc呼び出し部分についてのインデントに悩まなくてもすむじゃん?
しかも条件XXXで切り替わる部分が複数に成った場合でも、定義を一カ所にまとめておける。
aaa
bbb
#endif
よりも
#if XXX
void func() {
aaa
bbb
}
#else
void func() {}
#endif
func()
ってやっちゃうなあ。これならfunc呼び出し部分についてのインデントに悩まなくてもすむじゃん?
しかも条件XXXで切り替わる部分が複数に成った場合でも、定義を一カ所にまとめておける。
314デフォルトの名無しさん
2014/11/24(月) 22:34:36.62ID:o0oR/6A6 目から瓢箪が独楽です
315デフォルトの名無しさん
2014/11/24(月) 22:38:27.07ID:TsbXFfYg 関数呼び出しじゃなくてマクロにした方が良くない?
リーダブルの観点ではないけれど、関数呼び出しのネストが深くなるのは良くないと思うんだ。
リーダブルの観点ではないけれど、関数呼び出しのネストが深くなるのは良くないと思うんだ。
316デフォルトの名無しさん
2014/11/24(月) 22:39:45.84ID:/Xnwup+Z317デフォルトの名無しさん
2014/11/25(火) 01:15:46.45ID:45kyml8T318デフォルトの名無しさん
2014/11/25(火) 02:33:45.34ID:GW/pgxiU 目から箪笥です
319デフォルトの名無しさん
2014/11/25(火) 03:16:47.66ID:45kyml8T 私も目から箪笥です
320デフォルトの名無しさん
2014/11/25(火) 03:53:07.08ID:relupevl 同じじゃない部分だけ分ければいいだけじゃん
321デフォルトの名無しさん
2014/11/25(火) 06:54:59.12ID:eaby6zdh >>317
ああ、すまん、勘違いしてたわ
変更部分を別関数に切り出すと言うことか
> aaa
> bbb
が元々関数に切り出すような意味のある単位ならわかるけど、処理の途中の一部を切り出したような場合だと関数名も付け辛いし分かりにくくなる
あと、単に aaa, bbb って書いてるから違和感ないけど、実際には aaa, bbb で必要とする情報や、逆に変更した情報等のやり取りを引数でやる必要もあるので、結構面倒に思うんだけど
ああ、すまん、勘違いしてたわ
変更部分を別関数に切り出すと言うことか
> aaa
> bbb
が元々関数に切り出すような意味のある単位ならわかるけど、処理の途中の一部を切り出したような場合だと関数名も付け辛いし分かりにくくなる
あと、単に aaa, bbb って書いてるから違和感ないけど、実際には aaa, bbb で必要とする情報や、逆に変更した情報等のやり取りを引数でやる必要もあるので、結構面倒に思うんだけど
322デフォルトの名無しさん
2014/11/25(火) 07:46:51.85ID:53f+YSIW 確かOpenSSLも各プラットフォーム毎に
#ifdefの嵐でで手が付けられなくなったらしいけど、
こういうのはTemplate Methodパターンみたいなものを使えばいいんだよ。
デバッグ用の関数、またはクラスと
リリース用の関数、またはクラスを作って
それを使うコードはどちらを使っているか意識する必要がないようにする
これぐらい基本だと思うんだが、OpenSSLを見る限り
世の中のレベルってこの程度のものなのかもしれんな。
#ifdefの嵐でで手が付けられなくなったらしいけど、
こういうのはTemplate Methodパターンみたいなものを使えばいいんだよ。
デバッグ用の関数、またはクラスと
リリース用の関数、またはクラスを作って
それを使うコードはどちらを使っているか意識する必要がないようにする
これぐらい基本だと思うんだが、OpenSSLを見る限り
世の中のレベルってこの程度のものなのかもしれんな。
323デフォルトの名無しさん
2014/11/29(土) 12:47:04.96ID:u8/hKXWz324デフォルトの名無しさん
2014/11/29(土) 14:50:29.22ID:quQRjBUx デバッグ用出力の話なら
>>249 で十分テンプレートメソッドパターンと言えるでしょ
>>249 で十分テンプレートメソッドパターンと言えるでしょ
325デフォルトの名無しさん
2014/11/30(日) 21:01:48.36ID:4o6Sx4rW 呼び出し元のスコープを維持したいからマクロを使うんであって、関数やクラスに分けられるものをマクロで書く奴はいないだろ
326デフォルトの名無しさん
2014/11/30(日) 22:41:03.33ID:8xQ5/Fxy 『レガシーコード改善ガイド』を読むと、どこにテスト用のフックを
仕掛けるかみたいな話が出てくるからお勧めしとく。
仕掛けるかみたいな話が出てくるからお勧めしとく。
327デフォルトの名無しさん
2014/12/12(金) 00:27:58.93ID:bKiv2VYA c言語でなるべくグローバル変数を使わない方がいいという事で
グローバル変数無しで書き直したら、関数の引数がやたら多くなってしまった。
(´・ω・`)
グローバル変数無しで書き直したら、関数の引数がやたら多くなってしまった。
(´・ω・`)
328デフォルトの名無しさん
2014/12/12(金) 00:31:23.89ID:+hKqCGtl こぞーよ、こーぞーたいつかいやがれ
329デフォルトの名無しさん
2014/12/12(金) 00:40:38.34ID:ADDM5Suo データ結合まで分離できたって事だろ
誇ってよし
誇ってよし
330デフォルトの名無しさん
2014/12/12(金) 07:43:19.28ID:Znidw3Lc なるべくグローバル変数を使わない でいいんだが、
組み込み系だと、場合によって使っていいかと。
組み込みは仮想メモリが無く、搭載メモリ容量も決まっていて、
各機能それぞれ、どれだけの最大サイズでメモリを使うかなんて
設計段階で確定するものだから、
その最大サイズで最初からグローバルにメモリマップを切っておくべきかと。
動的確保とかだと開放漏れなんていう不具合がありがちだし。
普通にローカル変数ですむようなことまでグローバルにするのは厳禁だけど。
組み込み系だと、場合によって使っていいかと。
組み込みは仮想メモリが無く、搭載メモリ容量も決まっていて、
各機能それぞれ、どれだけの最大サイズでメモリを使うかなんて
設計段階で確定するものだから、
その最大サイズで最初からグローバルにメモリマップを切っておくべきかと。
動的確保とかだと開放漏れなんていう不具合がありがちだし。
普通にローカル変数ですむようなことまでグローバルにするのは厳禁だけど。
331デフォルトの名無しさん
2014/12/12(金) 08:57:20.70ID:bKiv2VYA 勉強になるわあ(´・ω・`)
332デフォルトの名無しさん
2014/12/12(金) 09:27:52.69ID:E/liDhvH メモリなどの制約があるからやるのであって、
それをするのが常識な業界であっても
その目的は「リーダブル」ではないことに注意ね。
それをするのが常識な業界であっても
その目的は「リーダブル」ではないことに注意ね。
333デフォルトの名無しさん
2014/12/12(金) 15:16:05.63ID:tymqzhoh >>330
グローバル(スコープの話)と動的確保(メモリー領域の話)をごっちゃにするなよ...
グローバル(スコープの話)と動的確保(メモリー領域の話)をごっちゃにするなよ...
334デフォルトの名無しさん
2014/12/12(金) 18:32:11.35ID:qq9LAV1Z 言語の話としては、スコープ(可視範囲)とエクステント(生存期間・寿命)な。
スタックに確保するかヒープに確保するかは、それらの実装の話。
スタックに確保するかヒープに確保するかは、それらの実装の話。
335330
2014/12/12(金) 22:14:49.55ID:Znidw3Lc いやあ、結構可読性が変わってくるよ。
動的確保系の処理って、寿命管理にそれなりの設計というかコードを書く必要があるし、
未確保の場合の条件分け処理だとか。
グローバルにすればそういう系のコードが排除出来てすっきりするんで。
今、組み込みで動的確保バリバリのプロジェクトに関わってて。
本来大丈夫なはずの所まで、大量の未確保時の例外処理を入れまくって、
可読性?なにそれ?なソースを相手にしているところww
動的確保系の処理って、寿命管理にそれなりの設計というかコードを書く必要があるし、
未確保の場合の条件分け処理だとか。
グローバルにすればそういう系のコードが排除出来てすっきりするんで。
今、組み込みで動的確保バリバリのプロジェクトに関わってて。
本来大丈夫なはずの所まで、大量の未確保時の例外処理を入れまくって、
可読性?なにそれ?なソースを相手にしているところww
336デフォルトの名無しさん
2014/12/12(金) 23:24:59.05ID:OvrU0/Qj337デフォルトの名無しさん
2014/12/12(金) 23:30:21.77ID:JABIbbJk >>336
C言語の問題になるが、例外というものがなく
エラーは戻り値で返ってくるので、
ちゃんとしたコードを書こうと思ったら原則的に
このように書かないといけない。
int ret;
ret = printf('Hello');
if (ret < 0) {
return ret;
}
ret = printf('World');
if (ret < 0) {
return ret;
}
C言語の問題になるが、例外というものがなく
エラーは戻り値で返ってくるので、
ちゃんとしたコードを書こうと思ったら原則的に
このように書かないといけない。
int ret;
ret = printf('Hello');
if (ret < 0) {
return ret;
}
ret = printf('World');
if (ret < 0) {
return ret;
}
338デフォルトの名無しさん
2014/12/12(金) 23:32:27.88ID:SFp8/UEn トンチンカンすぎんべ…
339デフォルトの名無しさん
2014/12/12(金) 23:35:05.15ID:OvrU0/Qj >>337
だからグローバル使えばどうすっきりするのかと
だからグローバル使えばどうすっきりするのかと
340デフォルトの名無しさん
2014/12/12(金) 23:35:23.81ID:Znidw3Lc ポインタのヌルチェックとかな
341デフォルトの名無しさん
2014/12/12(金) 23:43:14.66ID:Znidw3Lc オブジェクト指向系言語だったらヌルオブジェクト使ってヌルチェックを不要に出来るし、
どのタイミングで動的確保されるかとかはクラスで隠蔽出来るんだが
どのタイミングで動的確保されるかとかはクラスで隠蔽出来るんだが
342デフォルトの名無しさん
2014/12/12(金) 23:44:06.16ID:OvrU0/Qj コードで示してくれない?
グローバルでもチェックが不要になる訳じゃないよね?
グローバルでもチェックが不要になる訳じゃないよね?
343デフォルトの名無しさん
2014/12/12(金) 23:46:39.06ID:Znidw3Lc ?
ポインタをグローバルに持つとかじゃないよ?念のため。
普通に、ごく普通にプリミティブ型やら構造体変数をグローバルに持つだけなんだが。
ポインタをグローバルに持つとかじゃないよ?念のため。
普通に、ごく普通にプリミティブ型やら構造体変数をグローバルに持つだけなんだが。
344デフォルトの名無しさん
2014/12/12(金) 23:53:59.93ID:Znidw3Lc イメージ的には、様々な動的確保情報を全て確保した状態のヒープを、
最初から固定でグローバルに持っておく、という感じ。で伝わるかな。。
最初から固定でグローバルに持っておく、という感じ。で伝わるかな。。
345デフォルトの名無しさん
2014/12/12(金) 23:54:55.17ID:ADDM5Suo (やべえ何度読み直しても分からねえ…何が分からないのかさえ分からねえ…)
346デフォルトの名無しさん
2014/12/12(金) 23:56:53.96ID:9Ma9oPly■ このスレッドは過去ログ倉庫に格納されています
ニュース
- なぜリベラルは人気がないのか 斎藤幸平さんが指し示す未来への道筋:朝日新聞 [少考さん★]
- 鈴木農相「おこめ券はお米しか買えないわけではない。例えば卵、味噌、しょうゆ、こうした購入に利用可能」 [Hitzeschleier★]
- 【日本人の旅行離れ】国内旅行すら行けなくなった……オーバーツーリズムだけじゃない 旅行者減少の異常事態 ★2 [ぐれ★]
- ベトナムのバイク「脱ガソリン」、シェア8割のホンダに打撃…政府が電動二輪普及を主導 [煮卵★]
- “ひとり焼肉”でおなじみ「焼肉ライク」が閉店ラッシュ。なぜ「コスパが悪い」と言われてしまうのか [Gecko★]
- なぜ安っぽく見えてしまうのか…? ダウンジャケット姿が垢抜けない人の"意外な盲点" (ビジネスマンのためのスタイリスト) [少考さん★]
- 【実況】博衣こよりのえちえちドラクエ1&2リメイク🧪
- 「SCORE」←これなんて読むんや?🙋🏡
- 【高市朗報】鈴木大臣「嫌儲のデマに騙されないで。お米券の使い勝手は悪くない。卵味噌醤油も買えます。現金と変わりません」 [517459952]
- 今日一日を忘れられないほど大切な一日にしろ
- 【悲報】東京40代「生活苦しい!戸建てなんて絶対無理…」地方20代「家と車買って子供できた~今日は家族でモールで買い物」 [732289945]
- おまえらみたいなガキはビデオテープとか知らねえんだろうなw
