2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

リーダブルコーディング技術スレ

1 :デフォルトの名無しさん:2013/10/11(金) 01:06:21.56 .net
リーダブルコードとは

・読みやすさ、理解しやすさを追及したコードのことです
・読みやすいということはメンテナンス性も高いということです。
・理解しやすいコードはコードレビューも楽になります。
・理解しやすいコードはバグも少なくなります。
・短いほうが優れていることが多いですが、必ずしも短いほうがいいとは限りません。

俺ルール
・書き方の勝負であり、言語の勝負をしないでください。
・標準、非標準に限らずライブラリを使いましょう。
・なければ自分で関数を作りましょう。関数はなるべく汎用的に。

こういうコードを読みやすくするにはどうすればいいでしょうか?
というようなことを語るスレ。需要ありますかね?

351 :デフォルトの名無しさん:2014/12/13(土) 02:19:46.63 ID:WvyZJyoU.net
そうだな

352 :デフォルトの名無しさん:2014/12/13(土) 05:42:46.74 ID:xVemfz4a.net
書いてみた
http://ideone.com/3l8aq6

353 :デフォルトの名無しさん:2014/12/13(土) 10:22:39.34 ID:xVemfz4a.net
と思ったら終わってたのね、話

354 :デフォルトの名無しさん:2014/12/13(土) 10:25:53.22 ID:/4slIr06.net
>>352
え??

そもそも ID:Znidw3Lc なん?

355 :デフォルトの名無しさん:2014/12/13(土) 10:31:24.66 ID:xVemfz4a.net
>>354
ちがうよ
ログ見ながら書いてみただけ

356 :デフォルトの名無しさん:2014/12/13(土) 10:36:24.43 ID:JDqKcE2X.net
十年ROMれ

357 :デフォルトの名無しさん:2014/12/13(土) 10:40:39.82 ID:xVemfz4a.net
あぅぅ

358 :名無しさん@そうだ選挙に行こう:2014/12/13(土) 23:21:18.25 ID:K/9GRqnp.net
10年後に2chがなくなってなきゃいいが…

359 :デフォルトの名無しさん:2014/12/18(木) 20:59:16.69 ID:IPlfnya6.net
c言語である程度プログラムが大きくなってくると関数の数も増えて来るし
どの関数がどの関数を呼び出してるとか色々増えて来ると思うんだけど
こういうのってどういう管理が一般的なんだろか

360 :デフォルトの名無しさん:2014/12/18(木) 22:04:19.41 ID:PpZ3cpAI.net
>>359
> どの関数がどの関数を呼び出してるとか色々増えて来ると思うんだけど

増えていかないようにモジュール化する

> こういうのってどういう管理が一般的なんだろか

増えちゃったとか不幸にもぐちゃぐちゃのソースを解析するなら Doxygen とか、金があるなら Imagix とかで見るとか

361 :デフォルトの名無しさん:2014/12/18(木) 23:37:34.74 ID:mulBDlyx.net
関数がある程度増えたら、それを小さく分割するってことを
しないからどんどん増えるんだよね。

なんで過去のコードを修正しないのか?
簡単なうちにすぐ手を付けないから、あとから手遅れになるんだけど。

362 :デフォルトの名無しさん:2014/12/18(木) 23:47:41.58 ID:LWfoPtOf.net
あまり小さく分割すると見通しが悪くなる派

363 :デフォルトの名無しさん:2014/12/19(金) 14:45:53.53 ID:YQiCmoKD.net
>>362
それは分割の仕方が間違ってる派

正しいやり方は

長い関数があった時、その中で汎用的に使える所をシンプルな関数に
抜き出しながら全体を短くするというやり方。

間違ったやり方だと

長い関数があった時、その一部。例えば前半分と後ろ半分みたいに分けて
汎用的ではない関数(というよりもルーチン)を増やすやり方。

