■ このスレッドは過去ログ倉庫に格納されています
リファクタリングをただのコード修正と思ってる人へ
- 1 :デフォルトの名無しさん:2010/05/29(土) 17:25:56 .net
- テストも書かないでリファクタリングとかうけるw
まずな、リファクタリングでは機能追加・修正は行わない。
動作はまったく同じでコードをきれいに書き換えること。
書き換えるといっても、これなら同じ動きだろ?って推測でやってはいけない。
まずテストを書く。ユニットテストをできるように、
単一のクラスでインスタンスを作る。
汚いコードなのだからたいていは依存関係のせいで単一ではクラスが生成できない
それを生成するために、クラスの動作を書き換える。
といっても元のコードは修正しない。継承やプリプロセッサを使って
依存関係を断ち切るために既存のコードを上書きする。
どうしてもそれが不可能な場合には、決められた手順で最小のコード修正を行う
そうやって既存のクラスのユニットテストを行う。
それでやっとリファクタリングが行える。
既存のクラスのユニットテストを通るように新たなコードに修正、
もしくは新規作成して置き換える。
この手順と考え方を守ってないのはリファクタリングではない。
で?
- 2 :デフォルトの名無しさん:2010/05/29(土) 17:27:43 .net
- Eclipseのリファクタリングは名前変更もリファクタリングのひとつなんだよなあ
- 3 :デフォルトの名無しさん:2010/05/29(土) 17:33:05 .net
- リファクタリングは結果ではない。
プロセスだ。やり方だ。
コードがきれいになったからリファクタリングをしたと
思うのは間違いだ。
バグを入れないのは当たり前だが、コードの動作を変えずに
決められたた手順をもちい、クラス間の依存関係を減らすことで
ユニットテストできるようにする作業がリファクタリングだ。
テストコードが増えてなければ、それはコードを書き直しただけで
リファクタリングとは呼ばない。
リファクタリングブラウザとは、このリファクタリング作業を簡単にするための
ツールであり、リファクタリングブラウザの機能を使った作業(名前変更など)そのものは
リファクタリングではない。
- 4 :デフォルトの名無しさん:2010/05/29(土) 17:41:18 .net
- 本当のリファクタリングを知ると、
新たな設計方針にたどり着ける。
テストしやすい設計。
クラスを単独で生成できるように
依存関係(クラスが別のクラスを使用するなど)が
少ない設計。
publicメソッドの引数には、なるべくクラスを使わない。
クラス内部で別のクラスを生成しない(必要な場合は外部から渡す)
- 5 :デフォルトの名無しさん:2010/05/29(土) 17:59:47 .net
- >クラス内部で別のクラスを生成しない(必要な場合は外部から渡す)
全部main(String [] arg)で作るんですねわかりま…
- 6 :デフォルトの名無しさん:2010/05/29(土) 18:00:34 .net
- 宇宙飛行士様が来たぞ
- 7 :デフォルトの名無しさん:2010/05/29(土) 18:07:01 .net
- リファクタリングがしたいと思ったとき、
こういう考えの流れになっていないとだめ
リファクタリングしたい
↓
リファクタリングするにはユニットテストコードが必要
↓
既存のコードを(なるべく)修正せずにテストするにはどうするか。
↓
(依存関係が無ければ簡単にテストコードを書けるが、たいていはそのままではテストコードかけないので)
既存のコード・クラスをどうやって他のコード・クラスとの依存関係から分離させるか。
この分離が一番大変な作業。
分離させることに成功したらあとは簡単。
ユニットテストを書いてコードを修正すればよい。
- 8 :デフォルトの名無しさん:2010/05/29(土) 18:17:41 .net
- 正直名前変更くらいしか使ってないな、それでも相当便利だが
- 9 :デフォルトの名無しさん:2010/05/29(土) 18:24:16 .net
- >>8
名前変更(リファクタリングブラウザの機能)というのは、
例えて言うのなら小説を書く(リファクタリング)ときの文房具(リファクタリングブラウザ)と
同じ関係だよ。
文房具を使って文字を書いたり、消しゴムで消したりという作業は、
小説を書くための道具を使っているわけだが、
本質的には小説を書く行為そのものではない。
- 10 :デフォルトの名無しさん:2010/05/29(土) 23:54:35 .net
- XXXはXXXXXであるべき、なんてXXは全くもってXXXだ。
- 11 :デフォルトの名無しさん:2010/05/30(日) 00:14:58 .net
- >>1
その通りです。
何か嫌がらせされてる気がする。
- 12 :11:2010/05/30(日) 00:52:51 .net
- ごめんなさい。取り乱しました。
ソフトウェアテストで良い本ありませんか。
- 13 :デフォルトの名無しさん:2010/05/30(日) 02:51:03 .net
- >>12
レガシーコード改善ガイド
- 14 :デフォルトの名無しさん:2010/05/30(日) 10:13:00 .net
- このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
京都大学霊長類研究所
- 15 :デフォルトの名無しさん:2010/05/30(日) 18:16:22 .net
- >>14
だと思った
>>1の一行目で分かった
- 16 :デフォルトの名無しさん:2010/05/30(日) 19:47:36 .net
- リ略をただのコード修正だと思わないでよ
コーダの思いがこもってるんだからあ
- 17 :デフォルトの名無しさん:2010/05/30(日) 22:16:42 .net
- どおりで重いと思った
- 18 :デフォルトの名無しさん:2010/05/30(日) 22:34:43 .net
- >>16
釘宮風にたのむ
- 19 :デフォルトの名無しさん:2010/05/30(日) 22:44:12 .net
- ばーかばーか
- 20 :11:2010/05/31(月) 06:09:05 .net
- >>13
ありがとうございます。
本見てみます。
- 21 :デフォルトの名無しさん:2010/05/31(月) 21:06:25 .net
- >>19
チルノのパーフェクト算数教室?
- 22 :デフォルトの名無しさん:2010/06/01(火) 01:55:41 .net
- え…あぅ……わ、私そんなんじゃないのに…
これは、コード修正じゃなくてりふぁくたりんぐなんだから!
ちゃんと勉強してから出直しなさい!
なによ……わざわざしてあげるんだから…何か言いなさいよ!
あっ、べ、別にアンタのためにやるんじゃないんだから、
勘違いしないでよね!ばーかばーか!
- 23 :デフォルトの名無しさん:2010/06/01(火) 12:35:24 .net
- なんか決まりがあって、そうしないとダメだって言ってるような頭固い人間がプログラムしてるのが間違いだろ。
目的に即してれば、細かいことは違ったって問題ないのに、それは手順としてあーだーこーだ・・・みっともない。
- 24 :デフォルトの名無しさん:2010/06/04(金) 19:59:43 .net
- >>12
遅レスですまん
ファウラーの「リファクタリング」は必読
「パターン指向リファクタリング入門」はオススメ
あと、関連してデザインパターン関連の本を読んでおくといいかも
- 25 :デフォルトの名無しさん:2010/06/19(土) 17:52:31 .net
- リファクタリングって流行らないね。
そもそもリファクタリングするために必要なユニットテスト技術も未熟だからか。
日本は技術レベルが低いよ。
愚痴はここまでにして、データベースのフィールドってリファクタリングするのに
厄介だよね。ただの文字列だと名前変更に追尾できない。
それはO/Rマッパー使ってもそうだけど、データベース関連はリファクタリングを念頭に置くと、
SQLとデータベースからクラスとして自動生成したほうがいいのかもしれない。
このクラス(仮にDBCLASSとする)ではデータベースのフィールドが一メソッド(プロパティ)になる。
これはビジネスロジックを書くいわゆるモデルではなく、データベースの構造をあらわすだけのクラス。
DBCLASSのプロパティを変更しても、DBCLASS内部でアクセスしているデータベースのフィールド名は変わらない。
逆にアクセス先のデータベースのフィールド名を変えると、DBCLASS内部でアクセスする
データベースのフィールド名も自動的に変わる。
- 26 :デフォルトの名無しさん:2010/06/19(土) 17:56:15 .net
- ウェブアプリの場合、同じ問題が
フォームのクエリー名にも当てはまるんだよな。
要はデータではなく、意味がある名前であるキーを
ただの文字列として扱うのはやめようということ。
フォームのクエリー名を変更したら、
自動的にコードの名前に反映させたい。(逆もあり)
そのためのコードの生成機能が必要だよ。
- 27 :デフォルトの名無しさん:2010/06/19(土) 18:14:03 .net
- >>26
いまだにフォームの設定かいたら、その部分のコードが自動生成されないの?
みんなふつうにやってるとおもったんだが気のせいであったか。
- 28 :デフォルトの名無しさん:2010/06/19(土) 18:22:48 .net
- >>27
何の話?
自動生成されたとしても、それを文字列で扱っていたらだめだよ。
ようはリファクタリングブラウザで、それがキーとして認識されるような形になってほしい。
リファクタリングだけじゃなくて、コード補完もできるようになるから間違いが減るしね。
コンパイル時点でのエラー検出もおこなえるようになる。
- 29 :デフォルトの名無しさん:2010/06/19(土) 22:20:10 .net
- 社長に今なにやってる?と聞かれてリファクタリングしてます、と答えたら
いつも波風が立つのはなぜだろう
- 30 :デフォルトの名無しさん:2010/06/19(土) 22:24:56 .net
- リファクタリングがなんなのか、メリットとデメリットについてなど
理解してないからだろ
こういう成功例を見せながら地道に説得していくしかないんじゃないの?
ttp://ascii.jp/elem/000/000/497/497905/
- 31 :デフォルトの名無しさん:2010/06/19(土) 23:08:32 .net
- >>30
いい記事だった。
そこの社長ぐらい、うちんとこの社長も柔軟な頭だったらいいんだがなあ
- 32 :デフォルトの名無しさん:2010/06/20(日) 02:34:06 .net
- 理解させるには分かりやすいたとえが必要だと思う。
例えば平屋を拡張して2階、3階と増やしていったら、
1階にも手に入れないと、いつか倒壊しますよね?とか。
- 33 :デフォルトの名無しさん:2010/06/20(日) 06:23:44 .net
- 一階に手を入れたら倒壊しちゃいました、とか
- 34 :デフォルトの名無しさん:2010/06/20(日) 15:29:28 .net
- そもそも本当に1階にも手を入れないと倒れるのか?
やってみたら意外と倒壊しないんじゃないの?、とか
- 35 :デフォルトの名無しさん:2010/06/20(日) 18:34:34 .net
- 理解のないシステム 会社はそれだよね。腐ったシステムを抱え続けると将来的にどれだけのコストになるかわかってない。
だから目先のコスト増に怯えて将来の飛躍の芽を摘んでしまう。
- 36 :デフォルトの名無しさん:2010/06/20(日) 20:56:47 .net
- リファクタリングの重要性のわからん上司にどうわかってもらうかでずっと悩んでいたが、
理解のない人にはリファクタリングしているとはあえて言わないのも手だと
Ruby版リファクタ本に書いてあって目から鱗だったわ
- 37 :デフォルトの名無しさん:2010/06/23(水) 13:48:44 .net
- Rubyの場合結局Cで作り直すんだよな
- 38 :デフォルトの名無しさん:2010/06/24(木) 08:19:11 .net
- そんな分野でそもそもruby使うのがおかしい。
- 39 :デフォルトの名無しさん:2010/06/27(日) 21:52:39 .net
- リファクタリングしていると、仕事を押し付けてくる奴がいてうぜーよー。
どうもそいつはリファクタリングしている=暇そうにしていると思っているっぽい。
- 40 :デフォルトの名無しさん:2010/06/27(日) 22:30:05 .net
- 仕事を交代してやればいい
- 41 :デフォルトの名無しさん:2010/06/27(日) 22:31:35 .net
- リファクタリングの決断
http://www.infoq.com/jp/news/2010/06/decision-to-refactor
- 42 :デフォルトの名無しさん:2010/06/28(月) 02:42:24 .net
- >>39
>リファクタリングしている=暇そうにしていると思っているっぽい。
正解だから困る
- 43 :デフォルトの名無しさん:2010/06/29(火) 21:31:04 .net
- >38
組み込み向け「軽量Ruby」と「Rubyチップ」、福岡県が経産省の事業で開発へ
ttp://itpro.nikkeibp.co.jp/article/NEWS/20100628/349693/?ST=oss
的外れな提示だったらすまそ。
- 44 :デフォルトの名無しさん:2010/06/30(水) 14:19:54 .net
- 組み込みにスクリプト言語とな?w
- 45 :デフォルトの名無しさん:2010/06/30(水) 15:22:41 .net
- 組み込みスクリプトってLuaとかあるし普通じゃね、と思ったら
組み込み機器のほうの話なのか
- 46 :デフォルトの名無しさん:2010/07/01(木) 01:28:43 .net
- 組み込みJavaと同じ運命をたどる
- 47 :デフォルトの名無しさん:2010/07/01(木) 09:36:51 .net
- >>45
いちおうLuaはヤマハのルータなんかにも使われているぽい。
- 48 :デフォルトの名無しさん:2010/09/15(水) 19:43:18 .net
- 大規模なリファクタリングを行う方法
http://www.infoq.com/jp/news/2010/09/large-scale-refactoring
- 49 :デフォルトの名無しさん:2011/06/01(水) 22:25:20.30 .net
- リファクタリングなんてやって意味があると思ってる奴は消防
A〜Zまであるクラスの共通処理をPクラスとして纏めたとするわな
したら、PクラスをいじるたびにA〜Zまでの影響範囲を調べなあかんのやで
仮にAにしか関係しないPに入ってしまった共通処理を弄るのだって
一度結合したらはがしてAクラス特有の処理としてPクラスからAクラスを避ける処理なんて
結構、邪魔な処理になるで
それでもPとしてまとめてしまったらA〜Zまでサポートしていかなあかんのやで
リファクタリング、結構、だが、誰がこの未来を予測できる?
A〜Zまでの共通処理が走ってるPクラスを蹴飛ばしてPAクラスを新しく作って
A−PA、B〜Z−Pの関係を新しくぶった切るような切込みはできんやろ?
せいぜいPの処理にcase Aを入れるような修正が精一杯やないか?
今後を考えてリファクタリングなんてする意味があるんか?
- 50 :デフォルトの名無しさん:2011/06/01(水) 22:28:19.38 .net
- 共通処理をまとめるだけがリファクタリングではないし、
自動テストが伴わないものはリファクタリングとは呼ばない。
- 51 :デフォルトの名無しさん:2011/06/01(水) 22:28:23.13 .net
- >>1
- 52 :デフォルトの名無しさん:2011/06/01(水) 22:38:24.11 .net
- >>50
いや、上で書いたのはあくまで例だよ
上の例は処理をまとめることによって明らかに構造が汚くなってるよね?
この先もまとめたPクラスにA〜Zへのどれかの追加が入るたびに
case B、case C・・・と追加されていくだろうね
そのときPクラスを消滅する選択肢は誰か選べるんだろか?
こーゆーのってさ、その時点ででは確定しなくね?
じゃ、リファクタリングってなんのためにするの?
って根本的なところに目を向けたときに次の開発をしやすくするためでしょ?
したら、その仕様書もなしでリファクタリングをするってことは
仕様書もないのにプログラムの構造を「俺が好き」なだけの構造にただ意味もなく
書き換えてるだけのマスターベーションなんだよ
- 53 :デフォルトの名無しさん:2011/06/01(水) 23:55:42.31 .net
- どこの幼房かしらんが、
case B、case Cとなるようなまとめ方はアフォがやるものだろ。
それはリファクタリング以前の問題。
- 54 :デフォルトの名無しさん:2011/06/02(木) 06:38:02.16 .net
- >>53
ほうほう、それじゃ上記の例でPの共通部分にAのみに変更がかかったらどう修正する気?
- 55 :デフォルトの名無しさん:2011/06/02(木) 08:30:37.53 .net
- >>54
Aが自前で実装すればいいんじゃね
それか、Pが取る引数を工夫して柔軟な対応ができるようにする
- 56 :デフォルトの名無しさん:2011/06/02(木) 08:38:55.65 .net
- >>54
Aが自前で実装するように戻す。
あとそういうのは例えばStrategyパターンを使うべきで、共通化するものじゃない。
それすら分からないなら幼房。
- 57 :デフォルトの名無しさん:2011/06/02(木) 21:05:01.86 .net
- >>55-56
>Aが自前で実装
だが、現実は絶対にcase Aを入れる
自分のソース見てみろ
今回は俺が逃げ道塞いだから自前で実装って言っただけだろ?w
正気に戻ればPクラスなんてつくらねーんだけどな
- 58 :デフォルトの名無しさん:2011/06/02(木) 22:24:39.31 .net
- >>57
ガキみたいなこと言うなよ池沼
- 59 :デフォルトの名無しさん:2011/06/02(木) 22:30:46.12 .net
- 素直に継承するとか、デコレータパターンとか
ほかに影響に与えずに拡張なんていくらでもやりようがあると思うよ
- 60 :デフォルトの名無しさん:2011/06/03(金) 04:53:30.73 .net
- >>57
いや、その場面でcaseとか、既にそういう実装だった場合を除いてしないと思うが…
- 61 :デフォルトの名無しさん:2011/06/03(金) 06:40:24.29 .net
- >>60
違うな
大抵の場合、外部とのやりとりをA〜Zまでまとめない一心でPクラスで作ってしまうから
Aだけ切り離してもインターフェースがPを通しているのでPにAへの変更を吸収してもらうほかないって感じになってるはず
じゃないとまとめたうまみないしねw
- 62 :デフォルトの名無しさん:2011/06/03(金) 08:28:45.65 .net
- >>61
おまえは統失か。
- 63 :デフォルトの名無しさん:2011/06/03(金) 08:32:19.79 .net
- 結局>>49=>>52=>>54=>>57=>>61が何言いたいのかわからん。
1+1は?と聞かれてみんなが2と答えたら、田んぼの田だやーい間違った間違ったと
はしゃぐ鼻水垂らしたガキにしか見えないんだが。
- 64 :デフォルトの名無しさん:2011/06/03(金) 12:43:00.66 .net
- >>63
せめて反論しろよ(笑)
- 65 :デフォルトの名無しさん:2011/06/03(金) 20:59:55.04 .net
- >だが、現実は絶対にcase Aを入れる
>変更を吸収してもらうほかないって感じになってるはず
想像と主観だけ。
- 66 :デフォルトの名無しさん:2011/06/03(金) 22:24:10.95 .net
- >>36
でFA
- 67 :デフォルトの名無しさん:2011/06/03(金) 22:29:04.53 .net
- >>49はコーダーのレベルにすら達することの出来なかった落ちこぼれ
自分が何が分かってないかすらわかってない
- 68 :デフォルトの名無しさん:2011/06/03(金) 22:47:12.11 .net
- >>67
具体的な反論よろしく
- 69 :デフォルトの名無しさん:2011/06/03(金) 23:03:07.11 .net
- 元々>>49が意味不明なこと言っているのが原因だろ。
>>49=>>68が具体的なコード出せ。そうしたら反論してやる。
まあ、コーダー未満の池沼だから出せないだろうが。
- 70 :デフォルトの名無しさん:2011/06/03(金) 23:41:04.87 .net
- >>69
わかってないのは君だけじゃないの?
無駄だってわかりつつやるとお金もらえるからみんなやってるだけだよ
「なんのためにするリファクタリングなのか?」
って考えたらすぐに自分のやってることの無意味さに気がつくはず
現状の設計とマッチしてないから合わせるならわかるけど
それは開発段階で気がつくただの不具合だよね?
将来どうするのか?もわからないのにどうしてコードに手を入れられるの?
仕様書無しでコードに手をいれるのはダメだダメだあれほど言ってたのになんでこういうオナニーは好きにやっちゃうの?
目的がわからないのに最適(?)なコードなんてわかるわけないじゃない
なんのためのリファクタリングなの?
すべてがおかしい、でもお金になるし偉い人もやってるからやる
ただ、それだけのもんだよこれは
- 71 :デフォルトの名無しさん:2011/06/03(金) 23:56:03.20 .net
- >>70
やあ幼房。>>49を読んで意味が分かるのは池沼のおまえだけだ。
- 72 :デフォルトの名無しさん:2011/06/04(土) 00:49:50.56 .net
- >>71
うっとおしいからやめろよ
変な言葉も聞きなれない横文字も使ってないし誰でもわかる内容だ
内容の意味がわからないのは経験が浅いからだろ
- 73 :デフォルトの名無しさん:2011/06/04(土) 06:49:03.11 .net
- >うっとおしいからやめろよ
日本語でOK。
- 74 :デフォルトの名無しさん:2011/06/04(土) 20:32:27.75 .net
- >>49はリファクタリングの前にオブジェクト指向を勉強したほうがよい
- 75 :デフォルトの名無しさん:2011/06/04(土) 21:55:36.94 .net
- よくわかってないプログラマとか
プログラム中で使用する文字列をすべてヘッダで#define切っちゃうのとかよくいる
使うその場に直接書いたほうがいいことに気がつくのはいつのことだろうか?
- 76 :デフォルトの名無しさん:2011/06/04(土) 22:44:23.36 .net
- 文字列は切り分けたほうがいいよ
聞きかじりで行儀の良いとされる作りにしようとして
多重定義したり実際の文字列探すまでが長かったりする
くそみたいな所が多すぎるからそう感じるんだろ
- 77 :デフォルトの名無しさん:2011/06/04(土) 22:51:42.66 .net
- >>75
根拠は?
- 78 :デフォルトの名無しさん:2011/06/04(土) 23:04:54.02 .net
- >>77
意味がねぇからさ
ソースをみた瞬間に文字列が直接書いてあればその時点で意味がわかる
それを#defineきったら今度は命名した奴のセンスに丸投げすることになる
それが必ずしもわかりいい名前をつけてくれるとは限らない
また、複数個所でこの文字列を使うことがあったとして・・・いや・・・ないだろ?w
あるならなにかおかしいんだw
文字列の場合、数値とはちょっと違う事情があってこういう定数を#defineを切るのはあまり意味ない
- 79 :デフォルトの名無しさん:2011/06/04(土) 23:07:46.71 .net
-
また、数値の場合も俺は#defineを切る意味がないと思ってる
こんなこというとすぐに頭に血を上らせてソースでいきなり出てきた数値の意味が〜云々で怒るやつがいるが
俺はそうじゃなくてソースを読んで出てきた数値がわかるようなソースを書くべきだと思ってる
ちゃんとインスタンスの生成箇所をしっかり制御すればそもそもプログラム全域に一つの値が
複数使いまわされることなどほとんどない(はず)
数値計算(3.1415・・・)ですら特定のファイルにまとまる
しかし、プロジェクトにグローバルインスタンスホルダー(大域変数セット)などあると俺の言ってることは全く理解不能だと思う
- 80 :デフォルトの名無しさん:2011/06/05(日) 00:50:06.75 .net
- こりゃまた、もの凄い珍説が飛び出したもんだ。
責務やカプセル化の話と、可読性とはイコールではないだろーに。
自分の説の論理的な飛躍に気づけないのか?
- 81 :デフォルトの名無しさん:2011/06/05(日) 07:21:48.46 .net
- 「必ずしも分かり易い名前を付けてくれるとは限らない」
「ちゃんとインスタンスの制御をしっかりすれば複数箇所に出てくることはほとんどない」
まともな名前すら付けられん人間が「しっかりとしたインスタンスの制御」なんてやると思うかい?
- 82 :デフォルトの名無しさん:2011/06/05(日) 07:49:17.22 .net
- >>81
インスタンスの管理なんてやる必要があるのはグローバル変数使ってるからだろ?
- 83 :デフォルトの名無しさん:2011/06/05(日) 07:54:59.13 .net
- >>82
だとすれば
>ちゃんとインスタンスの生成箇所をしっかり制御すればそもそもプログラム全域に一つの値が
>複数使いまわされることなどほとんどない(はず)
ってのはグローバル変数使ってる前提なのか
- 84 :デフォルトの名無しさん:2011/06/05(日) 08:21:32.31 .net
- >>83
なんでそうなるの?
いままでグローバル変数にばっかたよってるからそういう脳みそしかないんでしょ?
- 85 :デフォルトの名無しさん:2011/06/05(日) 09:03:52.51 .net
- いや俺の脳みそ云々の問題でなく、矛盾してるんだってば
管理が要らないのか要るのか、どっちなのさ
- 86 :デフォルトの名無しさん:2011/06/05(日) 09:31:51.48 .net
- >>85
それとグローバル変数がどうして関係あると思ったの?
- 87 :デフォルトの名無しさん:2011/06/05(日) 09:39:59.44 .net
- >>86
それは>>82に言ってよ
- 88 :デフォルトの名無しさん:2011/06/05(日) 09:43:54.09 .net
- >>83での「だとすれば」がどういう意味もってるのかわからない
なにが「だとすれば」なの?
馬鹿だからグローバル使うしか方法わからないだけじゃない?
いままでプログラム組んでてこの程度ってすごくみじめ
- 89 :デフォルトの名無しさん:2011/06/05(日) 10:04:45.71 .net
- グローバル変数を使わなければ管理が要らないなら
何故にインスタンスの制御とかの話になったの?
要らないんでしょ?
- 90 :デフォルトの名無しさん:2011/06/05(日) 12:27:20.48 .net
- >>89
グローバル変数使わなければね
俺の言ってることなにか矛盾してる?
- 91 :デフォルトの名無しさん:2011/06/05(日) 12:35:52.01 .net
- >>90
「何故」と理由を聞いてるのだが
- 92 :デフォルトの名無しさん:2011/06/05(日) 12:53:18.34 .net
- >>91
あんまり気にしなくていいよ
「ちゃんとインスタンスの生成箇所をしっかり制御すれば」=「グローバル変数なんて使うほどお馬鹿じゃなければ」
って意味だからw
- 93 :デフォルトの名無しさん:2011/06/05(日) 14:26:48.94 .net
- >>92
ちょっと待て、たかがグローバル変数を使わないだけのことを
「ちゃんとインスタンスの生成箇所をしっかり制御」
なんて仰々しく書いてたのか
- 94 :デフォルトの名無しさん:2011/06/05(日) 14:28:38.99 .net
- >>93
仰々しく書いたつもりはないけど
君にはできないことだよねw
- 95 :デフォルトの名無しさん:2011/06/05(日) 15:03:32.48 .net
- >>94
何故そう思った?
- 96 :デフォルトの名無しさん:2011/10/09(日) 01:02:25.28 .net
- ああげ
- 97 :デフォルトの名無しさん:2011/10/09(日) 04:44:50.43 .net
- #define 使うな、までは同意できたんだがなあ…
- 98 :デフォルトの名無しさん:2011/10/09(日) 12:05:06.67 .net
- リファクタリングとリエンジニアリングの関係は?
- 99 :デフォルトの名無しさん:2011/10/09(日) 18:39:07.21 .net
- リファクタリングなんて、簡単な概念でしょ。
たとえば、多角形を表示するプログラムがあったとする。
それは実際は三角形を表示するプログラムを反復実行してるとする。
三角形を表示するプログラムは、線を表示するプログラムを反復実行してるとする。
線を表示するプログラムは、点を表示するプログラムを反復実行してるとする。
すると、
点を表示するプログラムを、高速に書き換えれば、
これに依存した全てのプログラムが、その内容を変更しなくとも、高速化する。
ってのがリファクタリング。
これのポイントは、修正したのは点を表示するプログラムだけで、それ以外は一切変更していないのに、他も高速化できること。
このためには、インターフェースを極力保ったままで、中身だけを変更することが重要になる。
これがリファクタリングと、普通のコード修正との違い。
- 100 :デフォルトの名無しさん:2011/10/09(日) 18:57:05.08 .net
- http://capsctrl.que.jp/kdmsnr/wiki/bliki/?IsOptimizationRefactoring
総レス数 845
252 KB
新着レスの表示
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★