リーダブルコードとは
・読みやすさ、理解しやすさを追及したコードのことです
・読みやすいということはメンテナンス性も高いということです。
・理解しやすいコードはコードレビューも楽になります。
・理解しやすいコードはバグも少なくなります。
・短いほうが優れていることが多いですが、必ずしも短いほうがいいとは限りません。
俺ルール
・書き方の勝負であり、言語の勝負をしないでください。
・標準、非標準に限らずライブラリを使いましょう。
・なければ自分で関数を作りましょう。関数はなるべく汎用的に。
こういうコードを読みやすくするにはどうすればいいでしょうか?
というようなことを語るスレ。需要ありますかね?
探検
リーダブルコーディング技術スレ
■ このスレッドは過去ログ倉庫に格納されています
2013/10/11(金) 01:06:21.56
147デフォルトの名無しさん
2013/10/24(木) 22:25:41.04 自分のスレって何だ?
148デフォルトの名無しさん
2013/10/24(木) 22:30:08.34 三人称単数ならgetsだろ藁()
小学生かお前ら核爆()
小学生かお前ら核爆()
149デフォルトの名無しさん
2013/10/24(木) 22:40:56.38 >148
メンバからの呼び出しの場合
メンバからの呼び出しの場合
150デフォルトの名無しさん
2013/10/24(木) 23:07:37.25 >>139
new Foo や Foo.new は「適度に短い」からリーダブルだよ
なぜなら、new というキーワードによって、単なるメソッド呼び出しと
コンストラクタ呼び出しを一目で見分けられる、
つまりコードリーディングを配慮した言語設計だと言える
それに対して、Foo() は「極端に短い」からアンリーダブルだね
なぜなら、前後の文脈を確認しなければ、それがメソッド呼び出しなのか
コンストラクタ呼び出しなのかが区別できない
つまりコードリーディングを無視した
「一文字でも短くタイプするとかいう変な宗教(>>131)」に従った言語設計だと言える
たとえば、f() というコードは一見するとメソッド(または関数)呼び出しに見える
しかし、その前の文脈に f = Foo があれば、f() の意味はコンストラクタ呼び出しになる
もしも、これが new f または f.new であれば迷うこと無くコンストラクタであると判断できる
new Foo や Foo.new は「適度に短い」からリーダブルだよ
なぜなら、new というキーワードによって、単なるメソッド呼び出しと
コンストラクタ呼び出しを一目で見分けられる、
つまりコードリーディングを配慮した言語設計だと言える
それに対して、Foo() は「極端に短い」からアンリーダブルだね
なぜなら、前後の文脈を確認しなければ、それがメソッド呼び出しなのか
コンストラクタ呼び出しなのかが区別できない
つまりコードリーディングを無視した
「一文字でも短くタイプするとかいう変な宗教(>>131)」に従った言語設計だと言える
たとえば、f() というコードは一見するとメソッド(または関数)呼び出しに見える
しかし、その前の文脈に f = Foo があれば、f() の意味はコンストラクタ呼び出しになる
もしも、これが new f または f.new であれば迷うこと無くコンストラクタであると判断できる
151デフォルトの名無しさん
2013/10/24(木) 23:09:12.24 > それに対して、Foo() は「極端に短い」からアンリーダブルだね
なんで? Foo()という関数は読みづらいか?
なんで? Foo()という関数は読みづらいか?
152デフォルトの名無しさん
2013/10/24(木) 23:10:31.80 ていうか、何でコンストラクタと普通の関数を区別する必要があるの?
馬鹿なの?
馬鹿なの?
153デフォルトの名無しさん
2013/10/24(木) 23:11:09.04 メソッドとかコンストラクタと言ってる時点で
わかってないやつじゃないか。
このスレで言う、リーダブルとは
技術の低いやつに合わせることではないって
話と同じことだな。
わかってないやつじゃないか。
このスレで言う、リーダブルとは
技術の低いやつに合わせることではないって
話と同じことだな。
154デフォルトの名無しさん
2013/10/24(木) 23:11:54.80 newFoo = Fooって書けばよくね???
155デフォルトの名無しさん
2013/10/24(木) 23:18:11.87 アホがアホのフリをする必要は無いぞ。
156デフォルトの名無しさん
2013/10/24(木) 23:31:48.54 そもそもオブジェクト指向とかゴミだろ藁()
OCaml最高!!
OCaml最高!!
157デフォルトの名無しさん
2013/10/24(木) 23:37:35.84 Objective Caml ........
158デフォルトの名無しさん
2013/10/24(木) 23:38:57.24 第一級のモジュールができて
完全にオワコンになったOCamlのO
完全にオワコンになったOCamlのO
159デフォルトの名無しさん
2013/10/24(木) 23:40:51.03 一時のブームに流されたばかりに.....
160デフォルトの名無しさん
2013/10/24(木) 23:41:59.24 おまえら、ここは言語の勝負するスレじゃないぞ
161デフォルトの名無しさん
2013/10/24(木) 23:47:53.68 if !flag vs. unless flag 派のたたかいはまだですか
162デフォルトの名無しさん
2013/10/24(木) 23:50:39.18 論理的にはどちらか一方あればいいけど、
読むことを考えれば、両方できる方がいい。
読むことを考えれば、両方できる方がいい。
163デフォルトの名無しさん
2013/10/24(木) 23:51:21.06 のってやろう
俺は!を見逃すという凡ミスでハマったゴミクソ野郎なので
unless派だ
俺は!を見逃すという凡ミスでハマったゴミクソ野郎なので
unless派だ
164デフォルトの名無しさん
2013/10/24(木) 23:52:16.44 実装は同じになるけど、英語の意味は違うよ
だから両方ある方がいい
だから両方ある方がいい
165デフォルトの名無しさん
2013/10/25(金) 01:24:29.19 if not でいいじゃん
166デフォルトの名無しさん
2013/10/25(金) 10:07:22.11 条件式は明示的に比較演算子を記述すること
167デフォルトの名無しさん
2013/10/25(金) 10:22:07.23 俺みたいな雑魚が until と unless を間違えるから、どちらかを別の単語にすべきだ。
168デフォルトの名無しさん
2013/10/25(金) 11:01:11.16 if修飾子が好き。
条件の文字をxで置き換えて書くと
next if xxxxxx
next if xxxxxxxxxxxx
next if xxx
と揃っていて美しい。一瞬でこの一群の目的が分かる。
旧来の方法だと、
if (xxxxxx) next
if (xxxxxxxxxxxx) next
if (xxx) next
こうなって、この一群が同一の目的を持ってることがスグには分からない。
条件の文字をxで置き換えて書くと
next if xxxxxx
next if xxxxxxxxxxxx
next if xxx
と揃っていて美しい。一瞬でこの一群の目的が分かる。
旧来の方法だと、
if (xxxxxx) next
if (xxxxxxxxxxxx) next
if (xxx) next
こうなって、この一群が同一の目的を持ってることがスグには分からない。
169デフォルトの名無しさん
2013/10/25(金) 11:35:26.92 >>168
すみません。このnextっていうのは何のことですか?
すみません。このnextっていうのは何のことですか?
170デフォルトの名無しさん
2013/10/25(金) 11:45:26.35 >>163
そう言うやつはそのうち unless !flag と書いてはまるので、俺は unless いらない派
そう言うやつはそのうち unless !flag と書いてはまるので、俺は unless いらない派
171デフォルトの名無しさん
2013/10/25(金) 11:49:51.98172デフォルトの名無しさん
2013/10/25(金) 11:56:20.11 >>168
同じ目的ならor条件にしろ
同じ目的ならor条件にしろ
173デフォルトの名無しさん
2013/10/25(金) 12:31:03.71 一人だけ周回遅れな発言してるなぁ…
174デフォルトの名無しさん
2013/10/25(金) 20:13:24.30 条件によりオプショナルなら前置
null対策などで仕方なく条件を付けるのなら後置
みたいに書いたりしないか
null対策などで仕方なく条件を付けるのなら後置
みたいに書いたりしないか
175デフォルトの名無しさん
2013/10/25(金) 23:00:46.24 >>168
こうすりゃいいやん
if (xxxxxx) next
if (xxxxxxxxxxxx) next
if (xxx) next
こうすりゃいいやん
if (xxxxxx) next
if (xxxxxxxxxxxx) next
if (xxx) next
176デフォルトの名無しさん
2013/10/25(金) 23:24:53.78 変数宣言でそれやってるやついるな。
177デフォルトの名無しさん
2013/10/26(土) 00:49:23.99 変なタイプミスした行をあぶりだすのに、それがいいときもある。
状況しだい。
状況しだい。
178デフォルトの名無しさん
2013/10/26(土) 12:52:26.30 getterでretunr文の位置合わせるのはやりすぎ?
179デフォルトの名無しさん
2013/10/26(土) 12:59:11.00 そういうタイプミスをみつけやすくしたいという意味?
180デフォルトの名無しさん
2013/10/26(土) 16:11:57.24 int getSpamSpamSpam() {return spam;}
int getHam() {return ham;}
int getEggEggEgg() {return egg;}
int getSpamSpamSpam() {return spam;}
int getHam() {return ham;}
int getEggEggEgg() {return egg;}
下のほうが見やすい気がするけど,同僚からは不評
int getHam() {return ham;}
int getEggEggEgg() {return egg;}
int getSpamSpamSpam() {return spam;}
int getHam() {return ham;}
int getEggEggEgg() {return egg;}
下のほうが見やすい気がするけど,同僚からは不評
181デフォルトの名無しさん
2013/10/26(土) 16:15:01.79 スペース纏められてたw
182デフォルトの名無しさん
2013/10/26(土) 16:17:35.98 int getSpamSpamSpam(){return spam;}
int getHam() {return ham;}
int getEggEggEgg() {return egg;}
int getSpamSpamSpam() {return spam;}
int getHam() {return ham;}
int getEggEggEgg() {return egg;}
こんな感じか?
int getHam() {return ham;}
int getEggEggEgg() {return egg;}
int getSpamSpamSpam() {return spam;}
int getHam() {return ham;}
int getEggEggEgg() {return egg;}
こんな感じか?
183デフォルトの名無しさん
2013/10/26(土) 16:25:30.69 ふつうの等幅フォントのエディタで書いてコピペしてくれた方が、
navi2chでは見やすいんだが
navi2chでは見やすいんだが
184デフォルトの名無しさん
2013/10/26(土) 21:25:49.66 名前と括弧の間にスペースを入れて整形するのは変かな?
185デフォルトの名無しさん
2013/10/26(土) 22:35:48.73 変
186デフォルトの名無しさん
2013/10/26(土) 23:00:18.20 変かどうかっていうのは、オープンソース、
それも有名で多くの人が参加しているようなものの
コードをみればいいだけ。
こういうのは考えるのではなく、調べて答えを見つけようぜ。
それも有名で多くの人が参加しているようなものの
コードをみればいいだけ。
こういうのは考えるのではなく、調べて答えを見つけようぜ。
187デフォルトの名無しさん
2013/10/26(土) 23:03:48.33 変
イテレータならものによっては改行とスペース入れてそろえる
イテレータならものによっては改行とスペース入れてそろえる
188デフォルトの名無しさん
2013/12/03(火) 11:00:09.00 >>182
もっと名前の長い関数を追加することになったら面倒だろ
もっと名前の長い関数を追加することになったら面倒だろ
189デフォルトの名無しさん
2013/12/04(水) 01:09:35.65 関数の中身を見比べる必要がある時点でおかしいだろと思った
190デフォルトの名無しさん
2013/12/05(木) 07:45:11.65 達人プログラマでも同じようなインデントしてたし
>>182はそこまで変ではないのでは?
>>182はそこまで変ではないのでは?
191デフォルトの名無しさん
2013/12/06(金) 01:25:03.50 見た目云々より、エディタの矩形選択とかを活かせるメリットの方が大きい気が。
192デフォルトの名無しさん
2013/12/29(日) 23:04:49.03 クラスの中のある関数をつかうために
あらかじめいくつかの要素をsetしておかないといけないという設計はよくない?
setしないで関数を呼び出したときには例外を出す感じ
コンストラクタにいれてしまったほうがいいんだろうか?
あらかじめいくつかの要素をsetしておかないといけないという設計はよくない?
setしないで関数を呼び出したときには例外を出す感じ
コンストラクタにいれてしまったほうがいいんだろうか?
193デフォルトの名無しさん
2013/12/29(日) 23:06:02.09194デフォルトの名無しさん
2013/12/29(日) 23:59:47.76195デフォルトの名無しさん
2013/12/30(月) 00:03:01.47196デフォルトの名無しさん
2013/12/30(月) 00:20:47.15 try {
____a = A()
____a.set(something)
____a.do_something()
}
か
a = A()
try {
____a.set(something)
}
a.do_something()
の違いだと思ってる
コンストラクタで例外がでるとそのクラスのインスタンスを使うところ
すべてtryで囲まないといけなくない?
____a = A()
____a.set(something)
____a.do_something()
}
か
a = A()
try {
____a.set(something)
}
a.do_something()
の違いだと思ってる
コンストラクタで例外がでるとそのクラスのインスタンスを使うところ
すべてtryで囲まないといけなくない?
197デフォルトの名無しさん
2013/12/30(月) 00:21:24.74 a = Noen
try{
____a = A()
}
a.do_something()
にしろってこと?
try{
____a = A()
}
a.do_something()
にしろってこと?
198デフォルトの名無しさん
2013/12/30(月) 01:20:49.83199デフォルトの名無しさん
2013/12/30(月) 02:04:19.44 FactoryMethodパターンもいいかも。
これだったら、値を解析して正しい値だったらクラスを生成して返し、
不正だったらnullか、ヌルオブジェクトパターンでダミーのオブジェクトを返してやるとか色々出来るから。
A create(int youso)
{
if(yousoが正常) return new A(youso);
else return null;
}
class A
{
int _a;
A(int youso) { _a = youso; }
}
これだったら、値を解析して正しい値だったらクラスを生成して返し、
不正だったらnullか、ヌルオブジェクトパターンでダミーのオブジェクトを返してやるとか色々出来るから。
A create(int youso)
{
if(yousoが正常) return new A(youso);
else return null;
}
class A
{
int _a;
A(int youso) { _a = youso; }
}
200デフォルトの名無しさん
2013/12/30(月) 09:03:57.73201デフォルトの名無しさん
2013/12/30(月) 11:04:11.99 デザパタの目的はいくつかあるだろうが、
その中で「カタログ化」だの「パターンに名前をつけて共有」だの、
さもそれこそがおいしいという論調には疑問だね。
>>199を見ろよ。何がFactoryMethodパターンだ。
ただのファクトリメソッドじゃねーか。
「インスタンス化をサブクラスに任せる」っていう点を押さえて理解できてない。
その中で「カタログ化」だの「パターンに名前をつけて共有」だの、
さもそれこそがおいしいという論調には疑問だね。
>>199を見ろよ。何がFactoryMethodパターンだ。
ただのファクトリメソッドじゃねーか。
「インスタンス化をサブクラスに任せる」っていう点を押さえて理解できてない。
202デフォルトの名無しさん
2014/04/10(木) 09:43:21.89ID:VcyeIpim >>191
これ
これ
203拳聖ピストン矢口
2014/11/13(木) 23:50:19.89ID:yHSquATN 【注目】チョー気持ちいい!
やっぱセクロスするならアイドルっしょ 超有名アイドルグループ所属の美少女が衝撃のAVデビュー
アイドルは裏切らないっ!!
https://www.youtube.com/watch?v=XmP1TRsAe88
やっぱセクロスするならアイドルっしょ 超有名アイドルグループ所属の美少女が衝撃のAVデビュー
アイドルは裏切らないっ!!
https://www.youtube.com/watch?v=XmP1TRsAe88
204デフォルトの名無しさん
2014/11/15(土) 06:53:16.50ID:6Z/ZPh8x205デフォルトの名無しさん
2014/11/15(土) 14:58:16.01ID:/lNofN3M206デフォルトの名無しさん
2014/11/15(土) 16:17:34.44ID:lm0Ap3/W 変更コストよりも
変更したい箇所以外に、並列されてるだけで関係ない行まで修正が発生するのは気持ち悪いと感じる
1行の修正のはずなのにdiffとると何行も出たり まあオプションで消せるけど
変更したい箇所以外に、並列されてるだけで関係ない行まで修正が発生するのは気持ち悪いと感じる
1行の修正のはずなのにdiffとると何行も出たり まあオプションで消せるけど
207デフォルトの名無しさん
2014/11/16(日) 07:07:37.48ID:fuIgZytk208デフォルトの名無しさん
2014/11/16(日) 08:15:35.42ID:fuIgZytk 見栄え→読みやすさ
209デフォルトの名無しさん
2014/11/16(日) 08:30:50.35ID:EKSPBw73 returnの位置を揃えるのとタイポは本質的には関係ないじゃね?
210デフォルトの名無しさん
2014/11/17(月) 10:22:10.98ID:vQHrlZj+ alignみたいなやつで気軽にガンガン揃えられるような環境ができればいいのだろうか
211デフォルトの名無しさん
2014/11/19(水) 00:13:58.01ID:GN47sEav 自分は次の3つを結構その時の気分で描いてしまうのですが、どれかに統一したほうがよいとか、ありますか?
こういうのに対するコーディング規約とかも、会社によってはあるんでしょうか?
(ちなみに3は否定を使わない事でif文が素直に読めるかな?という理由で条件を逆にしているだけです)
例1
hash = INVALID_HASH;
if (! data.empty()) {
hash = ComputeHash(data);
}
例2
if (! data.empty()) {
hash = ComputeHash(data);
} else {
hash = INVALID_HASH;
}
例3
if (data.empty()) {
hash = INVALID_HASH;
} else {
hash = ComputeHash(data);
}
こういうのに対するコーディング規約とかも、会社によってはあるんでしょうか?
(ちなみに3は否定を使わない事でif文が素直に読めるかな?という理由で条件を逆にしているだけです)
例1
hash = INVALID_HASH;
if (! data.empty()) {
hash = ComputeHash(data);
}
例2
if (! data.empty()) {
hash = ComputeHash(data);
} else {
hash = INVALID_HASH;
}
例3
if (data.empty()) {
hash = INVALID_HASH;
} else {
hash = ComputeHash(data);
}
212デフォルトの名無しさん
2014/11/19(水) 00:41:55.06ID:eeZRz+g3 >>211
hash = data.empty() ? INVALID_HASH : ComputeHash(data);
hash = data.empty() ? INVALID_HASH : ComputeHash(data);
213デフォルトの名無しさん
2014/11/19(水) 05:42:14.41ID:3mSy2rZk hash = INVALID_HASH;
hash = ComputeHash(data) if (! data.empty());
hash = ComputeHash(data) if (! data.empty());
214デフォルトの名無しさん
2014/11/19(水) 12:53:45.74ID:GN47sEav >>212
なるほど、代入が1命令で済むなら参考演算子の方が見やすいですよね。
ちなみに複数行にわたる時はどうします?
>> 213
説明不足でした、C言語を想定していました。
ちなみにこの書き方だと、同じ変数に対する代入が二つ連続しているだけのように(ぱっと見)見えませんか?
1行目の代入って無駄じゃね? と一瞬思わせてからの2行目、みたいな。
なるほど、代入が1命令で済むなら参考演算子の方が見やすいですよね。
ちなみに複数行にわたる時はどうします?
>> 213
説明不足でした、C言語を想定していました。
ちなみにこの書き方だと、同じ変数に対する代入が二つ連続しているだけのように(ぱっと見)見えませんか?
1行目の代入って無駄じゃね? と一瞬思わせてからの2行目、みたいな。
215デフォルトの名無しさん
2014/11/19(水) 13:24:54.27ID:xQuvo0yG216デフォルトの名無しさん
2014/11/19(水) 13:29:08.73ID:xQuvo0yG >>214
> ちなみに複数行にわたる時はどうします?
三項演算子でも見やすく書ける。
場合によってはハッシュを使う。
Perlで書くけど、
my $value = {
key1 => 'value1',
key2 => 'value2',
key3 => 'value3',
}->{$key} || 'other';
> ちなみに複数行にわたる時はどうします?
三項演算子でも見やすく書ける。
場合によってはハッシュを使う。
Perlで書くけど、
my $value = {
key1 => 'value1',
key2 => 'value2',
key3 => 'value3',
}->{$key} || 'other';
217デフォルトの名無しさん
2014/11/19(水) 20:19:45.26ID:eeZRz+g3 >>214
>ちなみに複数行にわたる時はどうします?
hash = data.empty() ? (
INVALID_HASH
) : (
ComputeHash(data)
) ;
理屈は >>215、いわゆる参照透明性のことで、
関数型言語や Ruby のような関数型プログラミングに適した言語ならではのコード
・Rubyによる関数型プログラミング
http://www.h6.dion.ne.jp/~machan/misc/FPwithRuby.html
なお Ruby には C と同様な条件演算子(三項演算子)もあるけど、
複数行にわたる場合には if 式を使うのが普通
hash = if data.empty()
INVALID_HASH
else
ComputeHash(data)
end
>ちなみに複数行にわたる時はどうします?
hash = data.empty() ? (
INVALID_HASH
) : (
ComputeHash(data)
) ;
理屈は >>215、いわゆる参照透明性のことで、
関数型言語や Ruby のような関数型プログラミングに適した言語ならではのコード
・Rubyによる関数型プログラミング
http://www.h6.dion.ne.jp/~machan/misc/FPwithRuby.html
なお Ruby には C と同様な条件演算子(三項演算子)もあるけど、
複数行にわたる場合には if 式を使うのが普通
hash = if data.empty()
INVALID_HASH
else
ComputeHash(data)
end
218214
2014/11/20(木) 00:50:43.10ID:dK3PPRDP 最初の話しとはズレるんですが、宣言と同時に初期化し、それ以降の代入を極力避ける
というスタイルをC/C++で言い換えると、積極的に const をつける という事になりますかね。
変数をなるべく const 宣言するというのは、キーワードconstが目印になって宣言箇所がすぐにわかるので
個人的にも好きですね。ただ関数の非ポインタ引数にconstをつけるのは煩わしく思いますが。
というスタイルをC/C++で言い換えると、積極的に const をつける という事になりますかね。
変数をなるべく const 宣言するというのは、キーワードconstが目印になって宣言箇所がすぐにわかるので
個人的にも好きですね。ただ関数の非ポインタ引数にconstをつけるのは煩わしく思いますが。
219デフォルトの名無しさん
2014/11/20(木) 00:55:42.04ID:8SWsMjHc それより条件式の比較演算子の省略と条件式内での関数呼び出しをやめてほしい
220デフォルトの名無しさん
2014/11/20(木) 11:12:42.88ID:nwROesTX >>219
それは十分シンプルで十分意味がわかるならば問題ないよ。
いるんだよね。ルールを守ることが目的になってる奴って。
× 書き方を統一しようとする
○ わかりやすいように書く
わかりやすいならば、どんな書き方だっていいんだよ。
どうせ書き方なんて些細な事なんだし。
それは十分シンプルで十分意味がわかるならば問題ないよ。
いるんだよね。ルールを守ることが目的になってる奴って。
× 書き方を統一しようとする
○ わかりやすいように書く
わかりやすいならば、どんな書き方だっていいんだよ。
どうせ書き方なんて些細な事なんだし。
221デフォルトの名無しさん
2014/11/20(木) 11:40:07.19ID:jeSKdYmy まあ比較演算子の省略はわかればいいんだけど
if文の条件式で関数呼ばれると単にデバッグが面倒なんだよね
これは別の問題か
if文の条件式で関数呼ばれると単にデバッグが面倒なんだよね
これは別の問題か
222デフォルトの名無しさん
2014/11/20(木) 17:57:21.94ID:B4HwyTzw えっ
223デフォルトの名無しさん
2014/11/20(木) 18:25:29.28ID:d0Ca/Au6 if (func()) { }
ではなく
result = func();
if (result) { }
こういうこと?
ではなく
result = func();
if (result) { }
こういうこと?
224デフォルトの名無しさん
2014/11/20(木) 18:35:58.57ID:d0Ca/Au6 比較演算子を省略しないとこうか
result = func();
if (result == true) { }
真偽値だったら省略したくなるな〜俺は
result = func();
if (result == true) { }
真偽値だったら省略したくなるな〜俺は
225デフォルトの名無しさん
2014/11/21(金) 10:27:03.29ID:09t/alwf そうそう
C言語って既定の真偽値型ないし
C言語って既定の真偽値型ないし
226デフォルトの名無しさん
2014/11/21(金) 10:53:54.88ID:09t/alwf ごめんやっぱリーダーブル関係ないね
227デフォルトの名無しさん
2014/11/21(金) 13:24:31.65ID:Y2Jui1fN Cだったら
if (result == true) はダメでしょ。resultが非0かつ非1だったときに困る。
if (result != false) にしないと。
結局真偽値判定は比較演算子使わない方がいいんでない?
if (result == true) はダメでしょ。resultが非0かつ非1だったときに困る。
if (result != false) にしないと。
結局真偽値判定は比較演算子使わない方がいいんでない?
228デフォルトの名無しさん
2014/11/21(金) 13:47:31.12ID:18AXju9B 真偽値を直接返す関数を作らなければいいのかな
229デフォルトの名無しさん
2014/11/21(金) 14:12:52.15ID:Mc3QBWVu 変数名をresultではなく、 doneやcompleteのように状態を表す言葉にすればいい。
if (done) { }
if (done) { }
230デフォルトの名無しさん
2014/11/21(金) 14:14:08.05ID:biiemfBm if (expr == TRUE) とか書くのは馬鹿げている、とcomp.lang.c FAQの回答にもある。
http://c-faq.com/bool/bool2.html 単に if (expr) と書くべき。
http://c-faq.com/bool/bool2.html 単に if (expr) と書くべき。
231デフォルトの名無しさん
2014/11/22(土) 03:29:01.87ID:CZJjmAQJ 真偽値の場合、doneかisDoneにするかで迷う時がある。
232デフォルトの名無しさん
2014/11/22(土) 04:07:44.39ID:FS7ceVya 結局どーんすんの
233デフォルトの名無しさん
2014/11/22(土) 05:06:36.83ID:CZJjmAQJ たまにいずどーんにすんの
234デフォルトの名無しさん
2014/11/22(土) 11:35:45.69ID:HicAMECL いやexprは関係演算子以外から導くべきではない、って話だろ
235デフォルトの名無しさん
2014/11/22(土) 16:46:09.25ID:jgE9Y6q3 if(variable == undefined)
236デフォルトの名無しさん
2014/11/22(土) 19:28:06.50ID:Le0NeUvk 職場のスパゲティソースのメトリクス値がやばすぎるんで
今度大幅に直そうという話はあがったものの
全く手がついてないんだけど
どういうふうに課員を指導したらいいんだろう
今度大幅に直そうという話はあがったものの
全く手がついてないんだけど
どういうふうに課員を指導したらいいんだろう
237デフォルトの名無しさん
2014/11/22(土) 22:08:19.55ID:6LKk2FqN 同値変形のやり方を練習させろよ
238デフォルトの名無しさん
2014/11/22(土) 22:09:52.26ID:+O+q8SCA それは、どうちて?
239デフォルトの名無しさん
2014/11/23(日) 08:18:15.22ID:zrTQYxev240デフォルトの名無しさん
2014/11/23(日) 08:46:26.24ID:hspGDGDv そういう人が言う「分かりやすいコード」って
基本的に誤解しやすいコードが多い
基本的に誤解しやすいコードが多い
241デフォルトの名無しさん
2014/11/23(日) 08:59:26.38ID:DxJUdIe1242デフォルトの名無しさん
2014/11/23(日) 09:00:06.86ID:DxJUdIe1243デフォルトの名無しさん
2014/11/23(日) 09:16:30.23ID:rJ+2DU/G >>242
それはルールを守らずに,独自のわかりやすい方法で書いたからってこと?
それはルールを守らずに,独自のわかりやすい方法で書いたからってこと?
244デフォルトの名無しさん
2014/11/23(日) 09:34:54.26ID:0xPoVd9P 一貫性の欠いたフレームワークなんて作られた日には使えたもんじゃないだろ
245デフォルトの名無しさん
2014/11/23(日) 11:55:45.10ID:c84onc2P 独自のわかりやすいコードっていうのを見てみたいわw
わかりやすいコードっていうのは、独自じゃない。
多くが○○スタイルみたいな言い方で呼ばれてる。
もちろんいろんなスタイルがあって、わかりやすいスタイルというのは
一つではないが、わかりやすいという点では共通してる。
わかりやすいのに、バグがでまくるとか矛盾してるってw
わかりやすいコードっていうのは、独自じゃない。
多くが○○スタイルみたいな言い方で呼ばれてる。
もちろんいろんなスタイルがあって、わかりやすいスタイルというのは
一つではないが、わかりやすいという点では共通してる。
わかりやすいのに、バグがでまくるとか矛盾してるってw
246デフォルトの名無しさん
2014/11/23(日) 12:50:11.85ID:Pyfj4pkz C言語で
#ifdef DEBUG
printf(var);
#endif
が1つの関数に頻出するコードは非常に読みにくい
今やらされてる組織内独自のフレームワークのコード
#ifdef DEBUG
printf(var);
#endif
が1つの関数に頻出するコードは非常に読みにくい
今やらされてる組織内独自のフレームワークのコード
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 ★12 [蚤の市★]
- 女性天皇「賛成」69%、将来の皇位継承「不安」68%…読売世論調査 [蚤の市★]
- 【🐻ニャー】京都府向日市の「クマ目撃情報」は見間違いか 市が映像確認「ネコに似ていた」 [nita★]
- 旧姓使用拡大に連合会長が反発 「何の説明もない。選択的夫婦別氏制度導入を」 男女共同参画会議 ★2 [ぐれ★]
- 【芸能】『女芸人No.1決定戦THE W』 粗品が最後にバッサリ「優勝賞金1000万円にしてはレベル低い大会」 [冬月記者★]
- 開業4ヵ月でこれは…“国民の税金”投入の『ジャングリア沖縄』で見た衝撃的な光景と、モチベーションが低い一部スタッフの現状 ★2 [ぐれ★]
- 🍵緑茶輸出激増で国内価格6倍へ 番茶も飲めなくなる [399259198]
- メガテンに出てくるマーラ様って
- 【新潮】専門家『高市政権の物価高対策は逆効果』【経済政策】 [718678614]
- 【悲報】日本人、GoTo価格に慣れすぎて旅行に行かなくなる🛍🙅 [476167917]
- 食を極めてわかったこと
- クズ「勉強頑張らなかった奴は一生DQNと一緒に肉体労働しろ」☚勉強頑張れるのも環境と巡り合わせなんだが? [783475554]