”見通しが悪くなる" という言葉がうまく表している。
間違ったやり方は、汎用的ではない関数ができるから"見ないといけない"
「処理があちこちにジャンプして見にくい」など言うのはまさにこれが原因

正しいやり方ならは、汎用的でシンプルだから(一度見るだけで)あとは見なくて良くなる。
見るべきコードが減って処理も分割されないので、あちこちにジャンプすることもなく、見通しが良くなる。

364 :デフォルトの名無しさん:2014/12/19(金) 23:26:05.82 ID:wb+cst2b.net
>>363
以上、本ばかり読んでてコード書いたことのない自称できるプログラマーの意見でした

365 :デフォルトの名無しさん:2014/12/19(金) 23:29:01.15 ID:YQiCmoKD.net
>>364
なんにも言い返していない所がウケるw

366 :デフォルトの名無しさん:2014/12/19(金) 23:44:37.90 ID:cAPBq6kb.net
なかなか難しいところだ脳。
やっぱコード書く前にしっかり設計やってからやるべきなのかね。
趣味だけども

367 :デフォルトの名無しさん:2014/12/19(金) 23:57:59.54 ID:wb+cst2b.net
>>365
正論だから反論はできないよ
無限の時間と労力かけてでもやれと言う主張だから、役に立たないけどな w

368 :デフォルトの名無しさん:2014/12/20(土) 01:22:27.35 ID:+b2U+9C3.net
このスレの忘年会みたいな軽いノリで、リーダブルじゃない現場コードの晒し合いとか愚痴晒し合いとかしませんか
言語問わずなんでもありで

丁度上司のunreadableコードと戦っててもうね
出所バレない感じに整形したりしてるんですがもうね

369 :デフォルトの名無しさん:2014/12/20(土) 01:41:00.69 ID:acQ5HpBR.net
再帰関数使いたいけど無名関数じゃ再帰できないようだからしぶしぶprivateメソッド化して細切れになる現象

370 :デフォルトの名無しさん:2014/12/20(土) 05:18:20.39 ID:dWuhsWfV.net
>>363
ワンストップ・サービス(窓口)のFacadeはどうなる?

fA(){
fB();fC();fD();
}

>>366
Eclipseのリファクタリングの説明を読むといい

371 :デフォルトの名無しさん:2014/12/20(土) 09:26:41.56 ID:z0Uvrlhl.net
>>369つ Yコンビネータ
って全然リーダブルじゃねーか

372 :デフォルトの名無しさん:2014/12/20(土) 10:07:02.21 ID:KOv8i75g.net
void isReadable()

373 :デフォルトの名無しさん:2014/12/20(土) 10:10:00.30 ID:KOv8i75g.net
new codeClone[num_of_func]

374 :デフォルトの名無しさん:2014/12/20(土) 12:02:33.91 ID:F1BtQojg.net
>>367
> 無限の時間と労力かけてでもやれと言う主張だから、役に立たないけどな w

なんで無限?w
あなたが仕事すると無限の時間がかかるって話?w

375 :デフォルトの名無しさん:2014/12/20(土) 12:12:29.43 ID:cUhMXe+F.net
>>374
> 無限の時間と労力かけてでも
> 無限の時間と労力かかるけど

区別できないアホは絡んで来るなよ

376 :デフォルトの名無しさん:2014/12/20(土) 12:16:04.49 ID:F1BtQojg.net
>>370
> ワンストップ・サービス(窓口)のFacadeはどうなる?

その例から何を言いたいのかよくわからないよ。

何か俺が言ったことを勘違いしていそうだから、
勘違いしていそうなところの補足をしておく。

> 間違ったやり方だと
>
> 長い関数があった時、その一部。例えば前半分と後ろ半分みたいに分けて
> 汎用的ではない関数(というよりもルーチン)を増やすやり方。

この前半分と後ろ半分にわける間違ったやり方というのは、
例えば一つの工程をA、Bの二つに分けた時、
Bの内容(引数・戻り値じゃなくて"内容")を見ないと
Aが最終的にどうなるかわからないようなもののこと。

