リーダブルコードとは
・読みやすさ、理解しやすさを追及したコードのことです
・読みやすいということはメンテナンス性も高いということです。
・理解しやすいコードはコードレビューも楽になります。
・理解しやすいコードはバグも少なくなります。
・短いほうが優れていることが多いですが、必ずしも短いほうがいいとは限りません。
俺ルール
・書き方の勝負であり、言語の勝負をしないでください。
・標準、非標準に限らずライブラリを使いましょう。
・なければ自分で関数を作りましょう。関数はなるべく汎用的に。
こういうコードを読みやすくするにはどうすればいいでしょうか?
というようなことを語るスレ。需要ありますかね?
探検
リーダブルコーディング技術スレ
■ このスレッドは過去ログ倉庫に格納されています
2013/10/11(金) 01:06:21.56
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:9Ma9oPly347デフォルトの名無しさん
2014/12/12(金) 23:58:05.91ID:SUQ8ZHc4 >>343-344
ごめん、マジで伝わらん
ごめん、マジで伝わらん
348デフォルトの名無しさん
2014/12/12(金) 23:59:06.81ID:bKiv2VYA やり取りの内容がまだ理解できるレベルではないが
奥がふかいんですねえ
やっぱcだけじゃなくjavaあたりもやっといた方がいいのかな
奥がふかいんですねえ
やっぱcだけじゃなくjavaあたりもやっといた方がいいのかな
349デフォルトの名無しさん
2014/12/13(土) 00:01:01.37ID:54ajxy39 >>346
ヒープ ⇔ スタティック の話なの?
ヒープ ⇔ スタティック の話なの?
350デフォルトの名無しさん
2014/12/13(土) 00:02:55.00ID:uQ37H43s おそらく最初から動的と静的の話なんでしょうよ
351デフォルトの名無しさん
2014/12/13(土) 00:05:24.55ID:54ajxy39 そうなんだろうな...
352デフォルトの名無しさん
2014/12/13(土) 02:19:46.63ID:WvyZJyoU そうだな
353デフォルトの名無しさん
2014/12/13(土) 05:42:46.74ID:xVemfz4a 書いてみた
http://ideone.com/3l8aq6
http://ideone.com/3l8aq6
354デフォルトの名無しさん
2014/12/13(土) 10:22:39.34ID:xVemfz4a と思ったら終わってたのね、話
355デフォルトの名無しさん
2014/12/13(土) 10:25:53.22ID:/4slIr06356デフォルトの名無しさん
2014/12/13(土) 10:31:24.66ID:xVemfz4a357デフォルトの名無しさん
2014/12/13(土) 10:36:24.43ID:JDqKcE2X 十年ROMれ
358デフォルトの名無しさん
2014/12/13(土) 10:40:39.82ID:xVemfz4a あぅぅ
2014/12/13(土) 23:21:18.25ID:K/9GRqnp
10年後に2chがなくなってなきゃいいが…
360デフォルトの名無しさん
2014/12/18(木) 20:59:16.69ID:IPlfnya6 c言語である程度プログラムが大きくなってくると関数の数も増えて来るし
どの関数がどの関数を呼び出してるとか色々増えて来ると思うんだけど
こういうのってどういう管理が一般的なんだろか
どの関数がどの関数を呼び出してるとか色々増えて来ると思うんだけど
こういうのってどういう管理が一般的なんだろか
361デフォルトの名無しさん
2014/12/18(木) 22:04:19.41ID:PpZ3cpAI >>360
> どの関数がどの関数を呼び出してるとか色々増えて来ると思うんだけど
増えていかないようにモジュール化する
> こういうのってどういう管理が一般的なんだろか
増えちゃったとか不幸にもぐちゃぐちゃのソースを解析するなら Doxygen とか、金があるなら Imagix とかで見るとか
> どの関数がどの関数を呼び出してるとか色々増えて来ると思うんだけど
増えていかないようにモジュール化する
> こういうのってどういう管理が一般的なんだろか
増えちゃったとか不幸にもぐちゃぐちゃのソースを解析するなら Doxygen とか、金があるなら Imagix とかで見るとか
362デフォルトの名無しさん
2014/12/18(木) 23:37:34.74ID:mulBDlyx 関数がある程度増えたら、それを小さく分割するってことを
しないからどんどん増えるんだよね。
なんで過去のコードを修正しないのか?
簡単なうちにすぐ手を付けないから、あとから手遅れになるんだけど。
しないからどんどん増えるんだよね。
なんで過去のコードを修正しないのか?
簡単なうちにすぐ手を付けないから、あとから手遅れになるんだけど。
363デフォルトの名無しさん
2014/12/18(木) 23:47:41.58ID:LWfoPtOf あまり小さく分割すると見通しが悪くなる派
364デフォルトの名無しさん
2014/12/19(金) 14:45:53.53ID:YQiCmoKD >>363
それは分割の仕方が間違ってる派
正しいやり方は
長い関数があった時、その中で汎用的に使える所をシンプルな関数に
抜き出しながら全体を短くするというやり方。
間違ったやり方だと
長い関数があった時、その一部。例えば前半分と後ろ半分みたいに分けて
汎用的ではない関数(というよりもルーチン)を増やすやり方。
”見通しが悪くなる" という言葉がうまく表している。
間違ったやり方は、汎用的ではない関数ができるから"見ないといけない"
「処理があちこちにジャンプして見にくい」など言うのはまさにこれが原因
正しいやり方ならは、汎用的でシンプルだから(一度見るだけで)あとは見なくて良くなる。
見るべきコードが減って処理も分割されないので、あちこちにジャンプすることもなく、見通しが良くなる。
それは分割の仕方が間違ってる派
正しいやり方は
長い関数があった時、その中で汎用的に使える所をシンプルな関数に
抜き出しながら全体を短くするというやり方。
間違ったやり方だと
長い関数があった時、その一部。例えば前半分と後ろ半分みたいに分けて
汎用的ではない関数(というよりもルーチン)を増やすやり方。
”見通しが悪くなる" という言葉がうまく表している。
間違ったやり方は、汎用的ではない関数ができるから"見ないといけない"
「処理があちこちにジャンプして見にくい」など言うのはまさにこれが原因
正しいやり方ならは、汎用的でシンプルだから(一度見るだけで)あとは見なくて良くなる。
見るべきコードが減って処理も分割されないので、あちこちにジャンプすることもなく、見通しが良くなる。
365デフォルトの名無しさん
2014/12/19(金) 23:26:05.82ID:wb+cst2b >>364
以上、本ばかり読んでてコード書いたことのない自称できるプログラマーの意見でした
以上、本ばかり読んでてコード書いたことのない自称できるプログラマーの意見でした
366デフォルトの名無しさん
2014/12/19(金) 23:29:01.15ID:YQiCmoKD >>365
なんにも言い返していない所がウケるw
なんにも言い返していない所がウケるw
367デフォルトの名無しさん
2014/12/19(金) 23:44:37.90ID:cAPBq6kb なかなか難しいところだ脳。
やっぱコード書く前にしっかり設計やってからやるべきなのかね。
趣味だけども
やっぱコード書く前にしっかり設計やってからやるべきなのかね。
趣味だけども
368デフォルトの名無しさん
2014/12/19(金) 23:57:59.54ID:wb+cst2b369デフォルトの名無しさん
2014/12/20(土) 01:22:27.35ID:+b2U+9C3 このスレの忘年会みたいな軽いノリで、リーダブルじゃない現場コードの晒し合いとか愚痴晒し合いとかしませんか
言語問わずなんでもありで
丁度上司のunreadableコードと戦っててもうね
出所バレない感じに整形したりしてるんですがもうね
言語問わずなんでもありで
丁度上司のunreadableコードと戦っててもうね
出所バレない感じに整形したりしてるんですがもうね
370デフォルトの名無しさん
2014/12/20(土) 01:41:00.69ID:acQ5HpBR 再帰関数使いたいけど無名関数じゃ再帰できないようだからしぶしぶprivateメソッド化して細切れになる現象
371デフォルトの名無しさん
2014/12/20(土) 05:18:20.39ID:dWuhsWfV372デフォルトの名無しさん
2014/12/20(土) 09:26:41.56ID:z0Uvrlhl >>370つ Yコンビネータ
って全然リーダブルじゃねーか
って全然リーダブルじゃねーか
373デフォルトの名無しさん
2014/12/20(土) 10:07:02.21ID:KOv8i75g void isReadable()
374デフォルトの名無しさん
2014/12/20(土) 10:10:00.30ID:KOv8i75g new codeClone[num_of_func]
375デフォルトの名無しさん
2014/12/20(土) 12:02:33.91ID:F1BtQojg376デフォルトの名無しさん
2014/12/20(土) 12:12:29.43ID:cUhMXe+F377デフォルトの名無しさん
2014/12/20(土) 12:16:04.49ID:F1BtQojg >>371
> ワンストップ・サービス(窓口)のFacadeはどうなる?
その例から何を言いたいのかよくわからないよ。
何か俺が言ったことを勘違いしていそうだから、
勘違いしていそうなところの補足をしておく。
> 間違ったやり方だと
>
> 長い関数があった時、その一部。例えば前半分と後ろ半分みたいに分けて
> 汎用的ではない関数(というよりもルーチン)を増やすやり方。
この前半分と後ろ半分にわける間違ったやり方というのは、
例えば一つの工程をA、Bの二つに分けた時、
Bの内容(引数・戻り値じゃなくて"内容")を見ないと
Aが最終的にどうなるかわからないようなもののこと。
Facadeみたいにそれぞれの独立した工程に処理を渡して
引数・戻り値といった最小限の情報だけでやり出来るものは関係ない。
> ワンストップ・サービス(窓口)のFacadeはどうなる?
その例から何を言いたいのかよくわからないよ。
何か俺が言ったことを勘違いしていそうだから、
勘違いしていそうなところの補足をしておく。
> 間違ったやり方だと
>
> 長い関数があった時、その一部。例えば前半分と後ろ半分みたいに分けて
> 汎用的ではない関数(というよりもルーチン)を増やすやり方。
この前半分と後ろ半分にわける間違ったやり方というのは、
例えば一つの工程をA、Bの二つに分けた時、
Bの内容(引数・戻り値じゃなくて"内容")を見ないと
Aが最終的にどうなるかわからないようなもののこと。
Facadeみたいにそれぞれの独立した工程に処理を渡して
引数・戻り値といった最小限の情報だけでやり出来るものは関係ない。
378デフォルトの名無しさん
2014/12/20(土) 12:18:32.86ID:F1BtQojg >>376
区別できているかできていないかの前に
質問に答えてよ。
俺は「無限の時間と労力をかけてでもやれ」なんて一言も言っていない。
でもまあ、仕事(作業)するなら時間がかかるのはあたりまえだよ。
(その時間内で)適切なやり方をやれって言っているだけだが
どうして無限の時間をかけるって話になったのさ?
区別できているかできていないかの前に
質問に答えてよ。
俺は「無限の時間と労力をかけてでもやれ」なんて一言も言っていない。
でもまあ、仕事(作業)するなら時間がかかるのはあたりまえだよ。
(その時間内で)適切なやり方をやれって言っているだけだが
どうして無限の時間をかけるって話になったのさ?
379デフォルトの名無しさん
2014/12/20(土) 12:21:24.19ID:F1BtQojg 「適切なやり方をやれ」って言っただけなのに
それを「無限の時間と労力をかけてでもやれ」と勘違いしてしまうのは
「適切なやり方をやったら、俺は無限の時間がかかるんだ。適切なやり方=無限の時間なんだ」って
>>368が言っているようにみえるのは仕方ないでしょw
それを「無限の時間と労力をかけてでもやれ」と勘違いしてしまうのは
「適切なやり方をやったら、俺は無限の時間がかかるんだ。適切なやり方=無限の時間なんだ」って
>>368が言っているようにみえるのは仕方ないでしょw
380デフォルトの名無しさん
2014/12/20(土) 13:02:04.48ID:lS6KGt9L381デフォルトの名無しさん
2014/12/20(土) 13:09:20.32ID:z0Uvrlhl382デフォルトの名無しさん
2014/12/20(土) 13:22:29.06ID:cUhMXe+F だから正論に反論なんてできないよ
「適切なやり方やればいい」
間違ったことは言ってないからな
でも、そんなことは小学生でも言えるわ w
「適切なやり方やればいい」
間違ったことは言ってないからな
でも、そんなことは小学生でも言えるわ w
383デフォルトの名無しさん
2014/12/20(土) 14:21:29.36ID:qyYbVqEq >>382の上司「無限の時間をかけてでも適切なことをやれ!でも給料はいつも通り!」
って言われてるからここで愚痴ってるんでしょ
って言われてるからここで愚痴ってるんでしょ
384デフォルトの名無しさん
2014/12/20(土) 22:26:54.94ID:F1BtQojg >>382
だから変なのは「無限の時間」って話が出てきた所だけだよ。
正論言ってるんだから、俺が言った内容に反論できないのはわかってるよ。
俺が言った内容ではない話が、どこからできたんだ?って言ってるだけ。
だから変なのは「無限の時間」って話が出てきた所だけだよ。
正論言ってるんだから、俺が言った内容に反論できないのはわかってるよ。
俺が言った内容ではない話が、どこからできたんだ?って言ってるだけ。
385デフォルトの名無しさん
2014/12/20(土) 22:56:28.88ID:cUhMXe+F386デフォルトの名無しさん
2014/12/20(土) 23:25:50.20ID:F1BtQojg >>385
誰が誰の立場でできませんっていうんだよ?
わけわからんわ。
時間内に出来るかどうかはケースバイケースなんだし、
出来るところまでやればいいだけだろ。
それに技術力を上げれば時間内にできることも多くなるぞ。
何も努力しないでコピペばかりするから技術力も上がらなくなる。
誰が誰の立場でできませんっていうんだよ?
わけわからんわ。
時間内に出来るかどうかはケースバイケースなんだし、
出来るところまでやればいいだけだろ。
それに技術力を上げれば時間内にできることも多くなるぞ。
何も努力しないでコピペばかりするから技術力も上がらなくなる。
387デフォルトの名無しさん
2014/12/21(日) 00:56:33.95ID:XZ/0moqW >>385
上司「何言ってるんだ土日があるだろ。ただしそれはお前の能力不足が原因だから残業代は出ないからな。」
上司「何言ってるんだ土日があるだろ。ただしそれはお前の能力不足が原因だから残業代は出ないからな。」
388デフォルトの名無しさん
2014/12/21(日) 11:05:47.64ID:ikKWfd9P389デフォルトの名無しさん
2014/12/21(日) 13:01:56.36ID:XZ/0moqW >>388
上司「俺は土日をつかえなんて指示はしていない。そんな計画を承認したはずもない。
ただお前が業務時間内に間に合わないなら土日や深夜や自宅時間も使わざる負えないだろうということだ。そんなこともわからんのか。」
上司「俺は土日をつかえなんて指示はしていない。そんな計画を承認したはずもない。
ただお前が業務時間内に間に合わないなら土日や深夜や自宅時間も使わざる負えないだろうということだ。そんなこともわからんのか。」
390デフォルトの名無しさん
2014/12/21(日) 14:38:18.36ID:dx70AcKS391デフォルトの名無しさん
2014/12/21(日) 14:40:57.90ID:dx70AcKS あ、もしかして俺なら(上級者なら)時間内にできる仕事を
どれだけ時間があっても出来ないって言いたい人なのかな?
俺にはいくら時間があっても仕事できないよって。
どれだけ時間があっても出来ないって言いたい人なのかな?
俺にはいくら時間があっても仕事できないよって。
392デフォルトの名無しさん
2014/12/21(日) 14:50:49.21ID:dx70AcKS まあ、ここいらでリーダブルコーディングの話に戻すか。
仕事が遅い人って見ていると、自分で自分を苦しめてるんだよね。
自分でぐちゃぐちゃなコードを書いて、
正しく動かない、バグが直せないって言ってる。
自分が書いたコードと戦っているわけさw
リーダブル、つまり読みやすいコードを書けるように
自分を鍛えれば、自分が書いたコードと戦うことは少なくなっていく。
でも仕事が遅い人って、自分が書いたコードと戦うことに精一杯。
時間がないを言い訳にしてレベルを上げようとしないから、
戦う敵を量産するだけで、更に時間をなくしてる。
コードは読むものなのだが、どうもレベルが低い人にとっては
解析する物になっているようだ。解析した後その謎を片付けないでそのままにして
さらにコードを追加するから、書けば書くほど謎が深まっていく
だから仕事をするばするほどかかる時間が増えていく。
あ、だから無限の時間って話になるのかw
仕事が遅い人って見ていると、自分で自分を苦しめてるんだよね。
自分でぐちゃぐちゃなコードを書いて、
正しく動かない、バグが直せないって言ってる。
自分が書いたコードと戦っているわけさw
リーダブル、つまり読みやすいコードを書けるように
自分を鍛えれば、自分が書いたコードと戦うことは少なくなっていく。
でも仕事が遅い人って、自分が書いたコードと戦うことに精一杯。
時間がないを言い訳にしてレベルを上げようとしないから、
戦う敵を量産するだけで、更に時間をなくしてる。
コードは読むものなのだが、どうもレベルが低い人にとっては
解析する物になっているようだ。解析した後その謎を片付けないでそのままにして
さらにコードを追加するから、書けば書くほど謎が深まっていく
だから仕事をするばするほどかかる時間が増えていく。
あ、だから無限の時間って話になるのかw
393デフォルトの名無しさん
2014/12/21(日) 15:48:14.53ID:wuWkedhz >>391-392
話の流れも読めてないバカ乙
話の流れも読めてないバカ乙
394デフォルトの名無しさん
2014/12/22(月) 21:28:40.57ID:ndw8Yqnw 流れが読めないのはリーダブルでないのの典型
395デフォルトの名無しさん
2014/12/22(月) 22:36:05.51ID:bXw2G98F と責任転嫁w
396デフォルトの名無しさん
2014/12/27(土) 23:32:28.76ID:OlYxJx97 自作のソフト、ネタ尽きてきたからコードの簡略化してたら5時間くらいたってた
397デフォルトの名無しさん
2015/10/14(水) 23:40:08.29ID:DmhFYPJM クリエイティブじゃないやつはリファクタリングして仕事した気になってる勘違いが多い
398デフォルトの名無しさん
2015/10/15(木) 01:26:25.23ID:h4rpxLqO ぎくっ
399デフォルトの名無しさん
2015/10/15(木) 12:52:24.82ID:fomBTPP1 はい
400デフォルトの名無しさん
2016/05/01(日) 16:37:41.94ID:tKi6j9CT 匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrentがオープンソースで開発されています
言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?
Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al
ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw
The Covenant Project
概要
Covenantは、純粋P2Pのファイル共有ソフトです
目的
インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します
特徴
Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)
接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません
1^
BitTorrentがオープンソースで開発されています
言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?
Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al
ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw
The Covenant Project
概要
Covenantは、純粋P2Pのファイル共有ソフトです
目的
インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します
特徴
Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)
接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません
1^
401デフォルトの名無しさん
2016/11/11(金) 16:02:24.59ID:dP+cWDA6■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「おこめ券は米以外の食品も買える。効果的な活用を」 地元で農水相 [山形県] [少考さん★]
- 【速報】「女芸人No.1決定戦 THE W」9代目女王にニッチェ! 7年ぶり3度目で悲願の優勝 [牛丼★]
- 【芸能】『女芸人No.1決定戦THE W』 粗品が最後にバッサリ「優勝賞金1000万円にしてはレベル低い大会」 [冬月記者★]
- 今年の流行語大賞 『働いて働いて働いてまいります』が受賞で不快感… 過労自殺の遺族らが会見「家族にむち打つような行為だ」 [冬月記者★]
- 【東京】「家族で話題にして」 “世田谷一家殺害から25年 警視庁が呼びかけ [煮卵★]
- 【広島】ペルー女性の国保加入を誤って認め、福山市が医療費484万円を肩代わりするミス…入院して手術を受ける [ぐれ★]
- 宅急便デス
- さっむ
- 千晴だけど30年前にゲームのカセット貸したら勝手に売られたんだけど
- ッシャー
- 千晴って大王だったの?
- クズ「勉強頑張らなかった奴は一生DQNと一緒に肉体労働しろ」☚勉強頑張れるのも環境と巡り合わせなんだが? [783475554]
