リーダブルコードとは
・読みやすさ、理解しやすさを追及したコードのことです
・読みやすいということはメンテナンス性も高いということです。
・理解しやすいコードはコードレビューも楽になります。
・理解しやすいコードはバグも少なくなります。
・短いほうが優れていることが多いですが、必ずしも短いほうがいいとは限りません。
俺ルール
・書き方の勝負であり、言語の勝負をしないでください。
・標準、非標準に限らずライブラリを使いましょう。
・なければ自分で関数を作りましょう。関数はなるべく汎用的に。
こういうコードを読みやすくするにはどうすればいいでしょうか?
というようなことを語るスレ。需要ありますかね?
探検
リーダブルコーディング技術スレ
■ このスレッドは過去ログ倉庫に格納されています
2013/10/11(金) 01:06:21.56
116デフォルトの名無しさん
2013/10/23(水) 22:31:00.52117デフォルトの名無しさん
2013/10/23(水) 22:34:24.51 動的型付け言語の場合。
クラスがHogeであっても、getHogeってした方がいいよ。
なぜなら、getだけじゃ何からのgetか分からないから。
近くでnewしていれば簡単だが、関数の外から
渡されてきたらあちこちのコードを読まないとわからない。
しかも一つ見つけたら、それで正しいとは限らない。
もしかしたら見つけたのとは別のクラスも渡しているかもしれない。
クラスがHogeであっても、getHogeってした方がいいよ。
なぜなら、getだけじゃ何からのgetか分からないから。
近くでnewしていれば簡単だが、関数の外から
渡されてきたらあちこちのコードを読まないとわからない。
しかも一つ見つけたら、それで正しいとは限らない。
もしかしたら見つけたのとは別のクラスも渡しているかもしれない。
118デフォルトの名無しさん
2013/10/23(水) 22:52:48.88 ISO/IEC 9899:201x Programming languages - C
ttp://www.open-std.org/JTC1/SC22/WG14/www/docs/n1570.pdf 24ページ目辺り
3.15
object
region of data storage in the execution environment, the contents of which can represent values
ttp://www.open-std.org/JTC1/SC22/WG14/www/docs/n1570.pdf 24ページ目辺り
3.15
object
region of data storage in the execution environment, the contents of which can represent values
119デフォルトの名無しさん
2013/10/23(水) 22:54:38.49 「リーダブルコード」的には、getHogeはオススメされていない。
・属性値を得るだけの軽い処理とまぎらわしい
・明確じゃない(ほかの動詞を使うべき)
・属性値を得るだけの軽い処理とまぎらわしい
・明確じゃない(ほかの動詞を使うべき)
120デフォルトの名無しさん
2013/10/23(水) 22:58:55.35 内部処理を意識させないために
getでいいのでは?
内部処理がどうなっているか不明なのだから
軽いかどうかなんてわかり用がないし
変わることだってだろう?
そこに何かの想定をしてはいけないだけの話。
getでいいのでは?
内部処理がどうなっているか不明なのだから
軽いかどうかなんてわかり用がないし
変わることだってだろう?
そこに何かの想定をしてはいけないだけの話。
121デフォルトの名無しさん
2013/10/23(水) 23:02:09.66 >>120が英語が出来ないだけの話
リーダブルコードの意味をもう一度考えたほうがいい
リーダブルコードの意味をもう一度考えたほうがいい
122デフォルトの名無しさん
2013/10/23(水) 23:09:46.14 Foo.getHoge(); と書くと「FooがHogeをgetする」になってしまう罠。
仮にこれを「FooからHogeをgetする」と読むのならば、
if( Foo.isHoge() ) を 「もしFooがHogeなら」と読めなくなる。
仮にこれを「FooからHogeをgetする」と読むのならば、
if( Foo.isHoge() ) を 「もしFooがHogeなら」と読めなくなる。
123デフォルトの名無しさん
2013/10/23(水) 23:16:32.20 そのロジックはこじつけすぎ
慣習には従うべき
慣習には従うべき
124122
2013/10/23(水) 23:19:31.79 間違えてUCCで書いてもうた…orz
でもまぁ標準ライブラリでもよく考えるとおかしなのがあるから、あまり気にせずとも良い気も。
でもまぁ標準ライブラリでもよく考えるとおかしなのがあるから、あまり気にせずとも良い気も。
125デフォルトの名無しさん
2013/10/23(水) 23:20:41.94 >>115
定数オーダーの処理ならget,setって言っていいイメージでいます。
定数オーダーの処理ならget,setって言っていいイメージでいます。
126デフォルトの名無しさん
2013/10/23(水) 23:31:43.97 話が逸れるけど関数名だけに拘るのではなく、戻り値や引数の型その他を含むシグネチャ全体に気を使った方が良いかと。
特にC/C++なんかだとconstの有無はネーミングと同じ位気を使って欲しい。
うまく使えば読みやすくなるし。
特にC/C++なんかだとconstの有無はネーミングと同じ位気を使って欲しい。
うまく使えば読みやすくなるし。
127デフォルトの名無しさん
2013/10/23(水) 23:31:45.03 そのHogePathの出どころによるよね
DBから探してくるならfindHogePathとかsearchForHogePath
コンポーネントをいくつか組み合わせて作るならcomposeHogePath
どこかに設定してあるのをちゃちゃっと取ってくるだけならgetHogePath
処理の中身がわかる名前がいいと思うよ
DBから探してくるならfindHogePathとかsearchForHogePath
コンポーネントをいくつか組み合わせて作るならcomposeHogePath
どこかに設定してあるのをちゃちゃっと取ってくるだけならgetHogePath
処理の中身がわかる名前がいいと思うよ
128デフォルトの名無しさん
2013/10/24(木) 01:34:22.78 >>122
> Foo.getHoge(); と書くと「FooがHogeをgetする」になってしまう罠。
つまりgetは一切使うなってこと?
いや違うな。Fooをcreateしてしまう場合は、create Fooだろう?
Foo.createだったら、Fooが作成してしまうになってしまう。
いやいやcreateではなく、newだからnew Fooであってるのか。
Foo.newはだめだな。
でもこれはnewだけの話だろう?
Array.join(', ')とかどうなるんだ?配列が','でjoinする?
配列をjoinするんじゃないのか?
おかしいな。
とりえず俺としての結論は、
Foo.isHogeがたまたまそう読めるからといって、だからなに?
他は違う読み方をすればいいだけじゃない。
ってことだな。
> Foo.getHoge(); と書くと「FooがHogeをgetする」になってしまう罠。
つまりgetは一切使うなってこと?
いや違うな。Fooをcreateしてしまう場合は、create Fooだろう?
Foo.createだったら、Fooが作成してしまうになってしまう。
いやいやcreateではなく、newだからnew Fooであってるのか。
Foo.newはだめだな。
でもこれはnewだけの話だろう?
Array.join(', ')とかどうなるんだ?配列が','でjoinする?
配列をjoinするんじゃないのか?
おかしいな。
とりえず俺としての結論は、
Foo.isHogeがたまたまそう読めるからといって、だからなに?
他は違う読み方をすればいいだけじゃない。
ってことだな。
129デフォルトの名無しさん
2013/10/24(木) 01:49:19.21 >>128
RubyではFoo.newなんだが(;^ω^)
RubyではFoo.newなんだが(;^ω^)
130デフォルトの名無しさん
2013/10/24(木) 03:46:48.68131デフォルトの名無しさん
2013/10/24(木) 07:03:23.93132デフォルトの名無しさん
2013/10/24(木) 09:16:09.11 Foo.new と new Foo の違いは、前者がメタオブジェクト(Classのインスタンス)の
インスタンスメソッドの呼び出しであるのに対し、後者がnewという前置演算子による
演算子式である、という意味の違いが構文の違いになっているに過ぎず、
リーダビリティとは全く何の関係もない。
それを「一文字でも短くタイプするとかいう変な宗教」とか考える奴の脳味噌が変。
インスタンスメソッドの呼び出しであるのに対し、後者がnewという前置演算子による
演算子式である、という意味の違いが構文の違いになっているに過ぎず、
リーダビリティとは全く何の関係もない。
それを「一文字でも短くタイプするとかいう変な宗教」とか考える奴の脳味噌が変。
133デフォルトの名無しさん
2013/10/24(木) 09:45:45.73 言いたい事をほぼ>>132が言ってくれたから話が早いw
134デフォルトの名無しさん
2013/10/24(木) 10:17:04.85135デフォルトの名無しさん
2013/10/24(木) 10:18:18.30 >>134
俺 Python スレとシャワートイレ板で有名コテやってるかあんまり怒らせないほうがいいよ
俺 Python スレとシャワートイレ板で有名コテやってるかあんまり怒らせないほうがいいよ
136デフォルトの名無しさん
2013/10/24(木) 10:56:44.27 >>134
これ一番分かりやすいな
これ一番分かりやすいな
137デフォルトの名無しさん
2013/10/24(木) 12:52:43.82 その言語において、コンストラクタが普通の関数と同じものなら、それで問題ない。
プログラミング言語は、計算のための意味論を持った、形式言語である、という前提を外した
議論からは、何も生まれないよ。
プログラミング言語は、計算のための意味論を持った、形式言語である、という前提を外した
議論からは、何も生まれないよ。
138デフォルトの名無しさん
2013/10/24(木) 21:30:48.46 >>134
Perlは Foo だけでいけるよ。
Perlは Foo だけでいけるよ。
139デフォルトの名無しさん
2013/10/24(木) 21:33:14.24140デフォルトの名無しさん
2013/10/24(木) 21:41:37.23141デフォルトの名無しさん
2013/10/24(木) 21:52:44.97 というより、ちょっと前から一人おかしい子が紛れ込んでる希ガスw
知ったようなことを言いたいんだ、ということだけ分かる。
知ったようなことを言いたいんだ、ということだけ分かる。
142デフォルトの名無しさん
2013/10/24(木) 22:02:24.23 こんな感じで分かり易いコード書けるよー、的な話題になると、
気の利いたコード書けない低脳が、そんなの関数化するから関係無いと言い出し、
その結果、関数名とか変数名とか、あとメソッド呼び出しでの括弧省略とか、
そういう下らない議論になる
読んでないけど、このスレもそんな感じですか?
気の利いたコード書けない低脳が、そんなの関数化するから関係無いと言い出し、
その結果、関数名とか変数名とか、あとメソッド呼び出しでの括弧省略とか、
そういう下らない議論になる
読んでないけど、このスレもそんな感じですか?
143デフォルトの名無しさん
2013/10/24(木) 22:05:39.81 あぁ、お前が読んでないことが2行目でわかったよw
さっさと自分のスレに帰って、
そいつに泣かされてこい。
さっさと自分のスレに帰って、
そいつに泣かされてこい。
144デフォルトの名無しさん
2013/10/24(木) 22:08:26.25 自分のスレとか言い出したら
病気ですよ
病気ですよ
145デフォルトの名無しさん
2013/10/24(木) 22:11:41.26 >>144
?
?
146デフォルトの名無しさん
2013/10/24(木) 22:12:24.79 あ、馬鹿にしたことに気づいてないのかw
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:xQuvo0yG■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【給食無償化】国が全額負担 自維公3党、近く合意へ [ぐれ★]
- こども家庭庁、2026年から“独身税”を開始、年収200万なら年4200円、年収400万なら年7800円 ★6 [お断り★]
- 【サッカー】Jリーグ、43億円の赤字予算を承認 ★2 [鉄チーズ烏★]
- 松村沙友理、スタバは好きだけど「やっぱコーヒーに700円800円が…」「家でお湯わかしてやったらタダやん」 [muffin★]
- 「レーダー照射」なぜ中国は素直に謝罪しないのか 非を認めず反論、逆ギレ「ごめんなさい」と言えない国情★3 [七波羅探題★]
- 40代教員、1億8600万円分の暗号資産だまし取られる 「警察手帳のような物」見せられ−滋賀県草津市 [蚤の市★]
- 【実況】博衣こよりのえちえちダンガンロンパ2🧪★6
- ブレイキングダウンの試合前挑発タイムでくも膜下出血 朝倉未来の責任は [279254606]
- 味の素会長「日本の冷凍餃子は安すぎる。価値に見合った価格を」 [573472858]
- 【実況】博衣こよりのえちえちダンガンロンパ2🧪★5
- 高市早苗「子どもがいる世帯への扶養控除廃止は私の意向ではなく自民党の意向で仕方ない」与党爆笑 [245325974]
- IDにSexキタ━━━━(゚∀゚)━━━━!!