Facadeみたいにそれぞれの独立した工程に処理を渡して
引数・戻り値といった最小限の情報だけでやり出来るものは関係ない。

377 :デフォルトの名無しさん:2014/12/20(土) 12:18:32.86 ID:F1BtQojg.net
>>375
区別できているかできていないかの前に
質問に答えてよ。

俺は「無限の時間と労力をかけてでもやれ」なんて一言も言っていない。
でもまあ、仕事(作業)するなら時間がかかるのはあたりまえだよ。

(その時間内で)適切なやり方をやれって言っているだけだが
どうして無限の時間をかけるって話になったのさ?

378 :デフォルトの名無しさん:2014/12/20(土) 12:21:24.19 ID:F1BtQojg.net
「適切なやり方をやれ」って言っただけなのに
それを「無限の時間と労力をかけてでもやれ」と勘違いしてしまうのは

「適切なやり方をやったら、俺は無限の時間がかかるんだ。適切なやり方=無限の時間なんだ」って
>>367が言っているようにみえるのは仕方ないでしょw

379 :デフォルトの名無しさん:2014/12/20(土) 13:02:04.48 ID:lS6KGt9L.net
>>376
ようは暗黙にBの事前条件がAの事後条件となるのがダメということかね。
>>363の「汎用的」がどういうものを指しているのかいまいち意味がつかめなかったが、
条件を明確にするなら汎用/専用関係なくていいんじゃね?

380 :デフォルトの名無しさん:2014/12/20(土) 13:09:20.32 ID:z0Uvrlhl.net
>>396
java で何でかんでも定数定義して(カウンタ変数とか!)
フォーマッタでぐちゃぐちゃになったソースは見たことある

381 :デフォルトの名無しさん:2014/12/20(土) 13:22:29.06 ID:cUhMXe+F.net
だから正論に反論なんてできないよ
「適切なやり方やればいい」
間違ったことは言ってないからな
でも、そんなことは小学生でも言えるわ w

382 :デフォルトの名無しさん:2014/12/20(土) 14:21:29.36 ID:qyYbVqEq.net
>>381の上司「無限の時間をかけてでも適切なことをやれ!でも給料はいつも通り!」
って言われてるからここで愚痴ってるんでしょ

383 :デフォルトの名無しさん:2014/12/20(土) 22:26:54.94 ID:F1BtQojg.net
>>381
だから変なのは「無限の時間」って話が出てきた所だけだよ。
正論言ってるんだから、俺が言った内容に反論できないのはわかってるよ。
俺が言った内容ではない話が、どこからできたんだ?って言ってるだけ。

384 :デフォルトの名無しさん:2014/12/20(土) 22:56:28.88 ID:cUhMXe+F.net
>>383
そんな時間じゃできません
と言われたらどう答えるんだ?

385 :デフォルトの名無しさん:2014/12/20(土) 23:25:50.20 ID:F1BtQojg.net
>>384
誰が誰の立場でできませんっていうんだよ?
わけわからんわ。

時間内に出来るかどうかはケースバイケースなんだし、
出来るところまでやればいいだけだろ。

それに技術力を上げれば時間内にできることも多くなるぞ。
何も努力しないでコピペばかりするから技術力も上がらなくなる。

386 :デフォルトの名無しさん:2014/12/21(日) 00:56:33.95 ID:XZ/0moqW.net
>>384
上司「何言ってるんだ土日があるだろ。ただしそれはお前の能力不足が原因だから残業代は出ないからな。」

387 :デフォルトの名無しさん:2014/12/21(日) 11:05:47.64 ID:ikKWfd9P.net
>>385
> 誰が誰の立場でできませんっていうんだよ?

はあ?
指示を受けた人がその指示を実行する責任を負う立場でだよ。
常識だと思うが。

まあ、常識ないから
> 出来るところまでやればいいだけだろ。
なんてことを平気で言えるんだろうな。

>>386
先月すでに土日も使うことにあなたの指示で計画変更されてますが、お忘れでしょうか? ...

388 :デフォルトの名無しさん:2014/12/21(日) 13:01:56.36 ID:XZ/0moqW.net
>>387
上司「俺は土日をつかえなんて指示はしていない。そんな計画を承認したはずもない。
ただお前が業務時間内に間に合わないなら土日や深夜や自宅時間も使わざる負えないだろうということだ。そんなこともわからんのか。」

389 :デフォルトの名無しさん:2014/12/21(日) 14:38:18.36 ID:dx70AcKS.net
>>387
> 指示を受けた人がその指示を実行する責任を負う立場でだよ。

つまり俺か? なら出来ますって言えばいいだけじゃないか。

「お前このバグ直せる?」って聞かれた時
出来ますって答えるだろ?

390 :デフォルトの名無しさん:2014/12/21(日) 14:40:57.90 ID:dx70AcKS.net
あ、もしかして俺なら(上級者なら)時間内にできる仕事を
どれだけ時間があっても出来ないって言いたい人なのかな?
俺にはいくら時間があっても仕事できないよって。

391 :デフォルトの名無しさん:2014/12/21(日) 14:50:49.21 ID:dx70AcKS.net
まあ、ここいらでリーダブルコーディングの話に戻すか。

仕事が遅い人って見ていると、自分で自分を苦しめてるんだよね。

自分でぐちゃぐちゃなコードを書いて、
正しく動かない、バグが直せないって言ってる。
自分が書いたコードと戦っているわけさw

リーダブル、つまり読みやすいコードを書けるように
自分を鍛えれば、自分が書いたコードと戦うことは少なくなっていく。

でも仕事が遅い人って、自分が書いたコードと戦うことに精一杯。
時間がないを言い訳にしてレベルを上げようとしないから、
戦う敵を量産するだけで、更に時間をなくしてる。

コードは読むものなのだが、どうもレベルが低い人にとっては
解析する物になっているようだ。解析した後その謎を片付けないでそのままにして
さらにコードを追加するから、書けば書くほど謎が深まっていく
だから仕事をするばするほどかかる時間が増えていく。

あ、だから無限の時間って話になるのかw

392 :デフォルトの名無しさん:2014/12/21(日) 15:48:14.53 ID:wuWkedhz.net
>>390-391
話の流れも読めてないバカ乙

393 :デフォルトの名無しさん:2014/12/22(月) 21:28:40.57 ID:ndw8Yqnw.net
流れが読めないのはリーダブルでないのの典型

394 :デフォルトの名無しさん:2014/12/22(月) 22:36:05.51 ID:bXw2G98F.net
と責任転嫁w

395 :デフォルトの名無しさん:2014/12/27(土) 23:32:28.76 ID:OlYxJx97.net
自作のソフト、ネタ尽きてきたからコードの簡略化してたら5時間くらいたってた

396 :デフォルトの名無しさん:2015/10/14(水) 23:40:08.29 ID:DmhFYPJM.net
クリエイティブじゃないやつはリファクタリングして仕事した気になってる勘違いが多い

397 :デフォルトの名無しさん:2015/10/15(木) 01:26:25.23 ID:h4rpxLqO.net
ぎくっ

398 :デフォルトの名無しさん:2015/10/15(木) 12:52:24.82 ID:fomBTPP1.net
はい

399 :デフォルトの名無しさん:2016/05/01(日) 16:37:41.94 ID:tKi6j9CT.net
匿名通信(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^

400 :デフォルトの名無しさん:2016/11/11(金) 16:02:24.59 ID:dP+cWDA6.net
>>58
>道具が使えるだけの奴は三流。
>技術・知識も使いこなせて二流。
>人も使いこなせてこそ一流。

医療系の管理者です。
今更ですが金言だと思いました。
その立場にならんとわからないですね。

総レス数 400
110 KB
掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★