テストも書かないでリファクタリングとかうけるw
まずな、リファクタリングでは機能追加・修正は行わない。
動作はまったく同じでコードをきれいに書き換えること。
書き換えるといっても、これなら同じ動きだろ?って推測でやってはいけない。
まずテストを書く。ユニットテストをできるように、
単一のクラスでインスタンスを作る。
汚いコードなのだからたいていは依存関係のせいで単一ではクラスが生成できない
それを生成するために、クラスの動作を書き換える。
といっても元のコードは修正しない。継承やプリプロセッサを使って
依存関係を断ち切るために既存のコードを上書きする。
どうしてもそれが不可能な場合には、決められた手順で最小のコード修正を行う
そうやって既存のクラスのユニットテストを行う。
それでやっとリファクタリングが行える。
既存のクラスのユニットテストを通るように新たなコードに修正、
もしくは新規作成して置き換える。
この手順と考え方を守ってないのはリファクタリングではない。
で?
探検
リファクタリングをただのコード修正と思ってる人へ
■ このスレッドは過去ログ倉庫に格納されています
2010/05/29(土) 17:25:56
2010/05/29(土) 17:27:43
Eclipseのリファクタリングは名前変更もリファクタリングのひとつなんだよなあ
2010/05/29(土) 17:33:05
リファクタリングは結果ではない。
プロセスだ。やり方だ。
コードがきれいになったからリファクタリングをしたと
思うのは間違いだ。
バグを入れないのは当たり前だが、コードの動作を変えずに
決められたた手順をもちい、クラス間の依存関係を減らすことで
ユニットテストできるようにする作業がリファクタリングだ。
テストコードが増えてなければ、それはコードを書き直しただけで
リファクタリングとは呼ばない。
リファクタリングブラウザとは、このリファクタリング作業を簡単にするための
ツールであり、リファクタリングブラウザの機能を使った作業(名前変更など)そのものは
リファクタリングではない。
プロセスだ。やり方だ。
コードがきれいになったからリファクタリングをしたと
思うのは間違いだ。
バグを入れないのは当たり前だが、コードの動作を変えずに
決められたた手順をもちい、クラス間の依存関係を減らすことで
ユニットテストできるようにする作業がリファクタリングだ。
テストコードが増えてなければ、それはコードを書き直しただけで
リファクタリングとは呼ばない。
リファクタリングブラウザとは、このリファクタリング作業を簡単にするための
ツールであり、リファクタリングブラウザの機能を使った作業(名前変更など)そのものは
リファクタリングではない。
2010/05/29(土) 17:41:18
本当のリファクタリングを知ると、
新たな設計方針にたどり着ける。
テストしやすい設計。
クラスを単独で生成できるように
依存関係(クラスが別のクラスを使用するなど)が
少ない設計。
publicメソッドの引数には、なるべくクラスを使わない。
クラス内部で別のクラスを生成しない(必要な場合は外部から渡す)
新たな設計方針にたどり着ける。
テストしやすい設計。
クラスを単独で生成できるように
依存関係(クラスが別のクラスを使用するなど)が
少ない設計。
publicメソッドの引数には、なるべくクラスを使わない。
クラス内部で別のクラスを生成しない(必要な場合は外部から渡す)
2010/05/29(土) 17:59:47
>クラス内部で別のクラスを生成しない(必要な場合は外部から渡す)
全部main(String [] arg)で作るんですねわかりま…
全部main(String [] arg)で作るんですねわかりま…
2010/05/29(土) 18:00:34
宇宙飛行士様が来たぞ
2010/05/29(土) 18:07:01
リファクタリングがしたいと思ったとき、
こういう考えの流れになっていないとだめ
リファクタリングしたい
↓
リファクタリングするにはユニットテストコードが必要
↓
既存のコードを(なるべく)修正せずにテストするにはどうするか。
↓
(依存関係が無ければ簡単にテストコードを書けるが、たいていはそのままではテストコードかけないので)
既存のコード・クラスをどうやって他のコード・クラスとの依存関係から分離させるか。
この分離が一番大変な作業。
分離させることに成功したらあとは簡単。
ユニットテストを書いてコードを修正すればよい。
こういう考えの流れになっていないとだめ
リファクタリングしたい
↓
リファクタリングするにはユニットテストコードが必要
↓
既存のコードを(なるべく)修正せずにテストするにはどうするか。
↓
(依存関係が無ければ簡単にテストコードを書けるが、たいていはそのままではテストコードかけないので)
既存のコード・クラスをどうやって他のコード・クラスとの依存関係から分離させるか。
この分離が一番大変な作業。
分離させることに成功したらあとは簡単。
ユニットテストを書いてコードを修正すればよい。
2010/05/29(土) 18:17:41
正直名前変更くらいしか使ってないな、それでも相当便利だが
2010/05/29(土) 18:24:16
>>8
名前変更(リファクタリングブラウザの機能)というのは、
例えて言うのなら小説を書く(リファクタリング)ときの文房具(リファクタリングブラウザ)と
同じ関係だよ。
文房具を使って文字を書いたり、消しゴムで消したりという作業は、
小説を書くための道具を使っているわけだが、
本質的には小説を書く行為そのものではない。
名前変更(リファクタリングブラウザの機能)というのは、
例えて言うのなら小説を書く(リファクタリング)ときの文房具(リファクタリングブラウザ)と
同じ関係だよ。
文房具を使って文字を書いたり、消しゴムで消したりという作業は、
小説を書くための道具を使っているわけだが、
本質的には小説を書く行為そのものではない。
2010/05/29(土) 23:54:35
XXXはXXXXXであるべき、なんてXXは全くもってXXXだ。
11デフォルトの名無しさん
2010/05/30(日) 00:14:581211
2010/05/30(日) 00:52:51 ごめんなさい。取り乱しました。
ソフトウェアテストで良い本ありませんか。
ソフトウェアテストで良い本ありませんか。
2010/05/30(日) 02:51:03
>>12
レガシーコード改善ガイド
レガシーコード改善ガイド
2010/05/30(日) 10:13:00
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
京都大学霊長類研究所
言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
京都大学霊長類研究所
2010/05/30(日) 18:16:22
2010/05/30(日) 19:47:36
リ略をただのコード修正だと思わないでよ
コーダの思いがこもってるんだからあ
コーダの思いがこもってるんだからあ
2010/05/30(日) 22:16:42
どおりで重いと思った
2010/05/30(日) 22:34:43
>>16
釘宮風にたのむ
釘宮風にたのむ
2010/05/30(日) 22:44:12
ばーかばーか
2010/05/31(月) 21:06:25
>>19
チルノのパーフェクト算数教室?
チルノのパーフェクト算数教室?
2010/06/01(火) 01:55:41
え…あぅ……わ、私そんなんじゃないのに…
これは、コード修正じゃなくてりふぁくたりんぐなんだから!
ちゃんと勉強してから出直しなさい!
なによ……わざわざしてあげるんだから…何か言いなさいよ!
あっ、べ、別にアンタのためにやるんじゃないんだから、
勘違いしないでよね!ばーかばーか!
これは、コード修正じゃなくてりふぁくたりんぐなんだから!
ちゃんと勉強してから出直しなさい!
なによ……わざわざしてあげるんだから…何か言いなさいよ!
あっ、べ、別にアンタのためにやるんじゃないんだから、
勘違いしないでよね!ばーかばーか!
2010/06/01(火) 12:35:24
なんか決まりがあって、そうしないとダメだって言ってるような頭固い人間がプログラムしてるのが間違いだろ。
目的に即してれば、細かいことは違ったって問題ないのに、それは手順としてあーだーこーだ・・・みっともない。
目的に即してれば、細かいことは違ったって問題ないのに、それは手順としてあーだーこーだ・・・みっともない。
2010/06/04(金) 19:59:43
25デフォルトの名無しさん
2010/06/19(土) 17:52:31 リファクタリングって流行らないね。
そもそもリファクタリングするために必要なユニットテスト技術も未熟だからか。
日本は技術レベルが低いよ。
愚痴はここまでにして、データベースのフィールドってリファクタリングするのに
厄介だよね。ただの文字列だと名前変更に追尾できない。
それはO/Rマッパー使ってもそうだけど、データベース関連はリファクタリングを念頭に置くと、
SQLとデータベースからクラスとして自動生成したほうがいいのかもしれない。
このクラス(仮にDBCLASSとする)ではデータベースのフィールドが一メソッド(プロパティ)になる。
これはビジネスロジックを書くいわゆるモデルではなく、データベースの構造をあらわすだけのクラス。
DBCLASSのプロパティを変更しても、DBCLASS内部でアクセスしているデータベースのフィールド名は変わらない。
逆にアクセス先のデータベースのフィールド名を変えると、DBCLASS内部でアクセスする
データベースのフィールド名も自動的に変わる。
そもそもリファクタリングするために必要なユニットテスト技術も未熟だからか。
日本は技術レベルが低いよ。
愚痴はここまでにして、データベースのフィールドってリファクタリングするのに
厄介だよね。ただの文字列だと名前変更に追尾できない。
それはO/Rマッパー使ってもそうだけど、データベース関連はリファクタリングを念頭に置くと、
SQLとデータベースからクラスとして自動生成したほうがいいのかもしれない。
このクラス(仮にDBCLASSとする)ではデータベースのフィールドが一メソッド(プロパティ)になる。
これはビジネスロジックを書くいわゆるモデルではなく、データベースの構造をあらわすだけのクラス。
DBCLASSのプロパティを変更しても、DBCLASS内部でアクセスしているデータベースのフィールド名は変わらない。
逆にアクセス先のデータベースのフィールド名を変えると、DBCLASS内部でアクセスする
データベースのフィールド名も自動的に変わる。
2010/06/19(土) 17:56:15
ウェブアプリの場合、同じ問題が
フォームのクエリー名にも当てはまるんだよな。
要はデータではなく、意味がある名前であるキーを
ただの文字列として扱うのはやめようということ。
フォームのクエリー名を変更したら、
自動的にコードの名前に反映させたい。(逆もあり)
そのためのコードの生成機能が必要だよ。
フォームのクエリー名にも当てはまるんだよな。
要はデータではなく、意味がある名前であるキーを
ただの文字列として扱うのはやめようということ。
フォームのクエリー名を変更したら、
自動的にコードの名前に反映させたい。(逆もあり)
そのためのコードの生成機能が必要だよ。
2010/06/19(土) 18:14:03
2010/06/19(土) 18:22:48
>>27
何の話?
自動生成されたとしても、それを文字列で扱っていたらだめだよ。
ようはリファクタリングブラウザで、それがキーとして認識されるような形になってほしい。
リファクタリングだけじゃなくて、コード補完もできるようになるから間違いが減るしね。
コンパイル時点でのエラー検出もおこなえるようになる。
何の話?
自動生成されたとしても、それを文字列で扱っていたらだめだよ。
ようはリファクタリングブラウザで、それがキーとして認識されるような形になってほしい。
リファクタリングだけじゃなくて、コード補完もできるようになるから間違いが減るしね。
コンパイル時点でのエラー検出もおこなえるようになる。
2010/06/19(土) 22:20:10
社長に今なにやってる?と聞かれてリファクタリングしてます、と答えたら
いつも波風が立つのはなぜだろう
いつも波風が立つのはなぜだろう
2010/06/19(土) 22:24:56
リファクタリングがなんなのか、メリットとデメリットについてなど
理解してないからだろ
こういう成功例を見せながら地道に説得していくしかないんじゃないの?
ttp://ascii.jp/elem/000/000/497/497905/
理解してないからだろ
こういう成功例を見せながら地道に説得していくしかないんじゃないの?
ttp://ascii.jp/elem/000/000/497/497905/
2010/06/19(土) 23:08:32
2010/06/20(日) 02:34:06
理解させるには分かりやすいたとえが必要だと思う。
例えば平屋を拡張して2階、3階と増やしていったら、
1階にも手に入れないと、いつか倒壊しますよね?とか。
例えば平屋を拡張して2階、3階と増やしていったら、
1階にも手に入れないと、いつか倒壊しますよね?とか。
2010/06/20(日) 06:23:44
一階に手を入れたら倒壊しちゃいました、とか
34デフォルトの名無しさん
2010/06/20(日) 15:29:28 そもそも本当に1階にも手を入れないと倒れるのか?
やってみたら意外と倒壊しないんじゃないの?、とか
やってみたら意外と倒壊しないんじゃないの?、とか
2010/06/20(日) 18:34:34
理解のないシステム 会社はそれだよね。腐ったシステムを抱え続けると将来的にどれだけのコストになるかわかってない。
だから目先のコスト増に怯えて将来の飛躍の芽を摘んでしまう。
だから目先のコスト増に怯えて将来の飛躍の芽を摘んでしまう。
2010/06/20(日) 20:56:47
リファクタリングの重要性のわからん上司にどうわかってもらうかでずっと悩んでいたが、
理解のない人にはリファクタリングしているとはあえて言わないのも手だと
Ruby版リファクタ本に書いてあって目から鱗だったわ
理解のない人にはリファクタリングしているとはあえて言わないのも手だと
Ruby版リファクタ本に書いてあって目から鱗だったわ
2010/06/23(水) 13:48:44
Rubyの場合結局Cで作り直すんだよな
2010/06/24(木) 08:19:11
そんな分野でそもそもruby使うのがおかしい。
39デフォルトの名無しさん
2010/06/27(日) 21:52:39 リファクタリングしていると、仕事を押し付けてくる奴がいてうぜーよー。
どうもそいつはリファクタリングしている=暇そうにしていると思っているっぽい。
どうもそいつはリファクタリングしている=暇そうにしていると思っているっぽい。
2010/06/27(日) 22:30:05
仕事を交代してやればいい
2010/06/27(日) 22:31:35
2010/06/28(月) 02:42:24
2010/06/29(火) 21:31:04
>38
組み込み向け「軽量Ruby」と「Rubyチップ」、福岡県が経産省の事業で開発へ
ttp://itpro.nikkeibp.co.jp/article/NEWS/20100628/349693/?ST=oss
的外れな提示だったらすまそ。
組み込み向け「軽量Ruby」と「Rubyチップ」、福岡県が経産省の事業で開発へ
ttp://itpro.nikkeibp.co.jp/article/NEWS/20100628/349693/?ST=oss
的外れな提示だったらすまそ。
2010/06/30(水) 14:19:54
組み込みにスクリプト言語とな?w
2010/06/30(水) 15:22:41
組み込みスクリプトってLuaとかあるし普通じゃね、と思ったら
組み込み機器のほうの話なのか
組み込み機器のほうの話なのか
2010/07/01(木) 01:28:43
組み込みJavaと同じ運命をたどる
2010/07/01(木) 09:36:51
2010/09/15(水) 19:43:18
大規模なリファクタリングを行う方法
http://www.infoq.com/jp/news/2010/09/large-scale-refactoring
http://www.infoq.com/jp/news/2010/09/large-scale-refactoring
2011/06/01(水) 22:25:20.30
リファクタリングなんてやって意味があると思ってる奴は消防
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を入れるような修正が精一杯やないか?
今後を考えてリファクタリングなんてする意味があるんか?
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を入れるような修正が精一杯やないか?
今後を考えてリファクタリングなんてする意味があるんか?
2011/06/01(水) 22:28:19.38
共通処理をまとめるだけがリファクタリングではないし、
自動テストが伴わないものはリファクタリングとは呼ばない。
自動テストが伴わないものはリファクタリングとは呼ばない。
2011/06/01(水) 22:28:23.13
2011/06/01(水) 22:38:24.11
>>50
いや、上で書いたのはあくまで例だよ
上の例は処理をまとめることによって明らかに構造が汚くなってるよね?
この先もまとめたPクラスにA〜Zへのどれかの追加が入るたびに
case B、case C・・・と追加されていくだろうね
そのときPクラスを消滅する選択肢は誰か選べるんだろか?
こーゆーのってさ、その時点ででは確定しなくね?
じゃ、リファクタリングってなんのためにするの?
って根本的なところに目を向けたときに次の開発をしやすくするためでしょ?
したら、その仕様書もなしでリファクタリングをするってことは
仕様書もないのにプログラムの構造を「俺が好き」なだけの構造にただ意味もなく
書き換えてるだけのマスターベーションなんだよ
いや、上で書いたのはあくまで例だよ
上の例は処理をまとめることによって明らかに構造が汚くなってるよね?
この先もまとめたPクラスにA〜Zへのどれかの追加が入るたびに
case B、case C・・・と追加されていくだろうね
そのときPクラスを消滅する選択肢は誰か選べるんだろか?
こーゆーのってさ、その時点ででは確定しなくね?
じゃ、リファクタリングってなんのためにするの?
って根本的なところに目を向けたときに次の開発をしやすくするためでしょ?
したら、その仕様書もなしでリファクタリングをするってことは
仕様書もないのにプログラムの構造を「俺が好き」なだけの構造にただ意味もなく
書き換えてるだけのマスターベーションなんだよ
2011/06/01(水) 23:55:42.31
どこの幼房かしらんが、
case B、case Cとなるようなまとめ方はアフォがやるものだろ。
それはリファクタリング以前の問題。
case B、case Cとなるようなまとめ方はアフォがやるものだろ。
それはリファクタリング以前の問題。
2011/06/02(木) 06:38:02.16
>>53
ほうほう、それじゃ上記の例でPの共通部分にAのみに変更がかかったらどう修正する気?
ほうほう、それじゃ上記の例でPの共通部分にAのみに変更がかかったらどう修正する気?
2011/06/02(木) 08:30:37.53
2011/06/02(木) 08:38:55.65
2011/06/02(木) 21:05:01.86
>>55-56
>Aが自前で実装
だが、現実は絶対にcase Aを入れる
自分のソース見てみろ
今回は俺が逃げ道塞いだから自前で実装って言っただけだろ?w
正気に戻ればPクラスなんてつくらねーんだけどな
>Aが自前で実装
だが、現実は絶対にcase Aを入れる
自分のソース見てみろ
今回は俺が逃げ道塞いだから自前で実装って言っただけだろ?w
正気に戻ればPクラスなんてつくらねーんだけどな
2011/06/02(木) 22:24:39.31
>>57
ガキみたいなこと言うなよ池沼
ガキみたいなこと言うなよ池沼
2011/06/02(木) 22:30:46.12
素直に継承するとか、デコレータパターンとか
ほかに影響に与えずに拡張なんていくらでもやりようがあると思うよ
ほかに影響に与えずに拡張なんていくらでもやりようがあると思うよ
2011/06/03(金) 04:53:30.73
>>57
いや、その場面でcaseとか、既にそういう実装だった場合を除いてしないと思うが…
いや、その場面でcaseとか、既にそういう実装だった場合を除いてしないと思うが…
2011/06/03(金) 06:40:24.29
>>60
違うな
大抵の場合、外部とのやりとりをA〜Zまでまとめない一心でPクラスで作ってしまうから
Aだけ切り離してもインターフェースがPを通しているのでPにAへの変更を吸収してもらうほかないって感じになってるはず
じゃないとまとめたうまみないしねw
違うな
大抵の場合、外部とのやりとりをA〜Zまでまとめない一心でPクラスで作ってしまうから
Aだけ切り離してもインターフェースがPを通しているのでPにAへの変更を吸収してもらうほかないって感じになってるはず
じゃないとまとめたうまみないしねw
2011/06/03(金) 08:28:45.65
>>61
おまえは統失か。
おまえは統失か。
2011/06/03(金) 08:32:19.79
2011/06/03(金) 12:43:00.66
2011/06/03(金) 20:59:55.04
>だが、現実は絶対にcase Aを入れる
>変更を吸収してもらうほかないって感じになってるはず
想像と主観だけ。
>変更を吸収してもらうほかないって感じになってるはず
想像と主観だけ。
2011/06/03(金) 22:24:10.95
>>36
でFA
でFA
2011/06/03(金) 22:29:04.53
>>49はコーダーのレベルにすら達することの出来なかった落ちこぼれ
自分が何が分かってないかすらわかってない
自分が何が分かってないかすらわかってない
2011/06/03(金) 22:47:12.11
>>67
具体的な反論よろしく
具体的な反論よろしく
2011/06/03(金) 23:03:07.11
2011/06/03(金) 23:41:04.87
>>69
わかってないのは君だけじゃないの?
無駄だってわかりつつやるとお金もらえるからみんなやってるだけだよ
「なんのためにするリファクタリングなのか?」
って考えたらすぐに自分のやってることの無意味さに気がつくはず
現状の設計とマッチしてないから合わせるならわかるけど
それは開発段階で気がつくただの不具合だよね?
将来どうするのか?もわからないのにどうしてコードに手を入れられるの?
仕様書無しでコードに手をいれるのはダメだダメだあれほど言ってたのになんでこういうオナニーは好きにやっちゃうの?
目的がわからないのに最適(?)なコードなんてわかるわけないじゃない
なんのためのリファクタリングなの?
すべてがおかしい、でもお金になるし偉い人もやってるからやる
ただ、それだけのもんだよこれは
わかってないのは君だけじゃないの?
無駄だってわかりつつやるとお金もらえるからみんなやってるだけだよ
「なんのためにするリファクタリングなのか?」
って考えたらすぐに自分のやってることの無意味さに気がつくはず
現状の設計とマッチしてないから合わせるならわかるけど
それは開発段階で気がつくただの不具合だよね?
将来どうするのか?もわからないのにどうしてコードに手を入れられるの?
仕様書無しでコードに手をいれるのはダメだダメだあれほど言ってたのになんでこういうオナニーは好きにやっちゃうの?
目的がわからないのに最適(?)なコードなんてわかるわけないじゃない
なんのためのリファクタリングなの?
すべてがおかしい、でもお金になるし偉い人もやってるからやる
ただ、それだけのもんだよこれは
2011/06/03(金) 23:56:03.20
2011/06/04(土) 00:49:50.56
2011/06/04(土) 06:49:03.11
>うっとおしいからやめろよ
日本語でOK。
日本語でOK。
2011/06/04(土) 20:32:27.75
>>49はリファクタリングの前にオブジェクト指向を勉強したほうがよい
2011/06/04(土) 21:55:36.94
よくわかってないプログラマとか
プログラム中で使用する文字列をすべてヘッダで#define切っちゃうのとかよくいる
使うその場に直接書いたほうがいいことに気がつくのはいつのことだろうか?
プログラム中で使用する文字列をすべてヘッダで#define切っちゃうのとかよくいる
使うその場に直接書いたほうがいいことに気がつくのはいつのことだろうか?
2011/06/04(土) 22:44:23.36
文字列は切り分けたほうがいいよ
聞きかじりで行儀の良いとされる作りにしようとして
多重定義したり実際の文字列探すまでが長かったりする
くそみたいな所が多すぎるからそう感じるんだろ
聞きかじりで行儀の良いとされる作りにしようとして
多重定義したり実際の文字列探すまでが長かったりする
くそみたいな所が多すぎるからそう感じるんだろ
2011/06/04(土) 22:51:42.66
>>75
根拠は?
根拠は?
2011/06/04(土) 23:04:54.02
>>77
意味がねぇからさ
ソースをみた瞬間に文字列が直接書いてあればその時点で意味がわかる
それを#defineきったら今度は命名した奴のセンスに丸投げすることになる
それが必ずしもわかりいい名前をつけてくれるとは限らない
また、複数個所でこの文字列を使うことがあったとして・・・いや・・・ないだろ?w
あるならなにかおかしいんだw
文字列の場合、数値とはちょっと違う事情があってこういう定数を#defineを切るのはあまり意味ない
意味がねぇからさ
ソースをみた瞬間に文字列が直接書いてあればその時点で意味がわかる
それを#defineきったら今度は命名した奴のセンスに丸投げすることになる
それが必ずしもわかりいい名前をつけてくれるとは限らない
また、複数個所でこの文字列を使うことがあったとして・・・いや・・・ないだろ?w
あるならなにかおかしいんだw
文字列の場合、数値とはちょっと違う事情があってこういう定数を#defineを切るのはあまり意味ない
2011/06/04(土) 23:07:46.71
また、数値の場合も俺は#defineを切る意味がないと思ってる
こんなこというとすぐに頭に血を上らせてソースでいきなり出てきた数値の意味が〜云々で怒るやつがいるが
俺はそうじゃなくてソースを読んで出てきた数値がわかるようなソースを書くべきだと思ってる
ちゃんとインスタンスの生成箇所をしっかり制御すればそもそもプログラム全域に一つの値が
複数使いまわされることなどほとんどない(はず)
数値計算(3.1415・・・)ですら特定のファイルにまとまる
しかし、プロジェクトにグローバルインスタンスホルダー(大域変数セット)などあると俺の言ってることは全く理解不能だと思う
2011/06/05(日) 00:50:06.75
こりゃまた、もの凄い珍説が飛び出したもんだ。
責務やカプセル化の話と、可読性とはイコールではないだろーに。
自分の説の論理的な飛躍に気づけないのか?
責務やカプセル化の話と、可読性とはイコールではないだろーに。
自分の説の論理的な飛躍に気づけないのか?
2011/06/05(日) 07:21:48.46
「必ずしも分かり易い名前を付けてくれるとは限らない」
「ちゃんとインスタンスの制御をしっかりすれば複数箇所に出てくることはほとんどない」
まともな名前すら付けられん人間が「しっかりとしたインスタンスの制御」なんてやると思うかい?
「ちゃんとインスタンスの制御をしっかりすれば複数箇所に出てくることはほとんどない」
まともな名前すら付けられん人間が「しっかりとしたインスタンスの制御」なんてやると思うかい?
2011/06/05(日) 07:49:17.22
>>81
インスタンスの管理なんてやる必要があるのはグローバル変数使ってるからだろ?
インスタンスの管理なんてやる必要があるのはグローバル変数使ってるからだろ?
2011/06/05(日) 07:54:59.13
>>82
だとすれば
>ちゃんとインスタンスの生成箇所をしっかり制御すればそもそもプログラム全域に一つの値が
>複数使いまわされることなどほとんどない(はず)
ってのはグローバル変数使ってる前提なのか
だとすれば
>ちゃんとインスタンスの生成箇所をしっかり制御すればそもそもプログラム全域に一つの値が
>複数使いまわされることなどほとんどない(はず)
ってのはグローバル変数使ってる前提なのか
2011/06/05(日) 08:21:32.31
2011/06/05(日) 09:03:52.51
いや俺の脳みそ云々の問題でなく、矛盾してるんだってば
管理が要らないのか要るのか、どっちなのさ
管理が要らないのか要るのか、どっちなのさ
2011/06/05(日) 09:31:51.48
>>85
それとグローバル変数がどうして関係あると思ったの?
それとグローバル変数がどうして関係あると思ったの?
2011/06/05(日) 09:39:59.44
2011/06/05(日) 09:43:54.09
>>83での「だとすれば」がどういう意味もってるのかわからない
なにが「だとすれば」なの?
馬鹿だからグローバル使うしか方法わからないだけじゃない?
いままでプログラム組んでてこの程度ってすごくみじめ
なにが「だとすれば」なの?
馬鹿だからグローバル使うしか方法わからないだけじゃない?
いままでプログラム組んでてこの程度ってすごくみじめ
2011/06/05(日) 10:04:45.71
グローバル変数を使わなければ管理が要らないなら
何故にインスタンスの制御とかの話になったの?
要らないんでしょ?
何故にインスタンスの制御とかの話になったの?
要らないんでしょ?
2011/06/05(日) 12:27:20.48
2011/06/05(日) 12:35:52.01
>>90
「何故」と理由を聞いてるのだが
「何故」と理由を聞いてるのだが
2011/06/05(日) 12:53:18.34
2011/06/05(日) 14:26:48.94
2011/06/05(日) 14:28:38.99
2011/06/05(日) 15:03:32.48
>>94
何故そう思った?
何故そう思った?
96デフォルトの名無しさん
2011/10/09(日) 01:02:25.28 ああげ
2011/10/09(日) 04:44:50.43
#define 使うな、までは同意できたんだがなあ…
2011/10/09(日) 12:05:06.67
リファクタリングとリエンジニアリングの関係は?
2011/10/09(日) 18:39:07.21
リファクタリングなんて、簡単な概念でしょ。
たとえば、多角形を表示するプログラムがあったとする。
それは実際は三角形を表示するプログラムを反復実行してるとする。
三角形を表示するプログラムは、線を表示するプログラムを反復実行してるとする。
線を表示するプログラムは、点を表示するプログラムを反復実行してるとする。
すると、
点を表示するプログラムを、高速に書き換えれば、
これに依存した全てのプログラムが、その内容を変更しなくとも、高速化する。
ってのがリファクタリング。
これのポイントは、修正したのは点を表示するプログラムだけで、それ以外は一切変更していないのに、他も高速化できること。
このためには、インターフェースを極力保ったままで、中身だけを変更することが重要になる。
これがリファクタリングと、普通のコード修正との違い。
たとえば、多角形を表示するプログラムがあったとする。
それは実際は三角形を表示するプログラムを反復実行してるとする。
三角形を表示するプログラムは、線を表示するプログラムを反復実行してるとする。
線を表示するプログラムは、点を表示するプログラムを反復実行してるとする。
すると、
点を表示するプログラムを、高速に書き換えれば、
これに依存した全てのプログラムが、その内容を変更しなくとも、高速化する。
ってのがリファクタリング。
これのポイントは、修正したのは点を表示するプログラムだけで、それ以外は一切変更していないのに、他も高速化できること。
このためには、インターフェースを極力保ったままで、中身だけを変更することが重要になる。
これがリファクタリングと、普通のコード修正との違い。
100デフォルトの名無しさん
2011/10/09(日) 18:57:05.08101デフォルトの名無しさん
2011/10/09(日) 19:57:12.25 >>99
近いが微妙にはずれている。
リファクタリングと高速化は無関係。
リファクタリングした結果、高速化することもあれば
(他にメリットがあるならば)逆に遅くなることもある
インターフェースも変えないこともあれば変えることもある。
リファクタリング本にもしっかり、「インターフェースを変えるリファクタリング」が載っている。
リファクタリングの目的はアプリ全体の動きを変えずに、ソースコードを綺麗に改善すること。
ただこの目的を達成するために、適当に修正するのとリファクタリングとでは違うものがある。
それはリファクタリングはちゃんとした手順でやるものだということ、
この手順に従うことが、修正とリファクタリングの違い。
どういった手順があるかは、リファクタリング本に書いてある。
この手順に従って修正することでバグを入れずに修正することが可能になる。
近いが微妙にはずれている。
リファクタリングと高速化は無関係。
リファクタリングした結果、高速化することもあれば
(他にメリットがあるならば)逆に遅くなることもある
インターフェースも変えないこともあれば変えることもある。
リファクタリング本にもしっかり、「インターフェースを変えるリファクタリング」が載っている。
リファクタリングの目的はアプリ全体の動きを変えずに、ソースコードを綺麗に改善すること。
ただこの目的を達成するために、適当に修正するのとリファクタリングとでは違うものがある。
それはリファクタリングはちゃんとした手順でやるものだということ、
この手順に従うことが、修正とリファクタリングの違い。
どういった手順があるかは、リファクタリング本に書いてある。
この手順に従って修正することでバグを入れずに修正することが可能になる。
102デフォルトの名無しさん
2011/10/09(日) 23:20:59.42 高速化は変更の具体例として挙げているだけで、
高速化がリファクタリングだとは言っていないだろ。
高速化がリファクタリングだとは言っていないだろ。
103デフォルトの名無しさん
2011/10/09(日) 23:59:37.52 >>101
I/F変えたら機能変更だろ。
リファクタリングの範囲をどこまで取るかであって
その範囲で内部I/Fは変わることがある。
手順がどーのだって、効果的な手法がそうだってだけで、
ある作業がリファクタリングかどうかの判断に手順は関係ない。
I/F変えたら機能変更だろ。
リファクタリングの範囲をどこまで取るかであって
その範囲で内部I/Fは変わることがある。
手順がどーのだって、効果的な手法がそうだってだけで、
ある作業がリファクタリングかどうかの判断に手順は関係ない。
104デフォルトの名無しさん
2011/10/10(月) 00:31:27.92 >>103
> I/F変えたら機能変更だろ。
え? そんな事言ってもなぁ。
インターフェースを変えるリファクタリングはたくさんある。
メソッドの移動、クラスのインライン化、メソッド名の変更
引数の追加、引数オブジェクトの導入、メソッドの隠蔽
メソッドの引き上げ、階層の平坦化、継承の分割、他
リファクタリングの目的は、高速化という今すぐに効果があるメリットのためではなく、
過去にその場しのぎで対応したコードの修正とか、設計上まずいコードの修正とか
過去の負債、将来への投資として行うものだよ。
設計がまずい=インターフェースがまずいってことはよくある話で、
コードを改善するためには、インターフェースを変えなければいけないということも当然ある。
> I/F変えたら機能変更だろ。
え? そんな事言ってもなぁ。
インターフェースを変えるリファクタリングはたくさんある。
メソッドの移動、クラスのインライン化、メソッド名の変更
引数の追加、引数オブジェクトの導入、メソッドの隠蔽
メソッドの引き上げ、階層の平坦化、継承の分割、他
リファクタリングの目的は、高速化という今すぐに効果があるメリットのためではなく、
過去にその場しのぎで対応したコードの修正とか、設計上まずいコードの修正とか
過去の負債、将来への投資として行うものだよ。
設計がまずい=インターフェースがまずいってことはよくある話で、
コードを改善するためには、インターフェースを変えなければいけないということも当然ある。
105デフォルトの名無しさん
2011/10/10(月) 00:40:22.19 なんでこいつら10年前の議論してるの?
106デフォルトの名無しさん
2011/10/10(月) 00:53:59.26 したらいけないの?
107デフォルトの名無しさん
2011/10/10(月) 01:04:25.82 >>103
> I/F変えたら機能変更だろ。
インターフェースが機能になってるのは
ライブラリぐらいなもんだろ。
システム(アプリ)の動作さえ変えなければ
リファクタリングでインターフェース変えたっていいんだよ。。
インターフェースが変わりますって他の開発者への通知が
必要なことがあるかもしれないが、それは、通知すればいいだけの話。
それが世界中巻き込んで大変なことになろうが、
社内の一部だけしか関係ない小さなものだろうが、
「やってはいけないこと」ではない。
> I/F変えたら機能変更だろ。
インターフェースが機能になってるのは
ライブラリぐらいなもんだろ。
システム(アプリ)の動作さえ変えなければ
リファクタリングでインターフェース変えたっていいんだよ。。
インターフェースが変わりますって他の開発者への通知が
必要なことがあるかもしれないが、それは、通知すればいいだけの話。
それが世界中巻き込んで大変なことになろうが、
社内の一部だけしか関係ない小さなものだろうが、
「やってはいけないこと」ではない。
108デフォルトの名無しさん
2011/10/10(月) 12:55:38.15 >インターフェースが変わりますって他の開発者への通知が
>必要なことがあるかもしれないが、それは、通知すればいいだけの話。
幸せな環境だ・・・
>必要なことがあるかもしれないが、それは、通知すればいいだけの話。
幸せな環境だ・・・
109デフォルトの名無しさん
2011/10/10(月) 15:07:45.53110デフォルトの名無しさん
2011/10/10(月) 15:29:15.75 おお、Javaがやってる方法じゃん
Java PGは可哀想な子だからな
Java PGは可哀想な子だからな
111デフォルトの名無しさん
2011/10/10(月) 15:31:03.21 DeprecatedやObsoleteは
どの言語でもやってることだろ。
なんかこう、俺とは一段以上 下のレベルの
奴しか見当たらんよなw
どの言語でもやってることだろ。
なんかこう、俺とは一段以上 下のレベルの
奴しか見当たらんよなw
112デフォルトの名無しさん
2011/10/10(月) 15:49:03.28 そう。どの言語でもやってる。
何故ならインターフェースなどそう簡単に変更できないからだ。
それなのに
> 必要なことがあるかもしれないが、それは、通知すればいいだけの話。
のような事を書くほど低レベルのPGはJava PGだけだと予想して釣ってみたが、
やっぱりその通りだったねw
何故ならインターフェースなどそう簡単に変更できないからだ。
それなのに
> 必要なことがあるかもしれないが、それは、通知すればいいだけの話。
のような事を書くほど低レベルのPGはJava PGだけだと予想して釣ってみたが、
やっぱりその通りだったねw
113デフォルトの名無しさん
2011/10/10(月) 15:55:41.96 「なんかこう、俺とは一段以上下のレベルの奴しか見当たらんよなw」(キリッ
114デフォルトの名無しさん
2011/10/10(月) 16:24:50.97115デフォルトの名無しさん
2011/10/10(月) 16:48:43.88 めんどくさいからコードに対する変更はもう全部リファクタリングでいいよ
116108
2011/10/10(月) 19:15:25.35 >>109
若干かわいそうな環境かも。
機能毎に縦割りでリーダーが立ってて
「こっちは機能追加が進んでて人居ない」とか
「影響が大きい」とか言われて
とてもじゃないが変えられない。
それでも自担当の部分だけでもリファクタリングする工数が
貰えるだけマシなのかも知れんけどね。
若干かわいそうな環境かも。
機能毎に縦割りでリーダーが立ってて
「こっちは機能追加が進んでて人居ない」とか
「影響が大きい」とか言われて
とてもじゃないが変えられない。
それでも自担当の部分だけでもリファクタリングする工数が
貰えるだけマシなのかも知れんけどね。
117デフォルトの名無しさん
2011/10/10(月) 21:13:00.47 JavaのPGやってるけど
privateメソッドを修正するだけでもJAVADOCの修正とかユニットテストが更新されるからって
チーム内でそれを拒む人いるんだよなー
ってか、お前が俺のソースコピペして、俺がその責任背負わなくなくなるのが嫌なんだろwwwどうせwww
privateメソッドを修正するだけでもJAVADOCの修正とかユニットテストが更新されるからって
チーム内でそれを拒む人いるんだよなー
ってか、お前が俺のソースコピペして、俺がその責任背負わなくなくなるのが嫌なんだろwwwどうせwww
118デフォルトの名無しさん
2011/10/25(火) 13:23:05.69 リファクタリング中は考えることを止めよう
http://www.infoq.com/jp/news/2011/10/thinking-and-refactoring
http://www.infoq.com/jp/news/2011/10/thinking-and-refactoring
119デフォルトの名無しさん
2011/10/29(土) 00:57:02.72 やっぱり目的が意味不明
設計ミスならリファクタリングという形で手を出すべきじゃないし
汎用性の向上にしても次の開発やバージョンアップの仕様書があってこその修正だ
単純にリファクタリングってのが何を目的としてるのかどの文献を読んでもまったく意味不明
設計ミスならリファクタリングという形で手を出すべきじゃないし
汎用性の向上にしても次の開発やバージョンアップの仕様書があってこその修正だ
単純にリファクタリングってのが何を目的としてるのかどの文献を読んでもまったく意味不明
120デフォルトの名無しさん
2011/10/29(土) 03:24:37.60121デフォルトの名無しさん
2011/10/29(土) 05:48:50.42122デフォルトの名無しさん
2011/10/29(土) 11:34:19.34 時間と共に増大する複雑性への対処では。
書いたソースが自分たちのものになるのかで大きく価値が異なると思う。
複雑性が増すと修正にかかる工数が増えるけど、それを良しとするか悪しとするか。
書いたソースが自分たちのものになるのかで大きく価値が異なると思う。
複雑性が増すと修正にかかる工数が増えるけど、それを良しとするか悪しとするか。
123デフォルトの名無しさん
2011/10/29(土) 18:57:08.38 果てしなく続くメンテナンスと機能追加を前提として
それぞれのモジュールの精度を高めるために必要な準備作業
じゃないかな
それぞれのモジュールの精度を高めるために必要な準備作業
じゃないかな
124デフォルトの名無しさん
2011/10/29(土) 22:48:37.21 何いってるのかさっぱりわからない
じゃ、質問をかえる
その作業いつ終わるの?
じゃ、質問をかえる
その作業いつ終わるの?
125デフォルトの名無しさん
2011/10/29(土) 23:05:14.32126デフォルトの名無しさん
2011/10/29(土) 23:30:50.35 効果も含めて微ファクタリング
127デフォルトの名無しさん
2011/10/30(日) 00:00:06.96128デフォルトの名無しさん
2011/10/30(日) 00:12:36.90 最初から間違えなければいい。
129デフォルトの名無しさん
2011/10/30(日) 01:44:30.53 >>127
んー
それをコードにいれちゃうのはなんかちがうなーって思う
だって説明として仕様や設計に入ってもいないクラスが
自分の考える汎用性のためだけに入ってるってことでしょ?
まあ、昔の俺ならそういうコードいいと思ったけど
最近はこういう見切り発進みたいなコードをちっともいいと思わなくなった
むしろ余計なもん入れちゃうのってどうよ?って思う
んー
それをコードにいれちゃうのはなんかちがうなーって思う
だって説明として仕様や設計に入ってもいないクラスが
自分の考える汎用性のためだけに入ってるってことでしょ?
まあ、昔の俺ならそういうコードいいと思ったけど
最近はこういう見切り発進みたいなコードをちっともいいと思わなくなった
むしろ余計なもん入れちゃうのってどうよ?って思う
130デフォルトの名無しさん
2011/10/30(日) 02:01:00.62 余計なもんなんかいれない。
”必要だから” 入れてる。
”必要だから” 入れてる。
131デフォルトの名無しさん
2011/10/30(日) 02:32:58.38132デフォルトの名無しさん
2011/10/30(日) 09:42:26.14133デフォルトの名無しさん
2011/10/30(日) 11:29:33.88 >>129
見切り発進と思うのなら、修正した方が良いと思った内容を提案してみては。
受け入れるかは組織なり人なりタイミングによると思うけど、
少なくともうちだったら、そういう提案してくれる人は歓迎するけどなあ。
その人の持つ技術力の評価や信頼にも繋がるし。
見切り発進と思うのなら、修正した方が良いと思った内容を提案してみては。
受け入れるかは組織なり人なりタイミングによると思うけど、
少なくともうちだったら、そういう提案してくれる人は歓迎するけどなあ。
その人の持つ技術力の評価や信頼にも繋がるし。
134デフォルトの名無しさん
2011/10/30(日) 11:55:22.16135デフォルトの名無しさん
2011/10/30(日) 12:08:51.05136デフォルトの名無しさん
2011/10/31(月) 03:11:52.86137デフォルトの名無しさん
2011/10/31(月) 12:33:30.90138デフォルトの名無しさん
2011/10/31(月) 21:45:02.67139デフォルトの名無しさん
2011/11/01(火) 00:54:41.88140デフォルトの名無しさん
2011/11/01(火) 00:57:56.17 この表現でわからないならデザパタ使うと出てくるゴミクラスなんか全部該当すると思う
141デフォルトの名無しさん
2011/11/01(火) 06:03:18.76 >>139
仕様と関係ない関数は不要なので、コードはすべてmainの中に書いてくださいね
仕様と関係ない関数は不要なので、コードはすべてmainの中に書いてくださいね
142デフォルトの名無しさん
2011/11/01(火) 07:41:02.59143デフォルトの名無しさん
2011/11/01(火) 08:04:06.10144デフォルトの名無しさん
2011/11/01(火) 20:58:54.49 >>143
リファクタリングは保守の一つなのだから、
コードを修正するならば言語に関係なく発生する問題。
リファクタリングとデザパタは
特定の言語固有とか言う以前に、全く関係ない話題。
ついでにデザパタで作るのはゴミクラスではなく必要なクラス。
リファクタリングは保守の一つなのだから、
コードを修正するならば言語に関係なく発生する問題。
リファクタリングとデザパタは
特定の言語固有とか言う以前に、全く関係ない話題。
ついでにデザパタで作るのはゴミクラスではなく必要なクラス。
145デフォルトの名無しさん
2011/11/01(火) 21:19:29.93 >>142
よう、レガシー
よう、レガシー
146デフォルトの名無しさん
2011/11/01(火) 21:21:02.73 Sir! FUTURE!!
147デフォルトの名無しさん
2011/11/01(火) 22:09:32.23 他の言語では作る必要の無いクラスを作らされたら
ゴミクラスと言いたくもなるわい
ゴミクラスと言いたくもなるわい
148デフォルトの名無しさん
2011/11/01(火) 22:12:41.23 >>147
たとえばどんなの?
たとえばどんなの?
149デフォルトの名無しさん
2011/11/01(火) 22:14:56.95 他の言語では、定義する必要がない型を
定義しても、ゴミ定義とは言わないだろ。
単に、エラーを見つけやすい方法で書くか、
短いコードだから省略して書くかの違いでしか無い。
定義しても、ゴミ定義とは言わないだろ。
単に、エラーを見つけやすい方法で書くか、
短いコードだから省略して書くかの違いでしか無い。
150デフォルトの名無しさん
2011/11/01(火) 22:26:33.69151デフォルトの名無しさん
2011/11/01(火) 22:28:50.74 うん。だからそれは、インターフェースを守った
きっちりとしたアプリを作るかどうかの違い。
きっちりとしたアプリを作るかどうかの違い。
152デフォルトの名無しさん
2011/11/01(火) 22:36:13.61 きっちりしてるというのはどういう意味だ?
静的型検査という意味なら勘違いも甚だしいぞ
静的型検査という意味なら勘違いも甚だしいぞ
153デフォルトの名無しさん
2011/11/01(火) 22:41:00.77154デフォルトの名無しさん
2011/11/01(火) 23:28:25.82 >>150
ファーストクラスの関数がなかったら?
ファーストクラスの関数がなかったら?
155デフォルトの名無しさん
2011/11/01(火) 23:53:30.12156デフォルトの名無しさん
2011/11/02(水) 00:43:25.84 このように、言語によって
クラスが必要かどうかは違ってくるというのに、
設計書と呼ばれるものに、そこまでちゃんとクラスを書いているのか?
普通は書かないだろ。
だから、設計書と呼ばれているものは、実は設計書ではない。
コードこそが設計書そのものなんだ。
クラスが必要かどうかは違ってくるというのに、
設計書と呼ばれるものに、そこまでちゃんとクラスを書いているのか?
普通は書かないだろ。
だから、設計書と呼ばれているものは、実は設計書ではない。
コードこそが設計書そのものなんだ。
157デフォルトの名無しさん
2011/11/02(水) 07:35:25.31158デフォルトの名無しさん
2011/11/02(水) 21:53:07.67 ただなぁ, 世に存在するうちの設計書で,
なぜこれが必要か
といった, 設計ポリシーとともに書かれているものは, ごく稀
で, 最後には
ソース読め
状態になると思ってるんだ
なぜこれが必要か
といった, 設計ポリシーとともに書かれているものは, ごく稀
で, 最後には
ソース読め
状態になると思ってるんだ
159デフォルトの名無しさん
2011/11/03(木) 01:04:35.79 仕様書は役に立たないがテストの手順書はとても役に立つな
なにをやるための機能なのか一発でわかる
対して仕様書は嘘、間違い、抜け、バージョン違い、勘違い
更新忘れ、認識間違いばっかりになってほとんど役に立たない
仕様書いらなくね?
っていうかテスト手順書でよくね?
ちなみにおそらくテスト手順書は仕様書を見て作られてはいないだろうな
やってみて「ふーん・・・これだろ?これが仕様だろ?な?」的な感じだと思う
なにをやるための機能なのか一発でわかる
対して仕様書は嘘、間違い、抜け、バージョン違い、勘違い
更新忘れ、認識間違いばっかりになってほとんど役に立たない
仕様書いらなくね?
っていうかテスト手順書でよくね?
ちなみにおそらくテスト手順書は仕様書を見て作られてはいないだろうな
やってみて「ふーん・・・これだろ?これが仕様だろ?な?」的な感じだと思う
160デフォルトの名無しさん
2011/11/03(木) 11:16:22.26 仕様書とソース・プログラムの挙動が不一致ならバグ認定、即修正
っていうレベルのもの以外は仕様書に書くな!!!!
っていうレベルのもの以外は仕様書に書くな!!!!
161デフォルトの名無しさん
2011/11/03(木) 19:08:42.55 >>160
ショートカットとか本当にどうでもいいもののリスト作ってるひまあったら他のことやれよな
ショートカットとか本当にどうでもいいもののリスト作ってるひまあったら他のことやれよな
162デフォルトの名無しさん
2011/11/04(金) 00:04:28.66163デフォルトの名無しさん
2011/11/04(金) 20:57:42.11 うちのプロジェクトjavaソースだけでついに1万個を超えた
リファクタとかいうレベルじゃねーだろ
リファクタとかいうレベルじゃねーだろ
164デフォルトの名無しさん
2011/11/04(金) 22:40:52.09165デフォルトの名無しさん
2011/11/06(日) 10:59:30.75 javaでもすでに10年物のソースコードとかあるからな
166uy
2011/11/06(日) 16:44:42.65 リファクタリングとか、
10万行のソースコードがあったとして、
その10万行のソースコードを、読んだってレベルじゃなくて、そうとう熟知した状態で
1人で行わなきゃならない
ていうか、それできるレベルなら、多分最初から書き直したほうが綺麗に書ける
まぁそれは理想で
SE共のいってるりファクタリングは機能ごとに、ちょこっとずつ最適化していく程度のものを言ってるよね
自分の能力でソースコード全体を見渡せる範囲で何とかするリファクタリング
なんていうか、それはね
まず木で作られた線路を、途中から鉄にして、さらに途中から銅にしたようなもので、本当に器用に継ぎ接ぎをしてるだけ
その継ぎ接ぎ部分はとてもシビアになるし、バグが出ても特定不可能で、
「よくわかんないけど、○○にすると落ちるから☆☆にしといてwwwwwwwwwwwwwっうぇwwwwなんで落ちてんのwwwっうぇwwww」みたいな状況にもなりかねない
ソース全体を見渡しているわけでもないリファクタリング作業なんてのは、あまりやりすぎると
ゼロから書き直す以上の労力をいつの間にか注いでいる事にもなりかねないので
最低限以上はやっちゃいけない
10万行のソースコードがあったとして、
その10万行のソースコードを、読んだってレベルじゃなくて、そうとう熟知した状態で
1人で行わなきゃならない
ていうか、それできるレベルなら、多分最初から書き直したほうが綺麗に書ける
まぁそれは理想で
SE共のいってるりファクタリングは機能ごとに、ちょこっとずつ最適化していく程度のものを言ってるよね
自分の能力でソースコード全体を見渡せる範囲で何とかするリファクタリング
なんていうか、それはね
まず木で作られた線路を、途中から鉄にして、さらに途中から銅にしたようなもので、本当に器用に継ぎ接ぎをしてるだけ
その継ぎ接ぎ部分はとてもシビアになるし、バグが出ても特定不可能で、
「よくわかんないけど、○○にすると落ちるから☆☆にしといてwwwwwwwwwwwwwっうぇwwwwなんで落ちてんのwwwっうぇwwww」みたいな状況にもなりかねない
ソース全体を見渡しているわけでもないリファクタリング作業なんてのは、あまりやりすぎると
ゼロから書き直す以上の労力をいつの間にか注いでいる事にもなりかねないので
最低限以上はやっちゃいけない
167デフォルトの名無しさん
2011/11/06(日) 16:52:16.13 >>166
お前は、ただのコード修正をリファクタリングと言ってるだけだね。
リファクタリングは単なる「コード修正」とは違うもの。
リファクタリングは「既存の動きに影響を与えない方法を使ってコードを修正すること」
既存の動きに影響を与えない方法ってのがあるんだよ。
これを使わないとリファクタリングにはならない。
行き当たりばったりの思いつき修正とはわけが違う。
論理的に考えぬかれた体系化されたテクニック。
それカタログ化して解説した本が、世の中にでてるリファクタリング本
お前は、ただのコード修正をリファクタリングと言ってるだけだね。
リファクタリングは単なる「コード修正」とは違うもの。
リファクタリングは「既存の動きに影響を与えない方法を使ってコードを修正すること」
既存の動きに影響を与えない方法ってのがあるんだよ。
これを使わないとリファクタリングにはならない。
行き当たりばったりの思いつき修正とはわけが違う。
論理的に考えぬかれた体系化されたテクニック。
それカタログ化して解説した本が、世の中にでてるリファクタリング本
168デフォルトの名無しさん
2011/11/06(日) 17:24:22.30 >リファクタリングとか、
>10万行のソースコードがあったとして、
>その10万行のソースコードを、読んだってレベルじゃなくて、そうとう熟知した状態で
>1人で行わなきゃならない
>ていうか、それできるレベルなら、多分最初から書き直したほうが綺麗に書ける
とてもじゃないが、まともに教育を受けた人間の書いた日本語には見えない。
>10万行のソースコードがあったとして、
>その10万行のソースコードを、読んだってレベルじゃなくて、そうとう熟知した状態で
>1人で行わなきゃならない
>ていうか、それできるレベルなら、多分最初から書き直したほうが綺麗に書ける
とてもじゃないが、まともに教育を受けた人間の書いた日本語には見えない。
169デフォルトの名無しさん
2011/11/06(日) 21:45:33.79 > 「既存の動きに影響を与えない方法を使ってコードを修正すること」
ここで仕様をリファクターする必要を考慮しないのがリファクタリング厨
ここで仕様をリファクターする必要を考慮しないのがリファクタリング厨
170デフォルトの名無しさん
2011/11/06(日) 22:13:45.01171デフォルトの名無しさん
2011/11/06(日) 22:17:40.89 ユーザーインターフェースかわんなきゃリファクタリングと言ってみるtest
172デフォルトの名無しさん
2011/11/06(日) 23:12:56.73 >>170
ちゃんと読め。
ちゃんと読め。
173デフォルトの名無しさん
2011/11/07(月) 02:11:07.98 > 仕様をリファクター
はぁ?
んなもんリファクタリングじゃあなーいと言ってやれ。ドキュメントをリファクタリングしちゃるとか言ってる奴、それもリファクタリングじゃねーぞコラ。そういうのは、リストラクチャリング(再構築)というのだッ。
はぁ?
んなもんリファクタリングじゃあなーいと言ってやれ。ドキュメントをリファクタリングしちゃるとか言ってる奴、それもリファクタリングじゃねーぞコラ。そういうのは、リストラクチャリング(再構築)というのだッ。
174デフォルトの名無しさん
2011/11/07(月) 06:29:39.93 仕様変更にまで手をいれない修正だったら俺はする意味ないと思うけどね
いいと思ってるのは自分だけっていう典型だと思う
いいと思ってるのは自分だけっていう典型だと思う
175デフォルトの名無しさん
2011/11/07(月) 22:24:06.07 試験とか全部やり直しになるけどそこまでコードに重心置けないです
しかも動作は変わらないとかね
しかも動作は変わらないとかね
176デフォルトの名無しさん
2011/11/07(月) 22:56:57.01177デフォルトの名無しさん
2011/11/08(火) 00:14:11.06 >>176
とかいって逃げたいから自分の言葉で説明しないで本に書いてあるとか言ってるんでしょ?
わかるよ
説明できない人ってみんなそうだもの
あんたもいっしょ
残念だけどここ本質なのよね
そもそもリファクタリングっていう行動自体意味がわからない
将来どう変わるか?の仕様もないのに汎用性?
何に対していってるの?あれほど仕様書に重点をおいてるのに
なんでコードレベルでソフトウェアの方向性がわかるの?
それと何度もいうけど全体の工数からいったら実装なんてすげー短い期間なのに
リファクタリングなんてしなくていいんだよ
馬鹿かよ
設計や仕様決めに時間割いたほうがいいの、わかった?御馬鹿ちゃん?
人件費みたって派遣PGと正社員様様と比べて比較になるわけねーだろ
そんな糞みたいな脳みそしかないんだったら技術者なんてやめちゃえばいいのに
とかいって逃げたいから自分の言葉で説明しないで本に書いてあるとか言ってるんでしょ?
わかるよ
説明できない人ってみんなそうだもの
あんたもいっしょ
残念だけどここ本質なのよね
そもそもリファクタリングっていう行動自体意味がわからない
将来どう変わるか?の仕様もないのに汎用性?
何に対していってるの?あれほど仕様書に重点をおいてるのに
なんでコードレベルでソフトウェアの方向性がわかるの?
それと何度もいうけど全体の工数からいったら実装なんてすげー短い期間なのに
リファクタリングなんてしなくていいんだよ
馬鹿かよ
設計や仕様決めに時間割いたほうがいいの、わかった?御馬鹿ちゃん?
人件費みたって派遣PGと正社員様様と比べて比較になるわけねーだろ
そんな糞みたいな脳みそしかないんだったら技術者なんてやめちゃえばいいのに
178デフォルトの名無しさん
2011/11/08(火) 01:14:10.32 >>177
コンプレックス刺激されすぎw
コンプレックス刺激されすぎw
179デフォルトの名無しさん
2011/11/08(火) 01:17:58.36 単純なシチュエーションだと、今動いているものがあって
それに仕様変更や機能追加をする"前"にリファクタリングしたり
えーちょっと何やってんのか分からなぁ〜いって時に、リファクタリングして今の動きを確認したりする鴨
さすがに何も用事が無いのにリファクタリングはしないぞw
それに仕様変更や機能追加をする"前"にリファクタリングしたり
えーちょっと何やってんのか分からなぁ〜いって時に、リファクタリングして今の動きを確認したりする鴨
さすがに何も用事が無いのにリファクタリングはしないぞw
180デフォルトの名無しさん
2011/11/08(火) 06:35:51.23 >>179
ローカルのHDDの中で勝手にやってろレベルだなw
ローカルのHDDの中で勝手にやってろレベルだなw
181デフォルトの名無しさん
2011/11/08(火) 08:17:23.29182デフォルトの名無しさん
2011/11/08(火) 12:07:50.87 仕様書を大雑把に
・機能仕様書:ユーザの観点からシステムがどのように動くか記述する
・技術仕様書:プログラムの内部実装について記述する
に分けたとき、機能仕様書を変更しないのがリファクタリング
技術仕様書は変更する必要がある
と、俺は解釈してるんだけど
・機能仕様書:ユーザの観点からシステムがどのように動くか記述する
・技術仕様書:プログラムの内部実装について記述する
に分けたとき、機能仕様書を変更しないのがリファクタリング
技術仕様書は変更する必要がある
と、俺は解釈してるんだけど
183デフォルトの名無しさん
2011/11/08(火) 22:53:38.54184デフォルトの名無しさん
2011/11/09(水) 00:34:09.76 リファクタリングの価値は
リファクタリングしたことによる将来のメンテナンスコストの低減分だと思うから、
純粋なリファクタリングをする意味ってあると思うけどね。
まあ、少なくとも、作ったコードを客に出すのが仕事の人は、
リファクタリングの価値を見出すのは難しいだろうね。
お客が腐ったコードをメンテナンスし続ける費用を負担してくれる限り、
工数がかかる方が、お金になるだろうから。
リファクタリングしたことによる将来のメンテナンスコストの低減分だと思うから、
純粋なリファクタリングをする意味ってあると思うけどね。
まあ、少なくとも、作ったコードを客に出すのが仕事の人は、
リファクタリングの価値を見出すのは難しいだろうね。
お客が腐ったコードをメンテナンスし続ける費用を負担してくれる限り、
工数がかかる方が、お金になるだろうから。
185デフォルトの名無しさん
2011/11/09(水) 01:07:17.87 寧ろそうやって放置されたコードのメンテナンスの際にESP能力を発揮しながらリファクタリングして日銭稼いでますが何か。
186デフォルトの名無しさん
2011/11/09(水) 22:25:08.24187デフォルトの名無しさん
2011/11/09(水) 23:19:04.89 >>186
同じようなレベルの人がやったら対して変わらんだろうね。
時間がなくて小手先で直したのを時間が取れる時にまともに直すとかかしら。
あほなプログラマが書いた動くけどわけわらんプログラムを
レビューで突き返したりするのもリファクタリングになると思うけど、放置するの?
同じようなレベルの人がやったら対して変わらんだろうね。
時間がなくて小手先で直したのを時間が取れる時にまともに直すとかかしら。
あほなプログラマが書いた動くけどわけわらんプログラムを
レビューで突き返したりするのもリファクタリングになると思うけど、放置するの?
188デフォルトの名無しさん
2011/11/10(木) 00:11:30.20189デフォルトの名無しさん
2011/11/10(木) 02:48:37.98190デフォルトの名無しさん
2011/11/10(木) 02:49:24.36191デフォルトの名無しさん
2011/11/10(木) 06:19:17.82192デフォルトの名無しさん
2011/11/10(木) 22:10:19.47 http://www.os.cis.iwate-u.ac.jp/wikky/wikky.cgi?%E7%AC%AC2%E7%AB%A0%EF%BC%9A%E3%83%AA%E3%83%95%E3%82%A1%E3%82%AF%E3%82%BF%E3%83%AA%E3%83%B3%E3%82%B0%E3%81%AE%E5%8E%9F%E5%89%87
2.1 リファクタリングの歴史
リファクタリングの先駆け:1980年代以降Smalltalkの仕事をしていたWard CunninghamとKent Beckの2人
Smalltalkはリファクタリングに特に向いている環境
コンパイル、リンク、実行のサイクルが短く、コードを気軽に書き換えることができる
彼ら2人の考えはSmalltalk文化にリファクタリングの概念を定着させた
筆者「リファクタリング?そこまで重要ではないよ」→Kentと同じプロジェクトに携わり、
Kentのリファクタリングを目の当たりにする→ソフトウェアの生産性、品質に明らかな違いが…→筆者「!!」
上の経験からリファクタリングを重要視するようになった
2.1 リファクタリングの歴史
リファクタリングの先駆け:1980年代以降Smalltalkの仕事をしていたWard CunninghamとKent Beckの2人
Smalltalkはリファクタリングに特に向いている環境
コンパイル、リンク、実行のサイクルが短く、コードを気軽に書き換えることができる
彼ら2人の考えはSmalltalk文化にリファクタリングの概念を定着させた
筆者「リファクタリング?そこまで重要ではないよ」→Kentと同じプロジェクトに携わり、
Kentのリファクタリングを目の当たりにする→ソフトウェアの生産性、品質に明らかな違いが…→筆者「!!」
上の経験からリファクタリングを重要視するようになった
193デフォルトの名無しさん
2011/11/10(木) 23:19:30.99 >>192
そのストーリーって重要な部分なの?w
しかもそんな馬鹿みたいな長文書いて大事な要点がちっとも書いてないじゃん
>ソフトウェアの生産性、品質に明らかな違いが…
明らかに大事なのってこの部分の詳細だろ
何がよくて品質がどうよくなったのか?
だろ?
お前の国語の能力低すぎてリファクタリングまで怪しくなるわw
そのストーリーって重要な部分なの?w
しかもそんな馬鹿みたいな長文書いて大事な要点がちっとも書いてないじゃん
>ソフトウェアの生産性、品質に明らかな違いが…
明らかに大事なのってこの部分の詳細だろ
何がよくて品質がどうよくなったのか?
だろ?
お前の国語の能力低すぎてリファクタリングまで怪しくなるわw
194デフォルトの名無しさん
2011/11/11(金) 21:19:14.97 >>193
そういう文句はオリジナルを書いた奴に言え。
そういう文句はオリジナルを書いた奴に言え。
195デフォルトの名無しさん
2011/11/11(金) 23:32:49.89 自分の言葉で語れない奴はカス
196デフォルトの名無しさん
2011/11/11(金) 23:58:46.50 お前のセリフに説得力はない
197デフォルトの名無しさん
2011/11/12(土) 01:34:54.40 >>191
違いを理解できない能力なだけじゃないの?
違いを理解できない能力なだけじゃないの?
198デフォルトの名無しさん
2011/11/16(水) 20:57:29.42 重複の除去が有効とか書いてあるじゃん
前にやった仕事で、ほんの一部を除いて同一の機能を持つモジュール2つが
別々の人によってそれぞれ実装されてて
目玉飛び出そうになったのを思い出した
前にやった仕事で、ほんの一部を除いて同一の機能を持つモジュール2つが
別々の人によってそれぞれ実装されてて
目玉飛び出そうになったのを思い出した
199デフォルトの名無しさん
2011/11/16(水) 21:30:50.10 別にいいじゃん
その2つをくっつけることで後に呼び出し先Aの機能を修正したいだけなのに
その機能がわざわざまとめられてるために
もう一つの呼び出し先Bのソースまで洗わないといけなくなるかもしんないだろ
まとめるのは必ずしも正解ではない
その2つをくっつけることで後に呼び出し先Aの機能を修正したいだけなのに
その機能がわざわざまとめられてるために
もう一つの呼び出し先Bのソースまで洗わないといけなくなるかもしんないだろ
まとめるのは必ずしも正解ではない
200デフォルトの名無しさん
2011/11/16(水) 22:33:28.29 >>199
必ずしも正解ではないのは正しいけど
同じような修正が必要になったときに片方の修正が忘れられることの方が多いと思われ
共通で使われてるメソッドの参照元を調べることより
クラスもメソッドも違うけど実は中身が同じでなければならなかったのを探すほうが大変な気が
分ける理由がないうちは一緒にしといて
必要になったら分ける方のが正しいと思う
必ずしも正解ではないのは正しいけど
同じような修正が必要になったときに片方の修正が忘れられることの方が多いと思われ
共通で使われてるメソッドの参照元を調べることより
クラスもメソッドも違うけど実は中身が同じでなければならなかったのを探すほうが大変な気が
分ける理由がないうちは一緒にしといて
必要になったら分ける方のが正しいと思う
201デフォルトの名無しさん
2011/11/17(木) 01:17:42.75 ちなみに >>198 は
その両方を移植する仕事だった
「工数儲けた」と思ってたら
両者をソース読んで同一機能であることを確認した上で
一つにすりあわせて、その承認もらう羽目になったとさ
当然まともな設計書なんてありゃしないし
その両方を移植する仕事だった
「工数儲けた」と思ってたら
両者をソース読んで同一機能であることを確認した上で
一つにすりあわせて、その承認もらう羽目になったとさ
当然まともな設計書なんてありゃしないし
202デフォルトの名無しさん
2011/11/17(木) 22:48:38.78 >>200
いや、お前の言ってることはGoogleやAppleでは正しいだろうな
だが、日本の工業製品ではNG
もちろんいいたいことはわかるけど
それじゃ見積もりがとれないこの1点でNG
色々な大手でたくさんのプロジェクトが走っていて
共通ライブラリなんて生まれないっつか生まれても消滅してしまう理由はここにある
修正の影響範囲が巨大すぎて見積もれない
また、修正時に全員が同じタイミングで対応できない
これも大きな問題だ
こっち動かなくなるのに「直したよ〜」とかメールくれられても困るだろ?
そっちに手がまわらないのにリリース前に真ライブラリでバグってリリース失敗であぼんとか話にならない
修正した本人は「いいんですーこれが本来あるべき姿なんです〜」って主張しようと
修正するほうは「糞が・・・」って思うっしょ?
まあ、MSの出荷するもんにみんなが愚痴をこぼす瞬間だと思うけど
いや、お前の言ってることはGoogleやAppleでは正しいだろうな
だが、日本の工業製品ではNG
もちろんいいたいことはわかるけど
それじゃ見積もりがとれないこの1点でNG
色々な大手でたくさんのプロジェクトが走っていて
共通ライブラリなんて生まれないっつか生まれても消滅してしまう理由はここにある
修正の影響範囲が巨大すぎて見積もれない
また、修正時に全員が同じタイミングで対応できない
これも大きな問題だ
こっち動かなくなるのに「直したよ〜」とかメールくれられても困るだろ?
そっちに手がまわらないのにリリース前に真ライブラリでバグってリリース失敗であぼんとか話にならない
修正した本人は「いいんですーこれが本来あるべき姿なんです〜」って主張しようと
修正するほうは「糞が・・・」って思うっしょ?
まあ、MSの出荷するもんにみんなが愚痴をこぼす瞬間だと思うけど
203デフォルトの名無しさん
2011/11/17(木) 22:50:23.01204デフォルトの名無しさん
2011/11/17(木) 22:55:03.81 >>203
でもいくらもないっしょ?
日本のITって進化に失敗してて紙業務を電子化したような仕事のほうが多いよね?
韓国にもすっかり抜かれちゃったみたいで国内全員でショボーンって感じじゃない?
研究開発分野と本当に極一部だけだろうね
まあ、いまそういう開発してても日本じゃいつ紙業務の電子化ITにまわされるかわからないから
勝ち組って意味でいうと海外脱出組が勝ち組だろうね
でもいくらもないっしょ?
日本のITって進化に失敗してて紙業務を電子化したような仕事のほうが多いよね?
韓国にもすっかり抜かれちゃったみたいで国内全員でショボーンって感じじゃない?
研究開発分野と本当に極一部だけだろうね
まあ、いまそういう開発してても日本じゃいつ紙業務の電子化ITにまわされるかわからないから
勝ち組って意味でいうと海外脱出組が勝ち組だろうね
205デフォルトの名無しさん
2011/11/17(木) 22:58:57.20206デフォルトの名無しさん
2011/11/17(木) 23:01:51.10 うちは少数精鋭なんで(使えない奴はやめさせられる)
同じコードをいくつも書くとかそんな無駄なことやってられないんだよね。
テストも人海戦術で同じことを何度もやるとか、時間的に無理だし、
もちろん手動テストは極力減らすので、変更したって
影響があるならすぐ分かる。
同じコードをいくつも書くとかそんな無駄なことやってられないんだよね。
テストも人海戦術で同じことを何度もやるとか、時間的に無理だし、
もちろん手動テストは極力減らすので、変更したって
影響があるならすぐ分かる。
207デフォルトの名無しさん
2011/11/17(木) 23:02:59.45 >>205
ウェブ系なんて工業製品とかわんねーけどな
あんなん汎用性見越して組む必要あるかね?
寿命が短いからどう組んでもどうとでも動くが正解だろ?
納期まで早い方が真
お前の世界こそプログラムを綺麗にまとめて褒める奴1人もいないと思うがな
ウェブ系なんて工業製品とかわんねーけどな
あんなん汎用性見越して組む必要あるかね?
寿命が短いからどう組んでもどうとでも動くが正解だろ?
納期まで早い方が真
お前の世界こそプログラムを綺麗にまとめて褒める奴1人もいないと思うがな
208デフォルトの名無しさん
2011/11/17(木) 23:38:17.66209デフォルトの名無しさん
2011/11/17(木) 23:39:39.61 重複コードを作ると、納期が延びます。
修正があると、重複コードの分
修正量が増えます。
少しの修正であっちこっち修正して、
あっちこっちテストして納期伸ばしてるのは誰ですか?w
修正があると、重複コードの分
修正量が増えます。
少しの修正であっちこっち修正して、
あっちこっちテストして納期伸ばしてるのは誰ですか?w
210デフォルトの名無しさん
2011/11/18(金) 00:57:17.23 >>209
それって何箇所?
10箇所?20箇所?程度なら貼ったほうが速いよね?
思いっきりまとめあげられてて難しい仕組みに頭ひねってソース解読しなきゃいけないぐらいだったら
単純コピーで貼ってあってくれたほうがまだソース読みやすいよね
っていうか件数が100件いかない程度のコピペならお前が便所に席を立った間にやっておいてやるよ
この程度の件数だったらどう組んでも変わらない
それって何箇所?
10箇所?20箇所?程度なら貼ったほうが速いよね?
思いっきりまとめあげられてて難しい仕組みに頭ひねってソース解読しなきゃいけないぐらいだったら
単純コピーで貼ってあってくれたほうがまだソース読みやすいよね
っていうか件数が100件いかない程度のコピペならお前が便所に席を立った間にやっておいてやるよ
この程度の件数だったらどう組んでも変わらない
211デフォルトの名無しさん
2011/11/18(金) 01:28:11.79212デフォルトの名無しさん
2011/11/18(金) 01:48:53.37 自分でやるんじゃなくて他人にやらせるんだろ
213デフォルトの名無しさん
2011/11/18(金) 06:57:57.33 >>211
いや、楽しいよ
お前みたいな対象物のメリットとデメリットも判断できんようなの出し抜いて数字上げるのが何よりの快感だわ(笑)
結局、技術の上部だけしかすくえないひとって何も見えてないんだよね
新しいってだけである意味パニック状態になってる自分がなにより見えてない
いや、楽しいよ
お前みたいな対象物のメリットとデメリットも判断できんようなの出し抜いて数字上げるのが何よりの快感だわ(笑)
結局、技術の上部だけしかすくえないひとって何も見えてないんだよね
新しいってだけである意味パニック状態になってる自分がなにより見えてない
214デフォルトの名無しさん
2011/11/18(金) 07:32:36.75 数字を出しさえすればそれが全てだと思い込んでいることはよく判った。
さぞかし楽しい人生だろうねぇ。
さぞかし楽しい人生だろうねぇ。
215デフォルトの名無しさん
2011/11/18(金) 11:48:05.79216デフォルトの名無しさん
2011/11/18(金) 12:54:07.46 >>210
> 思いっきりまとめあげられてて難しい仕組みに頭ひねってソース解読しなきゃいけないぐらいだったら
> 単純コピーで貼ってあってくれたほうがまだソース読みやすいよね
申し訳ありません
ifとforしか理解できない人もいるということを忘れていました
リファクタリングの過程でデザインパターンを適用してしまったことをお許しください
> 思いっきりまとめあげられてて難しい仕組みに頭ひねってソース解読しなきゃいけないぐらいだったら
> 単純コピーで貼ってあってくれたほうがまだソース読みやすいよね
申し訳ありません
ifとforしか理解できない人もいるということを忘れていました
リファクタリングの過程でデザインパターンを適用してしまったことをお許しください
217デフォルトの名無しさん
2011/11/18(金) 12:59:02.53 >>213
コピペもできるしリファクタリングもできる俺がそれを言うならまだわかるけど、
お前はコピペしかできないんだからさ、取捨選択の上でコピペを採用したみたいな言い方はやめてよ
もっともらしい後付けをしたところで、お前のカードはコピペしかないわけで
コピペもできるしリファクタリングもできる俺がそれを言うならまだわかるけど、
お前はコピペしかできないんだからさ、取捨選択の上でコピペを採用したみたいな言い方はやめてよ
もっともらしい後付けをしたところで、お前のカードはコピペしかないわけで
218デフォルトの名無しさん
2011/11/18(金) 12:59:57.09219デフォルトの名無しさん
2011/11/18(金) 15:50:01.61 正面から反論できないときは人格攻撃になるんですね
その時点で白旗あげてるっていうかなんていうか
その時点で白旗あげてるっていうかなんていうか
220デフォルトの名無しさん
2011/11/18(金) 19:16:21.49221デフォルトの名無しさん
2011/11/18(金) 23:06:02.19 >>220
でも自分のやってることの説明できないってのは問題じゃない?
結局トレードオフの問題であって
やればやるほどとかどんな場面でもってわけじゃないってとこは否定できないわけでしょ
じゃあ、君のやり方は正しいの?また、他の人と差がでるのは何が決め手なの?
ってのは結局のところどこでも求められると思うんだけどね
それが説明できないなら君に用のある人なんていないと思うんだよね
みんな暇じゃないから(笑)
でも自分のやってることの説明できないってのは問題じゃない?
結局トレードオフの問題であって
やればやるほどとかどんな場面でもってわけじゃないってとこは否定できないわけでしょ
じゃあ、君のやり方は正しいの?また、他の人と差がでるのは何が決め手なの?
ってのは結局のところどこでも求められると思うんだけどね
それが説明できないなら君に用のある人なんていないと思うんだよね
みんな暇じゃないから(笑)
222デフォルトの名無しさん
2011/11/19(土) 16:25:48.92 へえ
223デフォルトの名無しさん
2011/11/19(土) 16:38:24.26 トレードオフ考えてやるんだから
やっぱりリファクタリングは必要ってことね
リファクタリング全否定って人はいるのかしら
やっぱりリファクタリングは必要ってことね
リファクタリング全否定って人はいるのかしら
224デフォルトの名無しさん
2011/11/19(土) 17:14:49.53 トレードオフはコードをまとめる話だろ?
リファクタリングはまったく必要ないよ
そもそも意味わからないもん
次の仕様が決まってる中でのコード修正ならわかるけど
次になんの予定もないのに何に向けてどう修正してるのかまったく理解できない
その修正はいいの?悪いの?
オナニーで終わってない?
これらを判断できる材料すらわからない
単に金をドブに捨ててるだけだと思う
リファクタリングはまったく必要ないよ
そもそも意味わからないもん
次の仕様が決まってる中でのコード修正ならわかるけど
次になんの予定もないのに何に向けてどう修正してるのかまったく理解できない
その修正はいいの?悪いの?
オナニーで終わってない?
これらを判断できる材料すらわからない
単に金をドブに捨ててるだけだと思う
225デフォルトの名無しさん
2011/11/19(土) 17:30:26.36 汚いコード
ゴミ溜めが如くきったない部屋で過ごしてもなーんにも問題無い
↑
↓
チリ一つも落ちていないようなクリーンルームじゃないと過ごせない
綺麗なコード
って話だろ? 何事もほどほどにしとけって事だよ
ゴミ溜めが如くきったない部屋で過ごしてもなーんにも問題無い
↑
↓
チリ一つも落ちていないようなクリーンルームじゃないと過ごせない
綺麗なコード
って話だろ? 何事もほどほどにしとけって事だよ
226デフォルトの名無しさん
2011/11/19(土) 17:33:20.81 >>225
人の話を良く聞かないで進めちゃって失敗するほうじゃない?
人の話を良く聞かないで進めちゃって失敗するほうじゃない?
227デフォルトの名無しさん
2011/11/19(土) 18:59:16.42 >>224
キミがそのコードをずっとメンテナンスする責任者だとして、
どこかのプログラマが明らかにまとめるべきところまとめてこなかったり、
分けるべきところをを無理やりまとめてきたりした場合、
正しく動くという理由でそのままにしておくのかい?
キミがそのコードをずっとメンテナンスする責任者だとして、
どこかのプログラマが明らかにまとめるべきところまとめてこなかったり、
分けるべきところをを無理やりまとめてきたりした場合、
正しく動くという理由でそのままにしておくのかい?
228デフォルトの名無しさん
2011/11/19(土) 19:28:32.54229デフォルトの名無しさん
2011/11/19(土) 19:33:14.80 ソース=設計書だろ?
230デフォルトの名無しさん
2011/11/19(土) 19:47:12.13 >>229
底辺乙
底辺乙
231デフォルトの名無しさん
2011/11/19(土) 19:51:09.79232デフォルトの名無しさん
2011/11/19(土) 20:14:22.32 最高 綺麗で動く
↑ 汚いが動く
↓ 綺麗で動かない
最低 汚くて動かない
一番下のは捨ててよし
[動く/動かない] と [綺麗/汚い] の相関関係だお
汚いけど動くのは、綺麗だが動かないものより価値がある。
でも綺麗で動かないのを 動く にしやすいし、
汚いけど動くものも、後で何か変更するにあたって、動くのを保ちつつ綺麗にしておくと直しやすい。
「綺麗にする」のがリファクタリング。動かないものを動くようにすることとはイコールではない。関係はあるけど。
↑ 汚いが動く
↓ 綺麗で動かない
最低 汚くて動かない
一番下のは捨ててよし
[動く/動かない] と [綺麗/汚い] の相関関係だお
汚いけど動くのは、綺麗だが動かないものより価値がある。
でも綺麗で動かないのを 動く にしやすいし、
汚いけど動くものも、後で何か変更するにあたって、動くのを保ちつつ綺麗にしておくと直しやすい。
「綺麗にする」のがリファクタリング。動かないものを動くようにすることとはイコールではない。関係はあるけど。
233デフォルトの名無しさん
2011/11/19(土) 20:27:15.16 >>232 使用がバッチィからコードもバッチイって発想はないのか?
234232
2011/11/19(土) 20:45:33.70 仕様が汚いと動かすのが難しい
↑
↓
綺麗な仕様は動かしやすい
って関係はあると思うけど、コードと仕様は直接関係しないんじゃねの?
↑
↓
綺麗な仕様は動かしやすい
って関係はあると思うけど、コードと仕様は直接関係しないんじゃねの?
235デフォルトの名無しさん
2011/11/19(土) 20:55:13.83236デフォルトの名無しさん
2011/11/19(土) 21:31:39.15 コードを綺麗/汚いで語るから話がおかしくなるんじゃないか。
リファクタリングって大なり小なり設計の問題の修正のことだと思うんだが。
オレがずれてるのか。
リファクタリングって大なり小なり設計の問題の修正のことだと思うんだが。
オレがずれてるのか。
237デフォルトの名無しさん
2011/11/19(土) 21:34:18.54238デフォルトの名無しさん
2011/11/19(土) 21:49:35.63 もちろん設計の問題とコードの綺麗/汚いは関係ありますが?
最初にきちんと設計をしたつもりでも、実装段階では想定したとおりに行かなかったり、抜けがあったりすることはよくあることです。
実際に書いているうちにいろいろ思いつくこともあります。ちょこっと例外的な処理を付け加えて、を繰り返し、コードは汚くなっていきます。
そうしてソースがスパゲッティ化し、メンテ不能のソースとなっていきます。
そうならないようにするためにリファクタリングがあります。
リファクタリングとは、仕様を変えることなく、ソースコードを改造することをいいます。
汚いソースコードでもプログラムは動きますが、メンテナンスするのは大変です。
汚いソースコードと綺麗なソースコードではメンテのしやすさが全く違います。
なのできるだけ綺麗なソースを書くように心がけ、汚くなったら速やかに書き直すことです。
後々のことを考えて、わかりやすいソースに直します。
最初にきちんと設計をしたつもりでも、実装段階では想定したとおりに行かなかったり、抜けがあったりすることはよくあることです。
実際に書いているうちにいろいろ思いつくこともあります。ちょこっと例外的な処理を付け加えて、を繰り返し、コードは汚くなっていきます。
そうしてソースがスパゲッティ化し、メンテ不能のソースとなっていきます。
そうならないようにするためにリファクタリングがあります。
リファクタリングとは、仕様を変えることなく、ソースコードを改造することをいいます。
汚いソースコードでもプログラムは動きますが、メンテナンスするのは大変です。
汚いソースコードと綺麗なソースコードではメンテのしやすさが全く違います。
なのできるだけ綺麗なソースを書くように心がけ、汚くなったら速やかに書き直すことです。
後々のことを考えて、わかりやすいソースに直します。
239デフォルトの名無しさん
2011/11/19(土) 22:15:38.43 >>238
> そうならないようにするためにリファクタリングがあります。
そうならないように設計を見直す方が先じゃないか?
小手先でどれだけいじっても, 汚い設計は汚いソースを
再生産するだけじゃないのか?
それだったら, 設計をリファクターすべきだ
ぶっちゃけ, ユーザーインターフェースが変わらなきゃ
仕様の範囲内だ
> そうならないようにするためにリファクタリングがあります。
そうならないように設計を見直す方が先じゃないか?
小手先でどれだけいじっても, 汚い設計は汚いソースを
再生産するだけじゃないのか?
それだったら, 設計をリファクターすべきだ
ぶっちゃけ, ユーザーインターフェースが変わらなきゃ
仕様の範囲内だ
240デフォルトの名無しさん
2011/11/19(土) 23:03:54.10 >>238
コピペはいらんよ。
汚い綺麗で語るとコードの可読性ばかりを問題にしてるように感じるって話。
だからリファクタリングがいらないとか言う奴がいるんじゃないの。
コードが綺麗であっても設計上の問題が存在することは当然あるよね。
コードの綺麗/汚いは設計の一部しか示していないと思うし、
その修正はリファクタリングの一部でしかないと思う。
コピペはいらんよ。
汚い綺麗で語るとコードの可読性ばかりを問題にしてるように感じるって話。
だからリファクタリングがいらないとか言う奴がいるんじゃないの。
コードが綺麗であっても設計上の問題が存在することは当然あるよね。
コードの綺麗/汚いは設計の一部しか示していないと思うし、
その修正はリファクタリングの一部でしかないと思う。
241デフォルトの名無しさん
2011/11/20(日) 07:43:51.29242デフォルトの名無しさん
2011/11/20(日) 08:21:15.92 関数、クラスの仕様は変わっても
システム全体の仕様は変わりません。
なので仕様変更にはあたりません。
システム全体の仕様は変わりません。
なので仕様変更にはあたりません。
243デフォルトの名無しさん
2011/11/20(日) 08:21:59.02 設計変更と仕様変更は別の話といえばよかったか。
244デフォルトの名無しさん
2011/11/20(日) 12:07:12.15 設計を仕様と見なしたら
仕様変更を伴わないコード変更って存在するのか?
仕様変更を伴わないコード変更って存在するのか?
245デフォルトの名無しさん
2011/11/20(日) 12:08:20.66 aとかbとかわけのわからん変数名を
意味がある変数名に変更するとか。
意味がある変数名に変更するとか。
246デフォルトの名無しさん
2011/11/20(日) 13:09:50.85 I/F変更を伴うかどうかっていう観点じゃないの
ユーザに見える部分とか
担当者の異なるモジュール間とか
ユーザに見える部分とか
担当者の異なるモジュール間とか
247デフォルトの名無しさん
2011/11/20(日) 17:10:54.61 オリンパスコーディング
248デフォルトの名無しさん
2011/11/20(日) 17:46:34.19 結局、
外から見た目の振る舞いが変わるか/変わらないかがポイントで、
外から見た目の振る舞い=仕様であって
内部構造≒設計は、リファクタリングの対象
って事でおk?
外から見た目の振る舞いが変わるか/変わらないかがポイントで、
外から見た目の振る舞い=仕様であって
内部構造≒設計は、リファクタリングの対象
って事でおk?
249デフォルトの名無しさん
2011/11/20(日) 18:02:36.08250デフォルトの名無しさん
2011/11/20(日) 18:50:26.97251デフォルトの名無しさん
2011/11/20(日) 18:53:49.64252デフォルトの名無しさん
2011/11/20(日) 21:17:25.23253デフォルトの名無しさん
2011/11/21(月) 09:59:01.46 (この人たち、なんで今さらこんな議論をしてるんだろう)
254デフォルトの名無しさん
2011/11/21(月) 22:35:10.04 最初からずっとこのスレにいるのは
お前だけだよw
お前だけだよw
255デフォルトの名無しさん
2011/11/22(火) 10:39:05.00 そうか、リファクタリング本を読んでるのは俺だけだったか
256デフォルトの名無しさん
2011/11/23(水) 00:32:21.88 >>255
本の受け売りじゃなくて中身をちゃんと理解しろよ
本の受け売りじゃなくて中身をちゃんと理解しろよ
257デフォルトの名無しさん
2011/11/23(水) 01:19:14.75 そういう手合いはおそらくよんですらいない
買っただけ
買っただけ
258デフォルトの名無しさん
2012/02/07(火) 13:45:03.37 改修が必要になったときに初めて
その場で interface をでっちあげて、その後、クラスお取替え
これでいい気がしてきた
その場で interface をでっちあげて、その後、クラスお取替え
これでいい気がしてきた
259デフォルトの名無しさん
2012/02/07(火) 20:02:48.59 それでいい
260デフォルトの名無しさん
2012/03/24(土) 14:35:39.62 リファクタリングを身に付けるとコードレベルでの設計力が上がりますか?
261デフォルトの名無しさん
2012/03/24(土) 16:05:22.68 設計力は下がります
でも組んだ後の問題に対する対応力は上がります
でも組んだ後の問題に対する対応力は上がります
262デフォルトの名無しさん
2012/03/24(土) 17:35:34.20 >>261
何故、設計力は下がるのですか?
何故、設計力は下がるのですか?
263デフォルトの名無しさん
2012/03/24(土) 21:11:33.51 設計力あがるだろ
正しい設計のコードに
変化させるのがリファクタリングだ。
正しい設計のコードに
変化させるのがリファクタリングだ。
264デフォルトの名無しさん
2012/03/24(土) 21:36:47.86265デフォルトの名無しさん
2012/03/24(土) 21:51:30.52 オナニー? 自己満足と言いたいのかもしれないが。
仕事でやるのなら自己満足じゃないぞ。
みんなの満足。
仕事でやるのなら自己満足じゃないぞ。
みんなの満足。
266デフォルトの名無しさん
2012/03/24(土) 22:21:58.07 みんなでオナニー
267デフォルトの名無しさん
2012/03/25(日) 12:10:02.63 分散マスタベーション
268デフォルトの名無しさん
2012/04/22(日) 22:43:46.10 密に結合した処理を処理を疎になるようにするとか
処理が対象になるようにシーケンス直すとか
って意味があるリファクタリングだと思うけど
こういうのはリファクタリングっていわんの?
処理が対象になるようにシーケンス直すとか
って意味があるリファクタリングだと思うけど
こういうのはリファクタリングっていわんの?
269デフォルトの名無しさん
2012/08/05(日) 00:31:39.26 >クラス内部で別のクラスを生成しない
>>4のこの話って完全にはDIでも使わなきゃ無理だけど、
FactoryMethodで解決できるよね。
>publicメソッドの引数には、なるべくクラスを使わない。
完全抽象化クラスに類するもの限定ってなら正しいけど、
intや文字列型だけってのは無いよね。スタブ渡せば済む話だし。
>>4のこの話って完全にはDIでも使わなきゃ無理だけど、
FactoryMethodで解決できるよね。
>publicメソッドの引数には、なるべくクラスを使わない。
完全抽象化クラスに類するもの限定ってなら正しいけど、
intや文字列型だけってのは無いよね。スタブ渡せば済む話だし。
270デフォルトの名無しさん
2012/08/05(日) 01:11:40.91 言葉の揚げ足取りに終始しててウザいだけのスレになっちゃってるなw
271デフォルトの名無しさん
2012/10/14(日) 16:17:10.72 大規模アプリには
必ずリファクタリングが必要。
開発工程の一つに加えていいレベル。
必ずリファクタリングが必要。
開発工程の一つに加えていいレベル。
272デフォルトの名無しさん
2012/10/15(月) 15:52:21.57 VB6で幾度となく機能追加が行われたコードをぼんやり眺めてると
リファクタリング?何それおいしいの?
という気分になってくる。
リファクタリング?何それおいしいの?
という気分になってくる。
273デフォルトの名無しさん
2012/10/16(火) 18:14:20.05 >>272
そういうコードこそ、リファクタリングが楽しいんじゃないの?
そういうコードこそ、リファクタリングが楽しいんじゃないの?
274272
2012/10/16(火) 18:35:14.51 趣味でやるならすごく楽しい。一人でやるのなら絶対リファクタリングしてる。
けど仕事となると時間が取れない。
さらなる機能追加と他言語への移植作業用のドキュメントが優先になってまつorz
移植作業前にリファクタリングできたら解読も楽だろうになあ。
そんなことより成果物(ドキュメント)が優先だってさ。しゃーねーや。
けど仕事となると時間が取れない。
さらなる機能追加と他言語への移植作業用のドキュメントが優先になってまつorz
移植作業前にリファクタリングできたら解読も楽だろうになあ。
そんなことより成果物(ドキュメント)が優先だってさ。しゃーねーや。
276デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.AN リファク太
278デフォルトの名無しさん
2014/01/21(火) 23:03:30.89 リファクタリング本はかなり勉強になったな。
ぐちゃぐちゃなコードしか書けなかったのが、リファクタリングしまくってたら
最初からオブジェクト指向やらデザインパターンやらを考慮したコードが書けるようになってた。
ぐちゃぐちゃなコードしか書けなかったのが、リファクタリングしまくってたら
最初からオブジェクト指向やらデザインパターンやらを考慮したコードが書けるようになってた。
279デフォルトの名無しさん
2014/07/25(金) 01:44:17.80ID:S+8bjftN リファクタリング中にバグが見つかっても修正しちゃいけないんですか?
振る舞いが変わるわけだし。
リファクタリング原理主義者の方の意見が聞きたいです。
振る舞いが変わるわけだし。
リファクタリング原理主義者の方の意見が聞きたいです。
280デフォルトの名無しさん
2014/07/25(金) 07:34:43.94ID:FDyePLlK 好きにすれば?どうせ個人でやってんだろ
一人ならほんと楽しいよねリファクタ。
業務でリファクタなんかできねーよ
リリースしてから何年も動いてるパッケージに手入れられるわけないだろ!
一人ならほんと楽しいよねリファクタ。
業務でリファクタなんかできねーよ
リリースしてから何年も動いてるパッケージに手入れられるわけないだろ!
281デフォルトの名無しさん
2014/07/25(金) 10:51:25.65ID:nHudeAGx 業務でリファクタリングの時は、バグの種類にもよるけど基本的にはそのまま。
勿論、リファクタリング後に修正することを見越してリファクタリングすることになる。
実は、バグを見つける為にリファクタリングすることもあるので、「できねーよ」で済まない場合もあるのよ。
勿論、リファクタリング後に修正することを見越してリファクタリングすることになる。
実は、バグを見つける為にリファクタリングすることもあるので、「できねーよ」で済まない場合もあるのよ。
282デフォルトの名無しさん
2014/07/25(金) 11:26:11.42ID:PjU5XzSY バグを見つけるためにリファクタリングをすることはあるが
改修はリファクタリング前のコードに対して行うことになるなぁ
改修はリファクタリング前のコードに対して行うことになるなぁ
283デフォルトの名無しさん
2014/07/25(金) 12:21:15.76ID:CQdwbNpj リファクタリングとは
テストの合格を維持したままの
コードの修正でしょ
テストの合格を維持したままの
コードの修正でしょ
284デフォルトの名無しさん
2014/07/25(金) 12:41:48.16ID:mmV7Js8i 上を納得というか安心させるための無駄検証にコストを掛けた後だと
いじくれないというのはわかる
だがサブシステムを小分けして
その範囲内で裁量をもたせられるようにしてないのはアカン
いじくれないというのはわかる
だがサブシステムを小分けして
その範囲内で裁量をもたせられるようにしてないのはアカン
285デフォルトの名無しさん
2014/07/25(金) 13:58:36.59ID:fPj1ZcPi286デフォルトの名無しさん
2014/07/25(金) 20:12:11.75ID:zPq/iOJh リファクタリングしたがる人とは仕事したくないよね
287デフォルトの名無しさん
2014/07/25(金) 20:12:41.10ID:Fz0v1PBn でも実は一発目無計画で作ってリファクタリングするのが一番品質がいい
288デフォルトの名無しさん
2014/07/25(金) 21:18:52.98ID:JraUdqnP 一発目無計画っていうのがありえなさすぎ。
趣味のプログラミングだろそれは。
趣味のプログラミングだろそれは。
289デフォルトの名無しさん
2014/07/25(金) 22:15:52.25ID:Xbv85is1290デフォルトの名無しさん
2014/07/25(金) 23:03:10.49ID:mmV7Js8i 神ならざる身で限界を知りつつも最善を目指す手法ではないか
291デフォルトの名無しさん
2014/07/25(金) 23:24:21.34ID:oKdTZN9u 考え方の違いなんだよね。この業界に「ボーイスカウトの規則」っていう言葉があるらしい。
http://qiita.com/hirokidaichi/items/d6c473d8011bd9330e63
> ボーイスカウトが、来る前よりも帰った後の方が山をきれいにしておくことにちなんだ規則。
> ソフトウェア開発においては「モジュールをチェックインする際には、必ずチェックアウト時よりも美しくする」ことを意味する。
リファクタリングしない人って、ただ動けばいい、コードが怖くて触れない。
他の部分はいじらないですませようとしちゃう。
修正しない部分なら見て見ぬふりもいいが、修正するなら、
そのまわりを綺麗にしろと。
それが出来ない人は、バグも多いんだよ。してシンプルにしてないから。
複雑なものはバグが多い。複雑だからコードを理解していない。
理解してないからバグが出る。当たり前の話。
http://qiita.com/hirokidaichi/items/d6c473d8011bd9330e63
> ボーイスカウトが、来る前よりも帰った後の方が山をきれいにしておくことにちなんだ規則。
> ソフトウェア開発においては「モジュールをチェックインする際には、必ずチェックアウト時よりも美しくする」ことを意味する。
リファクタリングしない人って、ただ動けばいい、コードが怖くて触れない。
他の部分はいじらないですませようとしちゃう。
修正しない部分なら見て見ぬふりもいいが、修正するなら、
そのまわりを綺麗にしろと。
それが出来ない人は、バグも多いんだよ。してシンプルにしてないから。
複雑なものはバグが多い。複雑だからコードを理解していない。
理解してないからバグが出る。当たり前の話。
292デフォルトの名無しさん
2014/07/25(金) 23:31:13.15ID:zPq/iOJh そういう自己満足だけの身勝手な修正が一番たちが悪いんだよ
293デフォルトの名無しさん
2014/07/25(金) 23:33:03.76ID:oKdTZN9u >>292
なんでですか?
まずきれいなコードのほうが、メンテナンス性が高くなり
バグが減り、開発コストも下がります。
ここは、否定しませんよね?
じゃあ、最終目標は「修正」するべきであってます。
あなたは、まったく筋違いの否定をしているのでは?
なんでですか?
まずきれいなコードのほうが、メンテナンス性が高くなり
バグが減り、開発コストも下がります。
ここは、否定しませんよね?
じゃあ、最終目標は「修正」するべきであってます。
あなたは、まったく筋違いの否定をしているのでは?
294デフォルトの名無しさん
2014/07/25(金) 23:42:25.29ID:zPq/iOJh295デフォルトの名無しさん
2014/07/26(土) 00:11:53.24ID:NIQWGSzg コードがスパゲティになってしまって、
簡単な機能追加ですら2週間もかかるようになってしまってた
(しかも、テストを繰り返しても正しさに自身が持てなかった)のが、
3週間ほど時間をかけてリファクタリングした結果
簡単な機能追加なら1時間もかからず行えるようになりました
簡単な機能追加ですら2週間もかかるようになってしまってた
(しかも、テストを繰り返しても正しさに自身が持てなかった)のが、
3週間ほど時間をかけてリファクタリングした結果
簡単な機能追加なら1時間もかからず行えるようになりました
296デフォルトの名無しさん
2014/07/26(土) 01:29:58.80ID:b/ARCjIF 今どきスパゲティコードなど、そうそうお目にかかるもんじゃない
297デフォルトの名無しさん
2014/07/26(土) 02:28:53.78ID:+7Kb6odc リファクタリングするもしないも、そのソフトの特性や現場事情があんだから、
まずそういう情報がないとなんとも言えねーだろ。
共通して言えるのは独断で判断するなってことだよ。
まずそういう情報がないとなんとも言えねーだろ。
共通して言えるのは独断で判断するなってことだよ。
298デフォルトの名無しさん
2014/07/26(土) 08:38:26.34ID:NIQWGSzg >>296
ちゃんとリファクタリングするようになったからね
ちゃんとリファクタリングするようになったからね
299デフォルトの名無しさん
2014/07/26(土) 09:05:17.83ID:EislOxX9 設計の手法が確立してきたからだろw
300デフォルトの名無しさん
2014/07/26(土) 09:15:20.20ID:HnYXSVS2 リファクタリングする前のコードを保存しておいて
リファクタリングしてテストに合格したら
前のコードを消去すれば安全だよ
リファクタリングしてテストに合格したら
前のコードを消去すれば安全だよ
301デフォルトの名無しさん
2014/07/26(土) 09:33:49.93ID:NIQWGSzg302デフォルトの名無しさん
2014/07/26(土) 11:28:39.87ID:lCiymgo1 >>288
神が降りてきて、わぁぁぁぁぁってプログラム書く手が動くような事あるだろ?
神が降りてきて、わぁぁぁぁぁってプログラム書く手が動くような事あるだろ?
303デフォルトの名無しさん
2014/07/26(土) 11:34:58.07ID:EislOxX9 業務ではないなw
304デフォルトの名無しさん
2014/07/26(土) 13:52:30.19ID:F6Vf17wA 最近ソフトウェアが壊れていくプロセスってのが
わかりだしてきたよ。
いくつかパターンがあってね、名前でもつけて
近いうちに何処かで発表したいかなって思ってる。
たとえばモノマネパターン。
周りにあるコードを真似て書こうとするパターン。
このような関数があったとする。
function foo(name) {
var funcTable = {
func1: functioni() {・・・},
func2: functioni() {・・・},
func3: functioni() {・・・},
};
funcTable[name]();
}
それを真似してこんなコードを書く
function bar() {
var name = 'func1';
var funcTable = {
func1: functioni() {・・・},
};
funcTable[name]();
}
もし0からコードを書かせたらこんなアホなコードを書くわけがないのに、
なぜか周りにあるコードを真似して書こうとする。
わかりだしてきたよ。
いくつかパターンがあってね、名前でもつけて
近いうちに何処かで発表したいかなって思ってる。
たとえばモノマネパターン。
周りにあるコードを真似て書こうとするパターン。
このような関数があったとする。
function foo(name) {
var funcTable = {
func1: functioni() {・・・},
func2: functioni() {・・・},
func3: functioni() {・・・},
};
funcTable[name]();
}
それを真似してこんなコードを書く
function bar() {
var name = 'func1';
var funcTable = {
func1: functioni() {・・・},
};
funcTable[name]();
}
もし0からコードを書かせたらこんなアホなコードを書くわけがないのに、
なぜか周りにあるコードを真似して書こうとする。
305デフォルトの名無しさん
2014/07/26(土) 15:29:59.33ID:EislOxX9 クソコード書いて、次は誰かがもっといいコード書くだろうからそれマネしようとか思ってたら
俺のクソがプロジェクト中にコピペされて救いようがなくなってたことならある
俺のクソがプロジェクト中にコピペされて救いようがなくなってたことならある
306デフォルトの名無しさん
2014/07/26(土) 23:32:58.38ID:F6Vf17wA >>305
それそれ、誰もが知ってるコピペパターンw
できれば最初からクソコード書くなって話でもあるが、
それは仕方ない。誰でも成長するものなのだから=後の自分はもっと綺麗に書ける。
なのに、昔の初心者のコードを真似る奴が多い多い。
それやってると、初心者のコードをありがたがって参考にしてどうするの?w
話それたけど、本来はコピペするなら再利用できる形にリファクタリングして
それを呼び出さないといけない。そしてこれは絶対にやるべきリファクタリングの一つ。
ただし、無関係な処理なのに形が似ている(しかしわずかに違う)のを
無理やり共通化して複雑化させるパターンもあるので注意。
そういう場合でもコードはなるべくシンプルになるようにしなくちゃいけないのだが、
モノマネパターンの通り、なぜか同じ形を真似ようとする。
できないわけじゃないのに真似をする。何も考えてないのかねって思う。
それそれ、誰もが知ってるコピペパターンw
できれば最初からクソコード書くなって話でもあるが、
それは仕方ない。誰でも成長するものなのだから=後の自分はもっと綺麗に書ける。
なのに、昔の初心者のコードを真似る奴が多い多い。
それやってると、初心者のコードをありがたがって参考にしてどうするの?w
話それたけど、本来はコピペするなら再利用できる形にリファクタリングして
それを呼び出さないといけない。そしてこれは絶対にやるべきリファクタリングの一つ。
ただし、無関係な処理なのに形が似ている(しかしわずかに違う)のを
無理やり共通化して複雑化させるパターンもあるので注意。
そういう場合でもコードはなるべくシンプルになるようにしなくちゃいけないのだが、
モノマネパターンの通り、なぜか同じ形を真似ようとする。
できないわけじゃないのに真似をする。何も考えてないのかねって思う。
307デフォルトの名無しさん
2014/07/27(日) 02:21:16.13ID:xgsJlmZ9 仕様書が別になってたらどんなに処理が似てても別にするなあ
308デフォルトの名無しさん
2014/07/27(日) 09:42:53.89ID:r3KMo0jq 似てる処理を共通化できないのは設計がきちんと出来てない証拠
仕樣的に別物とか関係ない
仕樣的に別物とか関係ない
309デフォルトの名無しさん
2014/07/27(日) 09:55:49.81ID:xgsJlmZ9 いやあるよ。
だいたい仕様変更が入ったときって、仕様書の画面毎とかだかし、
テストも仕様書毎につくるから、共通化してもテストの工数あんま減らんし。
修正になった仕様書の枚数と、手をいれる工数が一致してるとすごく客に説明しやすい。
>似てる処理を共通化できないのは
断じて違う。「似てる処理」を共通化するんじゃない。部品を共通化するんだ。
このへん誤解してなんど泣いたことか。
おまえのその考え方はスパゲッティまっしぐら。
だいたい仕様変更が入ったときって、仕様書の画面毎とかだかし、
テストも仕様書毎につくるから、共通化してもテストの工数あんま減らんし。
修正になった仕様書の枚数と、手をいれる工数が一致してるとすごく客に説明しやすい。
>似てる処理を共通化できないのは
断じて違う。「似てる処理」を共通化するんじゃない。部品を共通化するんだ。
このへん誤解してなんど泣いたことか。
おまえのその考え方はスパゲッティまっしぐら。
310デフォルトの名無しさん
2014/07/27(日) 09:59:56.78ID:EfhXqtXt311デフォルトの名無しさん
2014/07/27(日) 10:34:57.72ID:xgsJlmZ9 >>310
青いのう
部品を共通化するって考え方が徹底してれば、だいたいの場合は一致するもんだ。
もちろん客に説明するより少ない工数で済むならそれでいいよ?
問題は、「似てる処理」を共通化してると、工数が仕様書の改修量よりずっと膨らむことがあるってことなんだ。
ささいな修正が全体に影響してテストが膨らんだり、結局コピペで新たにクラス作らなくちゃいけなくなったりな
うん、これも共通化してるなら何でも同じとか言われそうだな
現実のブツ無しだと説明が難しいが…
青いのう
部品を共通化するって考え方が徹底してれば、だいたいの場合は一致するもんだ。
もちろん客に説明するより少ない工数で済むならそれでいいよ?
問題は、「似てる処理」を共通化してると、工数が仕様書の改修量よりずっと膨らむことがあるってことなんだ。
ささいな修正が全体に影響してテストが膨らんだり、結局コピペで新たにクラス作らなくちゃいけなくなったりな
うん、これも共通化してるなら何でも同じとか言われそうだな
現実のブツ無しだと説明が難しいが…
312デフォルトの名無しさん
2014/07/27(日) 10:58:40.58ID:EfhXqtXt313デフォルトの名無しさん
2014/07/27(日) 11:02:04.82ID:M1h0x0Bb314デフォルトの名無しさん
2014/07/27(日) 11:19:32.95ID:aZ1TYiI9 func1(){
a b c d
}
↓
func0{
a b
}
func11(){
func0() c d
}
func12()
func0() e f
}
上のような共通化は似てる処理と部品どっちが主張しているんだ?
a b c d
}
↓
func0{
a b
}
func11(){
func0() c d
}
func12()
func0() e f
}
上のような共通化は似てる処理と部品どっちが主張しているんだ?
315デフォルトの名無しさん
2014/07/27(日) 11:22:29.85ID:xgsJlmZ9 >>312
独自理論じゃないよ!みんなそう言ってるよ!
お前こそ本読んで知った気になってるだけだろ!頭でっかちめ
確かに、だいたい初心者向けの本には同じ処理を共通化すべしとか適当に書いてあるから、
実際の経験がないと理解しづらい部分ではある。
独自理論じゃないよ!みんなそう言ってるよ!
お前こそ本読んで知った気になってるだけだろ!頭でっかちめ
確かに、だいたい初心者向けの本には同じ処理を共通化すべしとか適当に書いてあるから、
実際の経験がないと理解しづらい部分ではある。
316デフォルトの名無しさん
2014/07/27(日) 13:06:38.84ID:oB6jVO7Z >>315
「部品」で意味してるのは何なんですか?
「部品」で意味してるのは何なんですか?
317デフォルトの名無しさん
2014/07/27(日) 14:19:58.36ID:xgsJlmZ9318デフォルトの名無しさん
2014/07/27(日) 14:22:31.05ID:5m0dj4Xz 人間は細胞でできているだろ
プログラムも細胞で作れば上手くいく
俺の独自理論だけど
プログラムも細胞で作れば上手くいく
俺の独自理論だけど
319デフォルトの名無しさん
2014/07/27(日) 14:35:22.28ID:b6NTPR2W うだうだ言わずに 60兆個の細胞を持ってこい
320デフォルトの名無しさん
2014/07/27(日) 15:03:56.50ID:kK8gelhu 共通化するときの決まりの一つとして、
全く同じコードの時に共通化するのであって
似ているコードを共通化してはいけない。
似ているコードをむりゃリ共通化しようとすると、
引数で処理を分岐することになる。
aが渡されればAの処理を、
bが渡されればBの処理をみたいに。
引数で分岐しだすとアウトだな。
全く同じコードの時に共通化するのであって
似ているコードを共通化してはいけない。
似ているコードをむりゃリ共通化しようとすると、
引数で処理を分岐することになる。
aが渡されればAの処理を、
bが渡されればBの処理をみたいに。
引数で分岐しだすとアウトだな。
321デフォルトの名無しさん
2014/07/27(日) 15:10:03.90ID:oB6jVO7Z322デフォルトの名無しさん
2014/07/27(日) 18:36:01.67ID:b6NTPR2W 経験的にforの内部、ifの内部は関数にまとめると都合よいことが多い
そして気が付くと xxhelper, xximpl, xxsub といった関数であふれるw
そして気が付くと xxhelper, xximpl, xxsub といった関数であふれるw
323デフォルトの名無しさん
2014/07/27(日) 22:38:54.70ID:j6qWMrth324デフォルトの名無しさん
2014/07/28(月) 00:24:14.35ID:PUM3vemV325デフォルトの名無しさん
2014/07/28(月) 09:35:31.93ID:DND3Jclf それを吟味するってことだろ。JK
326デフォルトの名無しさん
2014/07/28(月) 19:34:15.48ID:dU5jf/g6 コードの字面で共通化とか言ってたらそら失敗するわ
327デフォルトの名無しさん
2014/07/28(月) 22:31:59.96ID:ZMdkhV+Q 共有化するには物事を抽象化するセンスが問われるから、
低能が共有化しようとして失敗するのは良く分かるよ
それに、言語によってはクロージャやメタプログラミングが無かったり
有っても扱い難かったりして、実現可能な抽象化が限られるケースもある
低能が共有化しようとして失敗するのは良く分かるよ
それに、言語によってはクロージャやメタプログラミングが無かったり
有っても扱い難かったりして、実現可能な抽象化が限られるケースもある
328デフォルトの名無しさん
2014/07/28(月) 23:39:29.31ID:PUM3vemV クロージャwメタプログラミングw
どんだけ狭い視点で話してんだよ
それかなにか、お前は世界中で使われるライブラリの設計者かなにかか?w
お前のコードとか会社に出たら即ゴミ箱行きだよww
ただの帳票出力で得意げにtemplate使ってんじゃねえwwww後引き継ぐ奴の身になれ
死ね。くさかどああkjsdふぁj;fじゃ死ねええええ
どんだけ狭い視点で話してんだよ
それかなにか、お前は世界中で使われるライブラリの設計者かなにかか?w
お前のコードとか会社に出たら即ゴミ箱行きだよww
ただの帳票出力で得意げにtemplate使ってんじゃねえwwww後引き継ぐ奴の身になれ
死ね。くさかどああkjsdふぁj;fじゃ死ねええええ
329デフォルトの名無しさん
2014/07/29(火) 00:32:02.60ID:A/TMSH0w トラウマだったのね。
330デフォルトの名無しさん
2014/07/29(火) 09:33:14.47ID:Rzs2MIMk 自分の経験上、>>328みたいにプログラミング言語の機能の話を
狭い視点とか言い出す奴って
コードをロクに書けないSEモドキに多くて、
そういう奴に限ってリファクタリングにも否定的なんだよね
コード読めないからリファクタリングの価値を実感出来ないのかな?
狭い視点とか言い出す奴って
コードをロクに書けないSEモドキに多くて、
そういう奴に限ってリファクタリングにも否定的なんだよね
コード読めないからリファクタリングの価値を実感出来ないのかな?
331デフォルトの名無しさん
2014/07/29(火) 13:10:26.45ID:DxicYUyC 夏休みの学生が妄想で書き込むスレ
332デフォルトの名無しさん
2014/07/29(火) 18:26:00.62ID:Wf2KiU9x 自分と同じドカタ仕事してる奴以外は
全て学生に見えてしまう様になったら病気です
全て学生に見えてしまう様になったら病気です
333デフォルトの名無しさん
2014/07/29(火) 20:26:27.73ID:vPKzHxKl 自分の経験上、リファクタリングしたがる奴は例外なく低スキル。
334デフォルトの名無しさん
2014/07/29(火) 20:36:44.73ID:ahLU5tbJ アホに効果を実感させるところまでが能力の内です
335デフォルトの名無しさん
2014/07/29(火) 21:31:45.45ID:X6c6OHYr アホSEがExcel仕様書の罫線を二重罫線に書き換えて
仕事したつもりになってるのに比べたら
比較にならないレベルの価値があるよ > リファクタリング
仕事したつもりになってるのに比べたら
比較にならないレベルの価値があるよ > リファクタリング
336デフォルトの名無しさん
2014/07/29(火) 21:41:52.70ID:jt6qgrVo 2重罫線を大事にする客だって多いわ。
客はコードの中じゃなくて、資料とか見るんだわ。
リファクタリングなんかしたらね、
なんかちょっと挙動変わってるんだけど?
障害じゃないけど勝手に変えちゃ駄目でしょ。
うん?次からは言います?いや、そもそも動いてるもん変えなくていいよ
って話になる。
なんでもかんでもリファクタリングだのオブジェクト指向だの、
時と状況関係なしにやろうとするアホが多いんだよな。
客はコードの中じゃなくて、資料とか見るんだわ。
リファクタリングなんかしたらね、
なんかちょっと挙動変わってるんだけど?
障害じゃないけど勝手に変えちゃ駄目でしょ。
うん?次からは言います?いや、そもそも動いてるもん変えなくていいよ
って話になる。
なんでもかんでもリファクタリングだのオブジェクト指向だの、
時と状況関係なしにやろうとするアホが多いんだよな。
337デフォルトの名無しさん
2014/07/29(火) 22:05:08.74ID:Lzz8ZlFD 工数改善の見通しが数字で説明できるならともかく
実感とかで勝手にリファクタされたらたまらんわw
実感とかで勝手にリファクタされたらたまらんわw
338デフォルトの名無しさん
2014/07/29(火) 22:24:39.47ID:7mGq5kmY 受託開発やってるところと
自社サービスの開発やってるところは
何もかもが全然違うんだから、
分けて議論しないと平行線のまま
自社サービスの開発やってるところは
何もかもが全然違うんだから、
分けて議論しないと平行線のまま
339デフォルトの名無しさん
2014/07/29(火) 22:32:24.06ID:jt6qgrVo SEがどーのこーの言ってるんだから受託だろ
340デフォルトの名無しさん
2014/07/29(火) 22:51:00.80ID:X6c6OHYr 受託なんてドカタを人月で売って稼ぐビジネスモデルなんだから、
リファクタリングでコードを拡張しやすく保ち、
機能拡張を他社より速く行う事で競争優位に立つ
とか、そういうのは関係ないじゃん?
お前らマクドナルドのパートと大差無いんだから、
技術者の議論に入ってきちゃダメだよ
リファクタリングでコードを拡張しやすく保ち、
機能拡張を他社より速く行う事で競争優位に立つ
とか、そういうのは関係ないじゃん?
お前らマクドナルドのパートと大差無いんだから、
技術者の議論に入ってきちゃダメだよ
341デフォルトの名無しさん
2014/07/29(火) 23:05:38.45ID:Lzz8ZlFD >>340
ほー。
具体的にどういう課題があってどんなリファクタして、プロジェクトがどの程度成果上げたのか具体的に説明してみ?
壊れたレコードみたいに本で読んだこと繰り返して、しかも理解が浅くて現実が見えてないっぽいから
底辺派遣てすぐばれるよw
ほー。
具体的にどういう課題があってどんなリファクタして、プロジェクトがどの程度成果上げたのか具体的に説明してみ?
壊れたレコードみたいに本で読んだこと繰り返して、しかも理解が浅くて現実が見えてないっぽいから
底辺派遣てすぐばれるよw
342デフォルトの名無しさん
2014/07/29(火) 23:07:53.67ID:fZzOasD9 >>341
現実つーかレスの意味が見えてないのはお前のほうだな
現実つーかレスの意味が見えてないのはお前のほうだな
343デフォルトの名無しさん
2014/07/29(火) 23:56:17.33ID:vPKzHxKl 何か高度な裏の意味があるらしい
344デフォルトの名無しさん
2014/07/30(水) 00:19:39.30ID:2joTlTTw 自社サービスで食っていけてるってだけで圧倒的な成果だろうな
労働集約型な受託開発なんて価格競争で擦り減るばかりで
エンジニアに何のメリットもないし、早く脱出すべきなんだけど
脱出するためのスキルが溜まらない負のスパイラル
労働集約型な受託開発なんて価格競争で擦り減るばかりで
エンジニアに何のメリットもないし、早く脱出すべきなんだけど
脱出するためのスキルが溜まらない負のスパイラル
345デフォルトの名無しさん
2014/07/30(水) 09:05:15.28ID:NitIOFnC SEが設計してコーダがコード書くってスタイルと
リファクタリングは相性悪いだろうな
リファクタリングは相性悪いだろうな
346デフォルトの名無しさん
2014/07/30(水) 11:16:11.07ID:l4R9UcQd SEの設計が日本語プログラミングになってるからな。
日本語と一対一のコードでないとめんどくさいことになる。
日本語と一対一のコードでないとめんどくさいことになる。
347デフォルトの名無しさん
2014/07/30(水) 18:54:49.24ID:z3bvSX8e >>346
それで食えないスパゲティの一丁上がりかw
それで食えないスパゲティの一丁上がりかw
348デフォルトの名無しさん
2014/07/30(水) 20:26:49.42ID:njRDxY7Y リファクタリングは1にも2にも自分のためにやるものだ
デスマーチを充実したアフターファイブに変えたければやっとけw
デスマーチを充実したアフターファイブに変えたければやっとけw
349デフォルトの名無しさん
2014/07/30(水) 21:00:14.66ID:JOmnGzMa350デフォルトの名無しさん
2014/07/30(水) 21:00:10.81ID:O2fC1zxl そしてリファクタスパイラルへ…
351デフォルトの名無しさん
2014/07/30(水) 22:54:34.89ID:xH5zP1F6 リファクタリング否定派は技術力に乏しく低脳という風潮
一理ある
一理ある
352デフォルトの名無しさん
2014/07/30(水) 23:20:51.69ID:B3MDpURs どう考えてもすぐリファクタする方が低脳だろw
リファクタしたがる奴の傾向として
・理解力の不足。
自分に理解できないものをすぐ諦めてクソ呼ばわりする。
他人の書いたコードの一貫したポリシーや目的を汲み取れないから、先人が用意してくれた便利なライブラリも使えない。
理解できないから規約も無視しがちで、彼の書いたところだけ作りがおかしい。
・謙虚さの不足。
相手を見下して、自分のほうがいいものが作れると根拠なく信じてる。
すでに用意されているものを再発明するだけならまだいいが、
しばしば完成されたフレームワークの重要な部分にクソを差し込んでめちゃくちゃにする。
・計画性の不足。
先の見通しが利かないから、行き当たりばったりでクソしか作れない。
リファクタも行き当たりばったりにやるから、クソが超臭うクソになるだけということになりがち。
挙句に自分で訳がわからなくなって、成果物を全部消したりする。
・客観性の不足
自分のやったことの成果を、客観的に見ることが出来ない。
リファクタしたことで、掛けた工数がどれくらいでペイしたとか、数字で物事を考えられない。
彼がリファクタするのは、単に楽しいから。本人は仕事してる気になってるが、周囲から見ると遊んでるだけ。
という感じ。
そもそも最初からちゃんと書く能力があったら、リファクタしたいと思うことは少ないはず。
リファクタしたがる奴の傾向として
・理解力の不足。
自分に理解できないものをすぐ諦めてクソ呼ばわりする。
他人の書いたコードの一貫したポリシーや目的を汲み取れないから、先人が用意してくれた便利なライブラリも使えない。
理解できないから規約も無視しがちで、彼の書いたところだけ作りがおかしい。
・謙虚さの不足。
相手を見下して、自分のほうがいいものが作れると根拠なく信じてる。
すでに用意されているものを再発明するだけならまだいいが、
しばしば完成されたフレームワークの重要な部分にクソを差し込んでめちゃくちゃにする。
・計画性の不足。
先の見通しが利かないから、行き当たりばったりでクソしか作れない。
リファクタも行き当たりばったりにやるから、クソが超臭うクソになるだけということになりがち。
挙句に自分で訳がわからなくなって、成果物を全部消したりする。
・客観性の不足
自分のやったことの成果を、客観的に見ることが出来ない。
リファクタしたことで、掛けた工数がどれくらいでペイしたとか、数字で物事を考えられない。
彼がリファクタするのは、単に楽しいから。本人は仕事してる気になってるが、周囲から見ると遊んでるだけ。
という感じ。
そもそも最初からちゃんと書く能力があったら、リファクタしたいと思うことは少ないはず。
353デフォルトの名無しさん
2014/07/30(水) 23:55:14.83ID:2joTlTTw >>352
> ・理解力の不足。
> 自分に理解できないものをすぐ諦めてクソ呼ばわりする。
> 他人の書いたコードの一貫したポリシーや目的を汲み取れないから、先人が用意してくれた便利なライブラリも使えない。
> 理解できないから規約も無視しがちで、彼の書いたところだけ作りがおかしい。
>
> ・謙虚さの不足。
> 相手を見下して、自分のほうがいいものが作れると根拠なく信じてる。
> すでに用意されているものを再発明するだけならまだいいが、
> しばしば完成されたフレームワークの重要な部分にクソを差し込んでめちゃくちゃにする。
とりあえず、最初の二つだけで良いから
リファクタリングとの関係を論理的に説明してみ?
> ・理解力の不足。
> 自分に理解できないものをすぐ諦めてクソ呼ばわりする。
> 他人の書いたコードの一貫したポリシーや目的を汲み取れないから、先人が用意してくれた便利なライブラリも使えない。
> 理解できないから規約も無視しがちで、彼の書いたところだけ作りがおかしい。
>
> ・謙虚さの不足。
> 相手を見下して、自分のほうがいいものが作れると根拠なく信じてる。
> すでに用意されているものを再発明するだけならまだいいが、
> しばしば完成されたフレームワークの重要な部分にクソを差し込んでめちゃくちゃにする。
とりあえず、最初の二つだけで良いから
リファクタリングとの関係を論理的に説明してみ?
354デフォルトの名無しさん
2014/07/31(木) 00:02:21.65ID:Jagb4X9u355デフォルトの名無しさん
2014/07/31(木) 00:08:01.18ID:jvFYVzT/ そんな奴、実際には見た事無いが
受託開発だとレベル低いから居るのかもしれんね
受託開発だとレベル低いから居るのかもしれんね
356デフォルトの名無しさん
2014/07/31(木) 00:28:09.58ID:1DTVAKx3 >>354
具体的にはどう書き換えられたの?
共通化できる処理を各所にバラバラに書き散らかしてたのを
シンプルにまとめられた挙句
「DRYも理解出来ないアホが開発に関わるとか意味が分からない」
って言われたとか?
具体的にはどう書き換えられたの?
共通化できる処理を各所にバラバラに書き散らかしてたのを
シンプルにまとめられた挙句
「DRYも理解出来ないアホが開発に関わるとか意味が分からない」
って言われたとか?
357デフォルトの名無しさん
2014/07/31(木) 00:49:44.01ID:OYcKACC5 コードオナニストは、常にコード以外の観点が欠けているのが特徴。
いくら諭しても話が噛み合わず、日夜コードのブラッシュアップに励んでいる。
いくら諭しても話が噛み合わず、日夜コードのブラッシュアップに励んでいる。
358デフォルトの名無しさん
2014/07/31(木) 00:51:52.79ID:Jagb4X9u >>356
知らん。問答無用で差し戻したから。
散々テストしたはずなのに客先に持ってったら動きが変わってて
共通モジュールに手が入ってたんで何やったのか聞いたら「わかりにくかったんでリファクタしました。」
何年も動いた実績あるモジュールにそんな理由でいじんなアホか死ね
>「共通化できる処理を各所に(略」
うん。そうだな…だいたい君と同じぐらいの理解度の奴だったよ。
知らん。問答無用で差し戻したから。
散々テストしたはずなのに客先に持ってったら動きが変わってて
共通モジュールに手が入ってたんで何やったのか聞いたら「わかりにくかったんでリファクタしました。」
何年も動いた実績あるモジュールにそんな理由でいじんなアホか死ね
>「共通化できる処理を各所に(略」
うん。そうだな…だいたい君と同じぐらいの理解度の奴だったよ。
359デフォルトの名無しさん
2014/07/31(木) 00:54:29.60ID:jvFYVzT/ > 散々テストしたはずなのに客先に持ってったら動きが変わってて
それリファクタリングになってないから
リファクタリングじゃない話を使ってリファクタリング批判してどうすんだよ
それリファクタリングになってないから
リファクタリングじゃない話を使ってリファクタリング批判してどうすんだよ
360デフォルトの名無しさん
2014/07/31(木) 01:01:10.62ID:Jagb4X9u361デフォルトの名無しさん
2014/07/31(木) 01:07:13.72ID:jvFYVzT/362デフォルトの名無しさん
2014/07/31(木) 01:09:10.48ID:OYcKACC5363デフォルトの名無しさん
2014/07/31(木) 01:15:43.10ID:jvFYVzT/ 完璧なテストとか言う以前に、
ろくに自動テストとか書いてないでしょ?
ていうか、レビューもまともに機能してない
(じゃなかったら>>358のケースなんてコードがマージされるはずない)
テストもマトモに書いてないじゃ、そりゃトラブルよ
ろくに自動テストとか書いてないでしょ?
ていうか、レビューもまともに機能してない
(じゃなかったら>>358のケースなんてコードがマージされるはずない)
テストもマトモに書いてないじゃ、そりゃトラブルよ
364デフォルトの名無しさん
2014/07/31(木) 01:21:33.19ID:1DTVAKx3 Excelで書かれたチェックリスト片手に手動でテストして
「散々テストしたのに」って言ってそう
「散々テストしたのに」って言ってそう
365デフォルトの名無しさん
2014/07/31(木) 07:53:29.99ID:RHNsF96S >>336
挙動を変えるのはリファクタリングじゃなくて仕様変更だろ
挙動を変えるのはリファクタリングじゃなくて仕様変更だろ
366デフォルトの名無しさん
2014/07/31(木) 21:56:38.46ID:w9LroIYe 仕様変更でもバグ修正でもいいが、
コードを書き換えたら挙動が変わることがある。
つまり、機能追加もバグ修正もするなってことだ。
コードを書き換えたら挙動が変わることがある。
つまり、機能追加もバグ修正もするなってことだ。
367デフォルトの名無しさん
2014/07/31(木) 22:08:52.98ID:t7+Ucdvo ネストが揃ってないとか空行が多いとか
変数がはるか上で宣言されてるけど使ってるのは遥か下に固まってるとか
理解力以前に目が疲れるコードをどうにかしろって言ってるんだよ
変数がはるか上で宣言されてるけど使ってるのは遥か下に固まってるとか
理解力以前に目が疲れるコードをどうにかしろって言ってるんだよ
368デフォルトの名無しさん
2014/08/01(金) 18:46:58.63ID:xnEk5c3C 変数定義の位置を移動したりスペースを除去したり
するのもリファクタリングなわけだが
するのもリファクタリングなわけだが
369デフォルトの名無しさん
2014/08/01(金) 19:22:03.81ID:+GTzrZhA 失敗例をあげてリファクタリングは糞って言ってるの最高に滑稽。
井戸の王様を気取ってる蛙か
井戸の王様を気取ってる蛙か
370デフォルトの名無しさん
2014/08/01(金) 20:37:16.99ID:zWTZP0nt OO批判と同じ流れだな
371デフォルトの名無しさん
2014/08/01(金) 20:43:59.51ID:fzo9r37p リファクタリングが糞なんじゃないよ
リファクタリングしたがる人が糞なんだよ
リファクタリングしたがる人が糞なんだよ
372デフォルトの名無しさん
2014/08/01(金) 21:19:55.74ID:7+EywXB6373デフォルトの名無しさん
2014/08/01(金) 22:07:17.79ID:2Z4Uf/Xj 新人はリファクタしたがっていかん
関数の共通化とかGenericsとかTemplateとか覚えたてのこと使いたがる
ちょっとしたクソが一晩したらそびえたつ巨大なクソに
関数の共通化とかGenericsとかTemplateとか覚えたてのこと使いたがる
ちょっとしたクソが一晩したらそびえたつ巨大なクソに
374デフォルトの名無しさん
2014/08/02(土) 01:12:27.41ID:tvZxKsuR 技術レベルの低い人ってのは初心者に近くて
リファクタリングという技術用語を理解できないんだよ。
だからわかり易い言葉に置き換えるといい
リファクタリング=整理整頓・改善
こう言い換えれば、改善する必要があるんです。
整理整頓すると普段の仕事が捗るんです。ということになる
こう言い換えれば、反対する人はいなくなるよ。
リファクタリングという技術用語を理解できないんだよ。
だからわかり易い言葉に置き換えるといい
リファクタリング=整理整頓・改善
こう言い換えれば、改善する必要があるんです。
整理整頓すると普段の仕事が捗るんです。ということになる
こう言い換えれば、反対する人はいなくなるよ。
375デフォルトの名無しさん
2014/08/02(土) 01:27:17.11ID:nhTOdUsW 生理整頓した状態を維持しながら仕事しろよw
個人レベルの話ならクソコードをフィックス前にに最低限他人が読めるようにするのなんて責務のうちだ
リファクタはどっちかというと組織再編といったほうがいい
課題と今後の見通しがあってはじめてやることで
個人レベルの話ならクソコードをフィックス前にに最低限他人が読めるようにするのなんて責務のうちだ
リファクタはどっちかというと組織再編といったほうがいい
課題と今後の見通しがあってはじめてやることで
376デフォルトの名無しさん
2014/08/02(土) 02:10:54.57ID:tvZxKsuR377デフォルトの名無しさん
2014/08/02(土) 08:46:20.40ID:Mu2XuA5N リファクタリング本を一回読んだとき何を感じるかだよな。
ああそうそう、こういう点で苦しくなってたんだ、って気付くか、
何一つピンとこずに何やってんのこの本?と思うか。
ああそうそう、こういう点で苦しくなってたんだ、って気付くか、
何一つピンとこずに何やってんのこの本?と思うか。
378デフォルトの名無しさん
2014/08/02(土) 11:09:34.62ID:nhTOdUsW クソコードを普通のコードに直す作業をあんまりリファクタと呼びたくないw
379デフォルトの名無しさん
2014/08/02(土) 11:27:29.15ID:h5SZ209F 結合テストとかまで進んじゃったら無理だよね
380デフォルトの名無しさん
2014/08/02(土) 11:55:25.68ID:nhTOdUsW リリースした後でバージョンアップのついでにやるもんだろ
381デフォルトの名無しさん
2014/08/02(土) 11:59:50.68ID:tvZxKsuR ボーイスカウトの法則といって、
コードを修正するときは、修正する前よりも
綺麗にするもんです。
これが出来るのと出来ないのが、
初心者と中級者の境目。
もちろん、出来ないほうが初心者ね。
これが許されるのは新卒1年ぐらいなもん。
コードを修正するときは、修正する前よりも
綺麗にするもんです。
これが出来るのと出来ないのが、
初心者と中級者の境目。
もちろん、出来ないほうが初心者ね。
これが許されるのは新卒1年ぐらいなもん。
382デフォルトの名無しさん
2014/08/02(土) 12:22:30.70ID:DmU4GxTK 規模が小さいうちは手抜きで簡単なコードを書くだろ?
最初から拡張性とかそういうものを考えて作りこまない。
で、規模が大きくなってきた時に、将来性のことを
考慮して作り変えればいいんだが、
最初の手抜きのコードをそのままに、手抜きを真似して
同じようなコードを追加するやつどうにかならんかね。
規模に応じたコードの書き換えをしない。できない。
発想がない。そういうい奴がクソコードを量産するんだよ。
最初から拡張性とかそういうものを考えて作りこまない。
で、規模が大きくなってきた時に、将来性のことを
考慮して作り変えればいいんだが、
最初の手抜きのコードをそのままに、手抜きを真似して
同じようなコードを追加するやつどうにかならんかね。
規模に応じたコードの書き換えをしない。できない。
発想がない。そういうい奴がクソコードを量産するんだよ。
383デフォルトの名無しさん
2014/08/02(土) 12:37:41.39ID:Ydx1jnyI 権限のない末端PGが現場の手続き無視してユニットテストのないコードを
勝手に修正する、自称リファクタリングは非常に迷惑。
日本の受託開発の仕事ではリファクタリングなんてするべきではない。
勝手に修正する、自称リファクタリングは非常に迷惑。
日本の受託開発の仕事ではリファクタリングなんてするべきではない。
384デフォルトの名無しさん
2014/08/02(土) 12:42:59.05ID:DmU4GxTK >>383
ユニットテストが無いことが前提になってる時点で、
やっぱり、その程度の所が、リファクタリングを嫌ってるんだなとしか
思えないよ。残念だったね。君のところの技術不足を露呈しただけ。
えと、技術力不足であることを自覚してね?落ち込むところだよ。
ユニットテストが無いことが前提になってる時点で、
やっぱり、その程度の所が、リファクタリングを嫌ってるんだなとしか
思えないよ。残念だったね。君のところの技術不足を露呈しただけ。
えと、技術力不足であることを自覚してね?落ち込むところだよ。
385デフォルトの名無しさん
2014/08/02(土) 13:29:01.01ID:a3/R4SSz 最初から厳密に書けばいいんだよ
手抜きコピーが多いのは、そういうものかと思ってしまうからだ
自称上級者がスタートアップ書くことが多いが、手抜き繰り返して
しまいには自分自身が変な癖背負い込んでいくだろう
初期段階でよい方向に導くには、最初のやつががんばるしかない
手抜きコピーが多いのは、そういうものかと思ってしまうからだ
自称上級者がスタートアップ書くことが多いが、手抜き繰り返して
しまいには自分自身が変な癖背負い込んでいくだろう
初期段階でよい方向に導くには、最初のやつががんばるしかない
386デフォルトの名無しさん
2014/08/02(土) 13:37:36.15ID:DmU4GxTK 人間誰しも、最初は初心者で
一年後には今よりも成長しているという
前提にたつと最初から完璧なコードを書くのは不可能
どんなに優れたコードを書いたとしても
一年後の自分はもっと優れたコードを書ける。
一年後には今よりも成長しているという
前提にたつと最初から完璧なコードを書くのは不可能
どんなに優れたコードを書いたとしても
一年後の自分はもっと優れたコードを書ける。
387デフォルトの名無しさん
2014/08/02(土) 14:03:04.41ID:nhTOdUsW >>386
この程度の奴がリファクタしたがるんだよなあ…
リファクタってのはある設計から別の設計に軸足を移すことだ。
書き散らしたクソコードを書き直すのは、リリース前にやっておくべきそれ以前の問題なんだよ。
お前の末端の画面とか帳票とかは、誰も共通機能として使ってないから汚かろうがクソだろうが問題ないよ。
お前の自己満足のためにプロジェクトとめられてたまるか。
どんなクソでも、客の前にひりだしたクソはてめえのクソだ。受け入れて前に進め。
この程度の奴がリファクタしたがるんだよなあ…
リファクタってのはある設計から別の設計に軸足を移すことだ。
書き散らしたクソコードを書き直すのは、リリース前にやっておくべきそれ以前の問題なんだよ。
お前の末端の画面とか帳票とかは、誰も共通機能として使ってないから汚かろうがクソだろうが問題ないよ。
お前の自己満足のためにプロジェクトとめられてたまるか。
どんなクソでも、客の前にひりだしたクソはてめえのクソだ。受け入れて前に進め。
388デフォルトの名無しさん
2014/08/02(土) 14:06:28.03ID:nhTOdUsW 大体最初からある程度ちゃんとしたプログラムも書けないやつに
まともなユニットテスト作れるわけないだろうが。
まともなユニットテスト作れるわけないだろうが。
389デフォルトの名無しさん
2014/08/02(土) 14:26:29.65ID:1FEiY+vP 理想だけど
組織には逆らえない
組織には逆らえない
390デフォルトの名無しさん
2014/08/02(土) 14:42:12.73ID:wGpqnjMj 関数の中身やprivateな関数のインターフェースを修正するようなリファクタリングと、
ライブラリのpublicなインターフェースを変更するような
影響範囲の大きいリファクタリングの話が混じってる気がする
後者はそう簡単じゃないよ
影響範囲に入る全ての開発者と調整が付かない限り変更できない
(勝手に変更したら、ライブラリ使用者側から見たら仕様変更だからリファクタリングにならない)
ライブラリのpublicなインターフェースを変更するような
影響範囲の大きいリファクタリングの話が混じってる気がする
後者はそう簡単じゃないよ
影響範囲に入る全ての開発者と調整が付かない限り変更できない
(勝手に変更したら、ライブラリ使用者側から見たら仕様変更だからリファクタリングにならない)
391デフォルトの名無しさん
2014/08/02(土) 14:44:44.99ID:atIEditt 初心者にオススメなのは、派生開発でコードを読むときに、動作確認をテストで書くことかな。これはとっつきやすい。
『レガシーコード改善ガイド』では「仕様化テスト」のところ。
『レガシーコード改善ガイド』では「仕様化テスト」のところ。
392デフォルトの名無しさん
2014/08/02(土) 14:54:07.48ID:1BrdY1ES >>380
そんな意識の奴と仕事したくないわ
そんな意識の奴と仕事したくないわ
393デフォルトの名無しさん
2014/08/02(土) 15:20:52.89ID:DmU4GxTK リファクタリングするなっていってる奴がいるけどさ、
時間が十分にあるという前提にたつと
とたんに何も言えなくなってしまう
それってリファクタリングがダメなのではなくて
時間がないという問題だから。
じゃあ、なんで時間が足りないんですか?
今までと同じやり方してるんじゃないですか?って
追い詰めると、泣き出しちゃうw
時間が十分にあるという前提にたつと
とたんに何も言えなくなってしまう
それってリファクタリングがダメなのではなくて
時間がないという問題だから。
じゃあ、なんで時間が足りないんですか?
今までと同じやり方してるんじゃないですか?って
追い詰めると、泣き出しちゃうw
394デフォルトの名無しさん
2014/08/02(土) 15:21:48.08ID:DmU4GxTK395デフォルトの名無しさん
2014/08/02(土) 15:32:36.71ID:WtoScNjl396デフォルトの名無しさん
2014/08/02(土) 17:35:26.06ID:w2qydRR0 当たり前のことを当たり前に理解してそれを前提としている人と、
当たり前のことなのに全く理解しないでそれを前提とできない人とが会話しているようだ。
当たり前のことなのに全く理解しないでそれを前提とできない人とが会話しているようだ。
397デフォルトの名無しさん
2014/08/02(土) 19:06:34.85ID:jgRhK7n4 ウォーターフォールだったり、詳細設計書で日本語プログラミングしたりしてるとこと
リファクタリングは相性悪いよ
開発の全体を見直さないと、一部だけ優れた手法を取り入れようとしても
歪みが出て上手く行かないんだよね
リファクタリングは相性悪いよ
開発の全体を見直さないと、一部だけ優れた手法を取り入れようとしても
歪みが出て上手く行かないんだよね
398デフォルトの名無しさん
2014/08/02(土) 19:30:03.16ID:DmU4GxTK うまくいかないんじゃなくて
難しいだけだろ?
それを実行する力が技術力なわけで。
難しいだけだろ?
それを実行する力が技術力なわけで。
399デフォルトの名無しさん
2014/08/02(土) 19:41:02.16ID:q1w4boEu どうしても自分が書いたコードを書きなおしたい人がいるようだけど
そんなコードはいずれバグで書きなおされるんだから、あまり気にしない方が良い。
その情熱は悪くないけど、もっと前向きに使うべきだよ。
そんなコードはいずれバグで書きなおされるんだから、あまり気にしない方が良い。
その情熱は悪くないけど、もっと前向きに使うべきだよ。
400デフォルトの名無しさん
2014/08/02(土) 19:57:31.28ID:DmU4GxTK 前向きって新しいコードを書くってこと?
残念だけど、開発ってのは既存のコードの修正がほとんどだよ。
新しい機能を追加するといっても
前よりも効率よく開発するために既存の部分を、
使いまわす(コピペじゃないからね!)するために
既存の部分を修正して使えるようにするんだから。
残念だけど、開発ってのは既存のコードの修正がほとんどだよ。
新しい機能を追加するといっても
前よりも効率よく開発するために既存の部分を、
使いまわす(コピペじゃないからね!)するために
既存の部分を修正して使えるようにするんだから。
401デフォルトの名無しさん
2014/08/02(土) 19:57:37.46ID:FIwNTFpf402デフォルトの名無しさん
2014/08/02(土) 20:03:28.32ID:DmU4GxTK 全部捨てて作り直しだーまで追い詰めるって馬鹿だと思う。
少しずつ変化させていくことができないからそうなるんだよね。
全部いっぺんに変えるなんて現実的じゃないんだから。
全部いっぺんに変えることは不可能。じゃあどうするか?
それに答えられないから、どんどん壊れていくんだよ。
まあ、少しづつ良くしていくことが出来るのも技術力なわけで。
それを頭でわかっているのと実行するのとは全然違うわけで、
その実行できる力ってのが技術力そのものなわけで。
少しずつ変化させていくことができないからそうなるんだよね。
全部いっぺんに変えるなんて現実的じゃないんだから。
全部いっぺんに変えることは不可能。じゃあどうするか?
それに答えられないから、どんどん壊れていくんだよ。
まあ、少しづつ良くしていくことが出来るのも技術力なわけで。
それを頭でわかっているのと実行するのとは全然違うわけで、
その実行できる力ってのが技術力そのものなわけで。
403デフォルトの名無しさん
2014/08/02(土) 20:19:36.36ID:q1w4boEu >>400
前向きってのは、コード書きの脳からデザイナーの脳に変われるように努力しろって事。
前向きってのは、コード書きの脳からデザイナーの脳に変われるように努力しろって事。
404デフォルトの名無しさん
2014/08/02(土) 20:23:43.06ID:DmU4GxTK >>403
何に逃げてるのさ?
両方できるようになるというのなら正しい意見だが、
別のものに逃げたらだめだろ。
まるでペンもイラレもろくに使えない奴が
発想力とかいうのに逃げているのと同じ。
コードをまともに書けるようになった上でデザイナーになることはできる。
だけど、コードから逃げてもデザイナーにはなれない。
何に逃げてるのさ?
両方できるようになるというのなら正しい意見だが、
別のものに逃げたらだめだろ。
まるでペンもイラレもろくに使えない奴が
発想力とかいうのに逃げているのと同じ。
コードをまともに書けるようになった上でデザイナーになることはできる。
だけど、コードから逃げてもデザイナーにはなれない。
405デフォルトの名無しさん
2014/08/02(土) 20:23:58.64ID:J1UwFk0L よくある設計とコーディングっていう役割分担からしてくるっとる。
プログラミングなんて、設計九割五分なのに。
実装なんざオマケのオマケ。
SEとプログラマ、とわけてプログラマがキーボード叩く役とか、きがくるっとる。
まぁ聡明なお前らの会社は違うだろうけどね。
プログラミングなんて、設計九割五分なのに。
実装なんざオマケのオマケ。
SEとプログラマ、とわけてプログラマがキーボード叩く役とか、きがくるっとる。
まぁ聡明なお前らの会社は違うだろうけどね。
406デフォルトの名無しさん
2014/08/02(土) 20:28:21.78ID:DmU4GxTK 「前向き」って言ってる奴が、
コードとデザインの両方を手に入れるじゃなくて、
コードから逃げてデザインを求めていて笑えるよ。
そういう奴は両方できない。
コードとデザインの両方を手に入れるじゃなくて、
コードから逃げてデザインを求めていて笑えるよ。
そういう奴は両方できない。
407デフォルトの名無しさん
2014/08/02(土) 20:33:33.15ID:a3/R4SSz やっぱり自分でコード書かなきゃやってる気がしない
408デフォルトの名無しさん
2014/08/03(日) 00:40:07.16ID:ppjITjjs もう最近ガチガチの詳細設計やるとこって殆ど無いだろ
コメント的仮想コードとかで詳細は終わらせちゃうところが多い
その方が柔軟だしな
コメント的仮想コードとかで詳細は終わらせちゃうところが多い
その方が柔軟だしな
409デフォルトの名無しさん
2014/08/03(日) 00:45:38.31ID:CSranqfK 一応UMLでシーケンス図とクラスとPublicメソッドだけはきっちり作ってるな
DBアクセスとかあたりまで
そっから先はprivateで実装して
アプリのフレームワークに依存しないメソッドとかクラスとかはプCommonフォルダに各自放り込んでもらう
で上手くいくと思ったけど
Commonがかなりカオスなことに
DBアクセスとかあたりまで
そっから先はprivateで実装して
アプリのフレームワークに依存しないメソッドとかクラスとかはプCommonフォルダに各自放り込んでもらう
で上手くいくと思ったけど
Commonがかなりカオスなことに
410デフォルトの名無しさん
2014/08/03(日) 07:51:54.04ID:KHwMExMo >>408
あー、主に非技術者がやる作業だね。
あー、主に非技術者がやる作業だね。
411デフォルトの名無しさん
2014/08/03(日) 07:57:18.76ID:mU4IZymt412デフォルトの名無しさん
2014/08/03(日) 10:20:01.47ID:1nxvzFtA まるで業務系しか仕事がないかの勢いw
413デフォルトの名無しさん
2014/08/03(日) 10:36:51.70ID:CSranqfK >>411
コードが酷いのは予想のうちだけど
あれだけ言ったのに、規約が守られずにアプリのフレームワークに依存が作られてる
最初あたりに誰かがやったせいで後続が真似して、手続きなんとなくまとめただけみたいな処理がいっぱい
関数の共通化もうまくいってなくて
例えば分かりやすいところでは文字列をバイト列に変換してパディングするって処理があるんだけど
SJisStringUtil.ToByte
DBCodeChanger.LeftPaddingByteArray
StringModel.BytesWithSpace
こんな感じでいっぱいできてる
挙句にsTanakaとかフォルダできてるしw
コードが酷いのは予想のうちだけど
あれだけ言ったのに、規約が守られずにアプリのフレームワークに依存が作られてる
最初あたりに誰かがやったせいで後続が真似して、手続きなんとなくまとめただけみたいな処理がいっぱい
関数の共通化もうまくいってなくて
例えば分かりやすいところでは文字列をバイト列に変換してパディングするって処理があるんだけど
SJisStringUtil.ToByte
DBCodeChanger.LeftPaddingByteArray
StringModel.BytesWithSpace
こんな感じでいっぱいできてる
挙句にsTanakaとかフォルダできてるしw
414デフォルトの名無しさん
2014/08/03(日) 10:42:19.36ID:KHwMExMo まあありがちやねw
だから規約を作った人は
必ずコードレビューをしなくてはいけない。
だから規約を作った人は
必ずコードレビューをしなくてはいけない。
415デフォルトの名無しさん
2014/08/03(日) 20:06:25.42ID:lk1xFWmM416デフォルトの名無しさん
2014/08/03(日) 21:25:01.28ID:LWW935BO ロングパスきっちり通せよw
417デフォルトの名無しさん
2014/08/03(日) 23:57:33.38ID:tNPEJw6R A社に発注して作らせた大規模なソフトを、
B社に一時的にメンテナンスさせて、
今はC社に機能拡張させているとか言う例が実際にあるからなー
それぞれがそレなりにちゃんとした会社であっても、
開発者の継続性が0の場合、
中のソースがかなり混乱するのは仕方ないかもしれん。
B社に一時的にメンテナンスさせて、
今はC社に機能拡張させているとか言う例が実際にあるからなー
それぞれがそレなりにちゃんとした会社であっても、
開発者の継続性が0の場合、
中のソースがかなり混乱するのは仕方ないかもしれん。
418デフォルトの名無しさん
2014/08/04(月) 22:06:42.37ID:w1xJJUBp リファクタリングはアートですよ。
アートは人間が生み出すものではありません。
ある日、天から降りてくるんです。
この感覚がわからない人は、アートしたことが無いんです。
つまり、リファクタリングもわからないってことです。
アートは人間が生み出すものではありません。
ある日、天から降りてくるんです。
この感覚がわからない人は、アートしたことが無いんです。
つまり、リファクタリングもわからないってことです。
419デフォルトの名無しさん
2014/08/04(月) 22:17:15.14ID:p5AMhKr8 わかる、わかるぜ〜
ソースコードがある書き方になりたがってねだってくるんだぜ〜
俺はそのとおりに書き写してるだけなんだぜ〜
ソースコードがある書き方になりたがってねだってくるんだぜ〜
俺はそのとおりに書き写してるだけなんだぜ〜
420デフォルトの名無しさん
2014/08/04(月) 22:19:31.15ID:w1xJJUBp やべえ。
適当ぶっこいてたらマジキチ召喚しちまった。
ちょっと反省。
適当ぶっこいてたらマジキチ召喚しちまった。
ちょっと反省。
421デフォルトの名無しさん
2014/08/04(月) 22:54:50.48ID:O7gnQe0p 自作自演乙
422デフォルトの名無しさん
2014/08/27(水) 12:13:22.10ID:RluTUsi0 他人のコードだと思って、何の前情報もない状態でコードを読み
そこから読み取れる情報だけで、「なんで?」って思う実装を減らしていくのがリファクタリング
もちろん、処理の効率とかをよくする場合もあるけど、
どっちかというと、そういうのよりも第三者が見て読みやすいコードである状態を保つ事のほうが重要
(リファクタリングで大幅に処理コストが改善できるような糞実装が最初にされてることは稀)
ただ、リファクタリングをできるレベルに達していない職場も少なくない
とくに業務系や人売りで奴隷を集めた職場とかは、大抵メンバーのスキルが足りてなさすぎて無理
っていうか設計(という名のゴミファイル作成)段階からそびえ立つうんこを作っていってるから、実装時は既に手遅れ
そこから読み取れる情報だけで、「なんで?」って思う実装を減らしていくのがリファクタリング
もちろん、処理の効率とかをよくする場合もあるけど、
どっちかというと、そういうのよりも第三者が見て読みやすいコードである状態を保つ事のほうが重要
(リファクタリングで大幅に処理コストが改善できるような糞実装が最初にされてることは稀)
ただ、リファクタリングをできるレベルに達していない職場も少なくない
とくに業務系や人売りで奴隷を集めた職場とかは、大抵メンバーのスキルが足りてなさすぎて無理
っていうか設計(という名のゴミファイル作成)段階からそびえ立つうんこを作っていってるから、実装時は既に手遅れ
423デフォルトの名無しさん
2014/09/04(木) 15:14:28.47ID:NCM4vLJB リファクタリングの誤用
ttp://capsctrl.que.jp/kdmsnr/wiki/bliki/?RefactoringMalapropism
リファクタリングの境界線
ttp://capsctrl.que.jp/kdmsnr/wiki/bliki/?RefactoringBoundary
ttp://capsctrl.que.jp/kdmsnr/wiki/bliki/?RefactoringMalapropism
リファクタリングの境界線
ttp://capsctrl.que.jp/kdmsnr/wiki/bliki/?RefactoringBoundary
424デフォルトの名無しさん
2014/09/13(土) 02:08:52.13ID:Bjr83Kqx ボキもリファクタリングして欲しいです
https://twitter.com/y_konogi/status/510266774290694144/photo/1
https://twitter.com/y_konogi/status/510266774290694144/photo/1
425デフォルトの名無しさん
2014/09/13(土) 02:46:33.71ID:99VHFg4q ちんこの振る舞いを保持したまま変化させる、もちろん性的な意味で。
426デフォルトの名無しさん
2014/09/13(土) 03:35:58.05ID:WOkelzJA インタフェースの変更はリファクタリングか
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?IsChangingInterfacesRefactoring
> 答えは簡単――インタフェースの変更はリファクタリングだ。
未知のバグフィックスはリファクタリングか?
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?IsFixingAnUnknownBugRefactoring
> 私はリファクタリングと呼べると思う。 バグを含んだ振る舞いを知らなかった(あるいは気にしなかった)わけだから、
> これは「外部から見たときの振る舞い」ではないのだ。 たとえバグに気付いていたとしても、
> それが気にするようなバグでなければ、 リファクタリングと呼んでもよいと思う。
最適化はリファクタリングか?
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?IsOptimizationRefactoring
> 最適化とリファクタリングはどちらも変化を伴うものだが(なかには最適化かつリファクタリングとなる変化もあるが)、
> 両者は別物だと私は考えている。なぜなら、両者の目的が異なるからである。リファクタリングは、
> コードを理解しやすくするためである。最適化は、プログラムを速くするためである。
> つまり、リファクタリングと最適化は似ており、共通する変更がありはするものの、目的が異なるため、両者は別物であると私は考えている。
宣言の順序変更はリファクタリングか?
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?IsDeclarationOrderingRefactoring
> 宣言(Javaで言うメソッドやフィールド)の順序を変更することは、リファクタリングと呼べるのか?
> リファクタリングの定義で、 「理解や修正が簡単になるように」というフレーズを使った。
> 宣言部分を変更すると、理解や修正が簡単になるのだろうか? 私は、そういう場合もあると思う。
> ソフトウェアの内部構造を変更しないという点が紛らわしいかもしれない。 リネームしても実行内容は変化しない。
> だがリネームは、プログラムの理解度を向上させる 非常に重要なリファクタリングの一種である。
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?IsChangingInterfacesRefactoring
> 答えは簡単――インタフェースの変更はリファクタリングだ。
未知のバグフィックスはリファクタリングか?
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?IsFixingAnUnknownBugRefactoring
> 私はリファクタリングと呼べると思う。 バグを含んだ振る舞いを知らなかった(あるいは気にしなかった)わけだから、
> これは「外部から見たときの振る舞い」ではないのだ。 たとえバグに気付いていたとしても、
> それが気にするようなバグでなければ、 リファクタリングと呼んでもよいと思う。
最適化はリファクタリングか?
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?IsOptimizationRefactoring
> 最適化とリファクタリングはどちらも変化を伴うものだが(なかには最適化かつリファクタリングとなる変化もあるが)、
> 両者は別物だと私は考えている。なぜなら、両者の目的が異なるからである。リファクタリングは、
> コードを理解しやすくするためである。最適化は、プログラムを速くするためである。
> つまり、リファクタリングと最適化は似ており、共通する変更がありはするものの、目的が異なるため、両者は別物であると私は考えている。
宣言の順序変更はリファクタリングか?
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?IsDeclarationOrderingRefactoring
> 宣言(Javaで言うメソッドやフィールド)の順序を変更することは、リファクタリングと呼べるのか?
> リファクタリングの定義で、 「理解や修正が簡単になるように」というフレーズを使った。
> 宣言部分を変更すると、理解や修正が簡単になるのだろうか? 私は、そういう場合もあると思う。
> ソフトウェアの内部構造を変更しないという点が紛らわしいかもしれない。 リネームしても実行内容は変化しない。
> だがリネームは、プログラムの理解度を向上させる 非常に重要なリファクタリングの一種である。
427デフォルトの名無しさん
2014/09/13(土) 13:49:13.80ID:9aicrkfD あれもこれも取り入れた「オブジェクト指向」とまるっきり同じパターンだな
どんどん曖昧な意味になりそう
どんどん曖昧な意味になりそう
428デフォルトの名無しさん
2014/09/13(土) 14:14:43.12ID:Fgrmdz5F すべてリファクタリングの結果発生する作業だろ。
まったく理解できていないな。まさに本末転倒
まったく理解できていないな。まさに本末転倒
429デフォルトの名無しさん
2014/09/13(土) 16:14:30.25ID:WJGPx/6o 要件を仕様にまとめるのもリファクタリングですか?
430デフォルトの名無しさん
2014/09/13(土) 20:28:39.39ID:Y1nBtaE7 >>429
リファクタリングの一部ではあるな
リファクタリングの一部ではあるな
431デフォルトの名無しさん
2014/09/13(土) 20:33:35.66ID:zttb1Mfl OpenSSLがリファクタリングされまくっているな
432デフォルトの名無しさん
2014/09/14(日) 00:35:49.32ID:a/rqPd2y >>429
違う
> リファクタリング中に2,3日システムが動かなくなっちゃってーなどと言ってる奴がいたら、
> んなもんリファクタリングじゃあなーいと言ってやれ。 ドキュメントをリファクタリングしちゃるとか言ってる奴、
> それもリファクタリングじゃねーぞコラ。 そういうのは、リストラクチャリング(再構築)というのだッ
違う
> リファクタリング中に2,3日システムが動かなくなっちゃってーなどと言ってる奴がいたら、
> んなもんリファクタリングじゃあなーいと言ってやれ。 ドキュメントをリファクタリングしちゃるとか言ってる奴、
> それもリファクタリングじゃねーぞコラ。 そういうのは、リストラクチャリング(再構築)というのだッ
433デフォルトの名無しさん
2014/09/14(日) 02:43:07.06ID:XHTMIvTT 客の要件はそのままプログラムにできるけど、
それじゃあ最適化できてないから
外面の挙動は変わらない範囲で最適化を行う。
コードの実体だけがリファクタリングの対象じゃないだろ。
それじゃあ最適化できてないから
外面の挙動は変わらない範囲で最適化を行う。
コードの実体だけがリファクタリングの対象じゃないだろ。
434デフォルトの名無しさん
2014/09/14(日) 03:54:19.00ID:a/rqPd2y435デフォルトの名無しさん
2014/09/14(日) 10:24:07.39ID:NZ+I8Nx6 最適化じゃないんだよ
最適化なんかできるわけねーだろってのが大前提なんだよ
最適化なんかできるわけねーだろってのが大前提なんだよ
436デフォルトの名無しさん
2014/09/14(日) 13:02:21.11ID:bjSSfYoR バグも含めて機能そのままで、構造だけ変える(良くするつもり)ができるっていうのが結構単純な
還元主義的な思い込みで、実際の構造物は両者は一体というか、都合良くできないと思うんだよね。
テスト駆動とかもそうだけど、この種のスローガンが胡散臭いのは、物作りの本質的な困難を直視
しないで、小手先の技法を当てはめれば解決みたいに喧伝しすぎるところにあるんじゃないかと思う。
還元主義的な思い込みで、実際の構造物は両者は一体というか、都合良くできないと思うんだよね。
テスト駆動とかもそうだけど、この種のスローガンが胡散臭いのは、物作りの本質的な困難を直視
しないで、小手先の技法を当てはめれば解決みたいに喧伝しすぎるところにあるんじゃないかと思う。
437デフォルトの名無しさん
2014/09/14(日) 14:21:12.62ID:TJC+Xrrg 別に胡散臭いとは思わないが、真に受けちゃったバカが「リファクタリング最強!」とか言い出すのはかなりうざい。
438デフォルトの名無しさん
2014/09/14(日) 15:42:46.67ID:a/rqPd2y >>436
> バグも含めて機能そのままで、構造だけ変える(良くするつもり)ができるっていうのが結構単純な
> 還元主義的な思い込みで、
できるよ。
というか、リファクタリングは構造を良くしましょう(終わり)じゃなくて、
構造を良くするのは当然の話しとして、機能をそのままにするためにはどうすればいいか?
って所が出発点で、
機能をそのままにするために、編み出された様々なテクニックが
リファクタリング手法なんだよ。
できないというのなら、リファクタリング手法(それには名前が付いている)
一つ一つに対して出来ない根拠を述べてみてよ。
君は単に、リファクタリングに手法があることを知らないで、
闇雲に自己流でなおそうとしてみて失敗しただけでしょう?
> バグも含めて機能そのままで、構造だけ変える(良くするつもり)ができるっていうのが結構単純な
> 還元主義的な思い込みで、
できるよ。
というか、リファクタリングは構造を良くしましょう(終わり)じゃなくて、
構造を良くするのは当然の話しとして、機能をそのままにするためにはどうすればいいか?
って所が出発点で、
機能をそのままにするために、編み出された様々なテクニックが
リファクタリング手法なんだよ。
できないというのなら、リファクタリング手法(それには名前が付いている)
一つ一つに対して出来ない根拠を述べてみてよ。
君は単に、リファクタリングに手法があることを知らないで、
闇雲に自己流でなおそうとしてみて失敗しただけでしょう?
439デフォルトの名無しさん
2014/09/14(日) 15:44:54.17ID:a/rqPd2y なんだ、自分で自白してるじゃんかw
> この種のスローガン
スローガンとしか認識していないw
リファクタリングは、数学的な証明と
なんらかわらないんだが。
> この種のスローガン
スローガンとしか認識していないw
リファクタリングは、数学的な証明と
なんらかわらないんだが。
440デフォルトの名無しさん
2014/09/14(日) 18:12:37.41ID:d9eejC+C ダメなコードは直すことでよくできる
という公理が大前提
1000行もあるようなおバカ関数を数学的に定式化して改善するのは無意味なこと
見れば何をすべきかわかる
という公理が大前提
1000行もあるようなおバカ関数を数学的に定式化して改善するのは無意味なこと
見れば何をすべきかわかる
441デフォルトの名無しさん
2014/09/14(日) 18:52:51.74ID:a/rqPd2y442デフォルトの名無しさん
2014/09/14(日) 19:25:36.36ID:3Rt2m2d6 リファクタリングを知らない人は、
リファクタリングを一気に直してしまおうと
思っているに違いない。
リファクタリングが問題が起きることがありえない
小さな修正の繰り返しであることをしらない。
リファクタリングを一気に直してしまおうと
思っているに違いない。
リファクタリングが問題が起きることがありえない
小さな修正の繰り返しであることをしらない。
443デフォルトの名無しさん
2014/09/14(日) 19:30:47.61ID:NZ+I8Nx6 デザパタ信者みたいなのが暴走して悪評を広めてるんだろう
444デフォルトの名無しさん
2014/09/14(日) 19:32:04.00ID:3Rt2m2d6 その悪評を鵜呑みにしているのが
頭悪いと言われる所以なわけで。
自分の頭で考えろよとw
頭悪いと言われる所以なわけで。
自分の頭で考えろよとw
445デフォルトの名無しさん
2014/09/14(日) 21:08:34.07ID:oiv3svus リファクタリング
446デフォルトの名無しさん
2014/09/15(月) 00:27:34.64ID:irRiVyM3 流石に数学の定理と同等か言い過ぎだろ。
パターンと同じでさ、セオリーやメソッドじゃない、ちょっとしたコツの集積だろ
オブジェクト指向、CMMI、PMBOKとかと同じでさ、アメリカ人の教授とかはそういうのまとめて
自分が言い出しっぺになって、学会ごっこしたり、資格試験の元締めやろうとしたりするのが好きなんだよ。
そういう商売に乗せられているだけなのに、さも学術的な根拠があるものとして「勉強」したりするのが
偉いと思っている奴はどっかオツムが弱いとしか言いようがないw
パターンと同じでさ、セオリーやメソッドじゃない、ちょっとしたコツの集積だろ
オブジェクト指向、CMMI、PMBOKとかと同じでさ、アメリカ人の教授とかはそういうのまとめて
自分が言い出しっぺになって、学会ごっこしたり、資格試験の元締めやろうとしたりするのが好きなんだよ。
そういう商売に乗せられているだけなのに、さも学術的な根拠があるものとして「勉強」したりするのが
偉いと思っている奴はどっかオツムが弱いとしか言いようがないw
447デフォルトの名無しさん
2014/09/15(月) 00:37:25.87ID:9UWhhSIJ >>446
数学の定理じゃなくて、数学の証明だろ?
a + b = c を b = c - a
に置き換えるようなもの。
式の変形だよ。
リファクタリングのテクニックっていうのはどれも
この式の変形と同じようなもの。
一部の人が勘違いしているように、ぶっ壊して同じように作りなおすことじゃなくて、
項の移動のように、全く同じ結果になる変形をしているにすぎないんだよ。
数学の定理じゃなくて、数学の証明だろ?
a + b = c を b = c - a
に置き換えるようなもの。
式の変形だよ。
リファクタリングのテクニックっていうのはどれも
この式の変形と同じようなもの。
一部の人が勘違いしているように、ぶっ壊して同じように作りなおすことじゃなくて、
項の移動のように、全く同じ結果になる変形をしているにすぎないんだよ。
448デフォルトの名無しさん
2014/09/15(月) 00:39:47.71ID:9UWhhSIJ449デフォルトの名無しさん
2014/09/15(月) 00:43:11.40ID:irRiVyM3 何が「警告」だよ
笑わせるな
笑わせるな
450デフォルトの名無しさん
2014/09/15(月) 00:44:52.76ID:9UWhhSIJ いや、普通に恥ずかしいでしょ?
ガリ勉ガリ勉いって勉強しない悪ガキ。
自分が後で困るというのに。
警告してあげないといつまでたっても
気づかないよ。
ガリ勉ガリ勉いって勉強しない悪ガキ。
自分が後で困るというのに。
警告してあげないといつまでたっても
気づかないよ。
451デフォルトの名無しさん
2014/09/15(月) 01:15:03.90ID:WaQuX0Y8 ぶっ壊して同じ結果が得られるように作り直すこととの違いを教えてください。
452デフォルトの名無しさん
2014/09/15(月) 01:41:27.21ID:j8xvklWY イチから作り直したい病と
現実の範囲で出来る事だけやる工夫の違い
現実の範囲で出来る事だけやる工夫の違い
453デフォルトの名無しさん
2014/09/15(月) 02:07:53.50ID:WaQuX0Y8 機能やクラスを抽出するのだって破壊を伴うんじゃないの。
リスクが少ない範囲での変更もあれば、
時には大胆なリファクタリングもあると思うけど。
リスクが少ない範囲での変更もあれば、
時には大胆なリファクタリングもあると思うけど。
454デフォルトの名無しさん
2014/09/15(月) 04:21:21.27ID:9UWhhSIJ >>451
> ぶっ壊して同じ結果が得られるように作り直すこととの違いを教えてください。
たとえば数学で、3x - 11 = 4 のxを求めるという問題があった時
1. 移項とい手法を使って、3x = 4 + 11 にして、
2. 足し算という手法を使って、3x = 15 にして
3. 両辺を同じ数で割るという手法を使って、x = 5
という風に、変形をしても等しいと証明されている
安全な手法を使ってシンプルな形に変形していくのがリファクタリング
>>453
大胆なリファクタリングって何よ?
まずさ、数学の式の変形のやり方と一緒で、
リファクタリング手法には名前があるって知ってる?
一覧見つけてきたから、これのどれが大胆で破壊を伴うのかちゃんと説明してくれ。
http://d.hatena.ne.jp/asakichy/20100607/1275877997
> ぶっ壊して同じ結果が得られるように作り直すこととの違いを教えてください。
たとえば数学で、3x - 11 = 4 のxを求めるという問題があった時
1. 移項とい手法を使って、3x = 4 + 11 にして、
2. 足し算という手法を使って、3x = 15 にして
3. 両辺を同じ数で割るという手法を使って、x = 5
という風に、変形をしても等しいと証明されている
安全な手法を使ってシンプルな形に変形していくのがリファクタリング
>>453
大胆なリファクタリングって何よ?
まずさ、数学の式の変形のやり方と一緒で、
リファクタリング手法には名前があるって知ってる?
一覧見つけてきたから、これのどれが大胆で破壊を伴うのかちゃんと説明してくれ。
http://d.hatena.ne.jp/asakichy/20100607/1275877997
455デフォルトの名無しさん
2014/09/15(月) 04:22:40.33ID:9UWhhSIJ456デフォルトの名無しさん
2014/09/15(月) 04:24:53.24ID:9UWhhSIJ >>452も少し勘違いしているね。
リファクタリングを「ソースコードを綺麗にしましょう」ということを
英語で言ったものとしか認識していないようだ。
リファクタリングというのは、安全に変形できるという
手法を使って、いっぽずつ書き換えていくもの。
手法を使わない書き換えはリファクタリングじゃない。
リファクタリングを「ソースコードを綺麗にしましょう」ということを
英語で言ったものとしか認識していないようだ。
リファクタリングというのは、安全に変形できるという
手法を使って、いっぽずつ書き換えていくもの。
手法を使わない書き換えはリファクタリングじゃない。
457デフォルトの名無しさん
2014/09/15(月) 10:57:57.36ID:z+pQ6G77458デフォルトの名無しさん
2014/09/15(月) 11:09:38.77ID:pNNQiIbO これがリファクタ信者の暴走か
459デフォルトの名無しさん
2014/09/15(月) 11:28:39.31ID:kUSteVkT リファクタリングの「関数の抽出」をやったら
増えた関数呼び出し分の実行コストが無視出来なくて
仕様を満たさなくなってしまいました
増えた関数呼び出し分の実行コストが無視出来なくて
仕様を満たさなくなってしまいました
460デフォルトの名無しさん
2014/09/15(月) 11:46:22.25ID:9UWhhSIJ461デフォルトの名無しさん
2014/09/15(月) 11:49:22.77ID:kUSteVkT つまり途中で一回ぶっ壊して同じ結果が得られるように作り直すわけね
良いと思うよ
良いと思うよ
462デフォルトの名無しさん
2014/09/15(月) 12:21:05.22ID:NXR59SQz リファクタリングがゲシュタルト崩壊しそうなスレだ。
463デフォルトの名無しさん
2014/09/15(月) 12:43:17.41ID:zrs0o34A 安全を過信しすぎだな
464デフォルトの名無しさん
2014/09/15(月) 12:46:23.34ID:9UWhhSIJ >>461
一回ぶっ壊したらだめだろw
それではリファクタリングになっていない。
リファクタリングは壊さずに直すことであり
壊さないで直すための手法がまとめられている。
http://d.hatena.ne.jp/asakichy/20100607/1275877997
一回ぶっ壊したらだめだろw
それではリファクタリングになっていない。
リファクタリングは壊さずに直すことであり
壊さないで直すための手法がまとめられている。
http://d.hatena.ne.jp/asakichy/20100607/1275877997
465デフォルトの名無しさん
2014/09/15(月) 13:45:51.89ID:kUSteVkT466デフォルトの名無しさん
2014/09/15(月) 15:20:24.10ID:4lL49qVx 慌てずリファクタリングの公式に沿って変更すれば副作用は一切ない。
467デフォルトの名無しさん
2014/09/15(月) 15:20:49.07ID:9UWhhSIJ >>465
> 少なくとも「関数の抽出」はリファクタリングの操作としてアトミックじゃない
アトミックだけど?
リファクタリング本を見ればしっかり書いてあるよ。
アトミックに作業する方法。
どうせあんたは関数を消して書きなおす(書き直してる間
元の関数がなくなってる状態)が起きるって思ってるんだろうけど。
ほんと、やり方をしらんのね。しらんから壊れるって言ってる。
わかりやすい。
> 少なくとも「関数の抽出」はリファクタリングの操作としてアトミックじゃない
アトミックだけど?
リファクタリング本を見ればしっかり書いてあるよ。
アトミックに作業する方法。
どうせあんたは関数を消して書きなおす(書き直してる間
元の関数がなくなってる状態)が起きるって思ってるんだろうけど。
ほんと、やり方をしらんのね。しらんから壊れるって言ってる。
わかりやすい。
468デフォルトの名無しさん
2014/09/15(月) 15:21:50.80ID:9UWhhSIJ ちなみに、リファクタリングブラウザを使えばもっと簡単に行える。
もちろん、リファクタリング本にはそういうツールを使わないやり方も書いてある。
もちろん、リファクタリング本にはそういうツールを使わないやり方も書いてある。
469デフォルトの名無しさん
2014/09/15(月) 15:45:17.66ID:wmpEGwKw470デフォルトの名無しさん
2014/09/15(月) 15:51:22.11ID:wmpEGwKw471デフォルトの名無しさん
2014/09/15(月) 15:53:23.99ID:KlWrYY91 まあ俺ぐらいリファクタリングに精通すると、最初からリファクタリング後の最終形になるように最初からコーディングできちゃうわけで、あえてリファクタリングを意識しなくていいわけなんだけどね。
中島敦の「名人伝」にでてくる「弓ってなに?」といった弓の名手のごとし。
中島敦の「名人伝」にでてくる「弓ってなに?」といった弓の名手のごとし。
472デフォルトの名無しさん
2014/09/15(月) 15:55:47.97ID:9UWhhSIJ473デフォルトの名無しさん
2014/09/15(月) 15:57:45.71ID:9UWhhSIJ >>470
> 手で書き直したとかじゃなくて、メソッドの抽出することで
> 仕様を満たさなくなるケースもあるって話だろう
メソッドの抽出で仕様を満たさなくなることはありません。
> その直後にインライン化したとしても、一旦仕様を満たさない状態になったのは事実
あんたの言ってる「仕様」って関数呼び出し○ナノ秒以内で
あることっていう要件の話だよね?w
それは仕様ではない。
> 手で書き直したとかじゃなくて、メソッドの抽出することで
> 仕様を満たさなくなるケースもあるって話だろう
メソッドの抽出で仕様を満たさなくなることはありません。
> その直後にインライン化したとしても、一旦仕様を満たさない状態になったのは事実
あんたの言ってる「仕様」って関数呼び出し○ナノ秒以内で
あることっていう要件の話だよね?w
それは仕様ではない。
474デフォルトの名無しさん
2014/09/15(月) 16:00:52.19ID:9UWhhSIJ >>471
それは過剰な設計になってるよ。
コードの規模に応じて、適切な設計というのは異なる。
コードに修正が入る、それがバグの修正でない限り
機能化拡張だろう。
機能拡張にともなって規模が増るというような時にリファクタリングをするんだ。
機能追加とリファクタリングはわけてやるものだから、
機能追加前、もしくは機能追加後にリファクタリングね。
最初から過剰な拡張性をもたせるのはよくない。
それは過剰な設計になってるよ。
コードの規模に応じて、適切な設計というのは異なる。
コードに修正が入る、それがバグの修正でない限り
機能化拡張だろう。
機能拡張にともなって規模が増るというような時にリファクタリングをするんだ。
機能追加とリファクタリングはわけてやるものだから、
機能追加前、もしくは機能追加後にリファクタリングね。
最初から過剰な拡張性をもたせるのはよくない。
475デフォルトの名無しさん
2014/09/15(月) 16:31:02.56ID:9UWhhSIJ476デフォルトの名無しさん
2014/09/15(月) 16:59:56.60ID:WaQuX0Y8 ポリモーフィズム化するのは機能追加だアホ
477デフォルトの名無しさん
2014/09/15(月) 17:07:57.72ID:kUSteVkT >>473
> あんたの言ってる「仕様」って関数呼び出し○ナノ秒以内で
> あることっていう要件の話だよね?w
> それは仕様ではない。
ループの中で繰り返し呼び出されたら馬鹿にならん差になることもある
仕様かどうかはケースバイケースだアホ
> あんたの言ってる「仕様」って関数呼び出し○ナノ秒以内で
> あることっていう要件の話だよね?w
> それは仕様ではない。
ループの中で繰り返し呼び出されたら馬鹿にならん差になることもある
仕様かどうかはケースバイケースだアホ
478デフォルトの名無しさん
2014/09/15(月) 17:15:35.47ID:kUSteVkT リファクタリングの「関数のインライン化」をやったら
生成されるプログラムのバイナリサイズが許容範囲を超えて
仕様を満たさなくなってしまいました
生成されるプログラムのバイナリサイズが許容範囲を超えて
仕様を満たさなくなってしまいました
479デフォルトの名無しさん
2014/09/15(月) 17:17:53.19ID:9UWhhSIJ ID:kUSteVkT必死すぎだなw
”要件” を満たせないなら、
同じ仕様のまま 要件を満たすように
リファクタリングすればいいだろうw
”要件” を満たせないなら、
同じ仕様のまま 要件を満たすように
リファクタリングすればいいだろうw
480デフォルトの名無しさん
2014/09/15(月) 17:32:28.60ID:9UWhhSIJ ID:kUSteVkTアは書いたコードが要件を満たせなかったら
そのコードを捨てて一から作り直んだろうかw
そのコードを捨てて一から作り直んだろうかw
481デフォルトの名無しさん
2014/09/15(月) 17:33:12.92ID:kUSteVkT 一日中スレに張り付いてる ID:9UWhhSIJ に必死過ぎと言われてもな…
で、リファクタリングの手法に則って変換しても
要件を満たせないケースがあると認めるのか?
で、リファクタリングの手法に則って変換しても
要件を満たせないケースがあると認めるのか?
482デフォルトの名無しさん
2014/09/15(月) 17:38:23.74ID:9UWhhSIJ やっと要件といったねw
リファクタリングは仕様を変えずに
コードをわかりやすい形に修正するものだから
要件を満たさなく慣れば、満たすように
リファクタリングすればいいってことで終わる話だ。
なんせリファクタリングしても仕様は変わらないのだから
仕様を変えずに要件を満たせるように作り変えられる。
リファクタリングは仕様を変えずに
コードをわかりやすい形に修正するものだから
要件を満たさなく慣れば、満たすように
リファクタリングすればいいってことで終わる話だ。
なんせリファクタリングしても仕様は変わらないのだから
仕様を変えずに要件を満たせるように作り変えられる。
483デフォルトの名無しさん
2014/09/15(月) 17:44:05.42ID:kUSteVkT484デフォルトの名無しさん
2014/09/15(月) 18:58:56.46ID:j8xvklWY 絶対に壊れない奥義は秘中の秘で
師匠に皆伝を認められないと伝授してもらえないんだよ
師匠に皆伝を認められないと伝授してもらえないんだよ
485デフォルトの名無しさん
2014/09/15(月) 19:33:35.36ID:wbbrJGCJ リファクタリングってどのタイミングでやる事を想定してるのかな
プロジェクトにそんな工程存在しないし
終わって凍結したコードを後から修正なんてしないでしょ
不具合とか新機能とか更改する案件が出てきて初めて
次のプロジェクトやりましょうってなるわけでしょ
そうなったとしてコードの機能追加や修正はあっても
このスレで言う仕様通りに動くものにわざわざ手をつけるなんてことするかな
プロジェクトにそんな工程存在しないし
終わって凍結したコードを後から修正なんてしないでしょ
不具合とか新機能とか更改する案件が出てきて初めて
次のプロジェクトやりましょうってなるわけでしょ
そうなったとしてコードの機能追加や修正はあっても
このスレで言う仕様通りに動くものにわざわざ手をつけるなんてことするかな
486デフォルトの名無しさん
2014/09/15(月) 19:40:39.59ID:q3fGkS61 やりたい時がやるべき時なんだよ。
コードがクソだと思ったら何時でもそれがリファクタリングのタイミング。
コードがクソだと思ったら何時でもそれがリファクタリングのタイミング。
487デフォルトの名無しさん
2014/09/15(月) 19:58:17.80ID:wbbrJGCJ だからそんなタイミングなんて実際存在しないよねって話をしてるのに
488デフォルトの名無しさん
2014/09/15(月) 20:46:42.81ID:q3fGkS61 >>487
だからコードがクソだと思わなかったらやる必要ないんだって
だからコードがクソだと思わなかったらやる必要ないんだって
489デフォルトの名無しさん
2014/09/15(月) 21:25:15.72ID:9UWhhSIJ >>483
> いや、俺は最後に修正をコミットするときに仕様を満たしてれば
> 途中で壊れてようがリファクタリングとしてOKって立場だから、それで良いよ
リファクタリングの誤用
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?RefactoringMalapropism
> ……のだが、リファクタリングは、適切に使われてはいない。
> リファクタリング中に2,3日システムが動かなくなっちゃってーなどと言ってる奴がいたら、
> んなもんリファクタリングじゃあなーいと言ってやれ。 ドキュメントをリファクタリング
> しちゃるとか言ってる奴、 それもリファクタリングじゃねーぞコラ。 そういうのは、リストラクチャリング(再構築)というのだッ。
> リファクタリングはより具体的な技術のことで、 小さな「振る舞いを保持したままの変化」
> (リファクタリングと呼ばれている)から成り立っている。 システムをリファクタリングするときは、
> 数分以上、システムが壊れたままにしてはいけない。
> いや、俺は最後に修正をコミットするときに仕様を満たしてれば
> 途中で壊れてようがリファクタリングとしてOKって立場だから、それで良いよ
リファクタリングの誤用
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?RefactoringMalapropism
> ……のだが、リファクタリングは、適切に使われてはいない。
> リファクタリング中に2,3日システムが動かなくなっちゃってーなどと言ってる奴がいたら、
> んなもんリファクタリングじゃあなーいと言ってやれ。 ドキュメントをリファクタリング
> しちゃるとか言ってる奴、 それもリファクタリングじゃねーぞコラ。 そういうのは、リストラクチャリング(再構築)というのだッ。
> リファクタリングはより具体的な技術のことで、 小さな「振る舞いを保持したままの変化」
> (リファクタリングと呼ばれている)から成り立っている。 システムをリファクタリングするときは、
> 数分以上、システムが壊れたままにしてはいけない。
490デフォルトの名無しさん
2014/09/15(月) 21:31:41.31ID:eEkAvSkz491デフォルトの名無しさん
2014/09/15(月) 21:36:40.31ID:9UWhhSIJ492デフォルトの名無しさん
2014/09/15(月) 22:30:57.87ID:kUSteVkT493デフォルトの名無しさん
2014/09/15(月) 22:47:48.33ID:W2xZfE+V IDEのリファクタリングのメニューから選べる機械的にできる変換のみを
リファクタリングとする派閥があるんだよ
要件を満たすかではなく、機械的にできる事が重要なわけ
なお、これは底辺の馬鹿でも可能な「ドカタ・スタイル」として認知されてる
リファクタリングとする派閥があるんだよ
要件を満たすかではなく、機械的にできる事が重要なわけ
なお、これは底辺の馬鹿でも可能な「ドカタ・スタイル」として認知されてる
494デフォルトの名無しさん
2014/09/15(月) 23:33:30.39ID:jSabMZv+495デフォルトの名無しさん
2014/09/16(火) 02:50:25.03ID:BRRsQsEe >>446
>オブジェクト指向、CMMI、PMBOKとかと同じでさ、アメリカ人の教授とかはそういうのまとめて
>自分が言い出しっぺになって、学会ごっこしたり、資格試験の元締めやろうとしたりするのが好きなんだよ。
リファクタリングって、資格試験制度や学会作ろうって動きがあるのかな?
パターンはなんかやってるところあるよね。
>オブジェクト指向、CMMI、PMBOKとかと同じでさ、アメリカ人の教授とかはそういうのまとめて
>自分が言い出しっぺになって、学会ごっこしたり、資格試験の元締めやろうとしたりするのが好きなんだよ。
リファクタリングって、資格試験制度や学会作ろうって動きがあるのかな?
パターンはなんかやってるところあるよね。
496デフォルトの名無しさん
2014/09/16(火) 04:23:48.75ID:1lKEIB+1 >>493
> IDEのリファクタリングのメニューから選べる機械的にできる変換のみを
> リファクタリングとする派閥があるんだよ
それは、リファクタリングをわかってない派閥であり、
無知なリファクタリング反対派となんらかわらないよ。
リファクタリング本を読んでいれば、
リファクタリングブラウザで行えるのは
リファクタリングのほんの一部だって知ってる。
> IDEのリファクタリングのメニューから選べる機械的にできる変換のみを
> リファクタリングとする派閥があるんだよ
それは、リファクタリングをわかってない派閥であり、
無知なリファクタリング反対派となんらかわらないよ。
リファクタリング本を読んでいれば、
リファクタリングブラウザで行えるのは
リファクタリングのほんの一部だって知ってる。
497デフォルトの名無しさん
2014/09/16(火) 12:38:21.05ID:5ipzkeYr リファクタラー内部抗争勃発
498デフォルトの名無しさん
2014/09/16(火) 13:41:58.56ID:UosJEOFn リファクタリング前と後で同じテストが通ればOK派と、
リファクタリング中のどの時点でもテストが通らないとダメ派か。
リファクタリング中のどの時点でもテストが通らないとダメ派か。
499デフォルトの名無しさん
2014/09/16(火) 19:13:39.64ID:BRRsQsEe リファクタリングのアトミックな単位は一文字削除
500デフォルトの名無しさん
2014/09/16(火) 20:19:15.75ID:c0zqQ2NF >>1
リファクタリング自体が理想論。
つまりは、自分(以下A)と同等かそれ以上の腕の持ち主だけで人材が構成されている必要がある。ただし、これは自分視点。
しかし、この状態だと、A以上の腕の持ち主からAを見ると、Aは足手まといで汚いソースを作り上げる元凶。
上級者が、切磋琢磨していく状態なら良いが、上級者なんて1%もいない。99%の下手が次々と入ってきてクズソースを乱発。
腕の良い者達は、クズソースのリファクタ作業だけをやるハメに。
腕の良い者達だけでやっていれば、もっと早く開発ができるのに。しかしリファクタリングというとできるのは腕の良いものだけ。
よってクズの尻拭いを永久にやらされる上級者は、腐る。
そしておしまい。
リファクタ云々よりクズの徹底排除こそ最優先。
それがなされなければ、確実にクズソースの生成のほうが圧倒的に早い。
リファクタリング自体が理想論。
つまりは、自分(以下A)と同等かそれ以上の腕の持ち主だけで人材が構成されている必要がある。ただし、これは自分視点。
しかし、この状態だと、A以上の腕の持ち主からAを見ると、Aは足手まといで汚いソースを作り上げる元凶。
上級者が、切磋琢磨していく状態なら良いが、上級者なんて1%もいない。99%の下手が次々と入ってきてクズソースを乱発。
腕の良い者達は、クズソースのリファクタ作業だけをやるハメに。
腕の良い者達だけでやっていれば、もっと早く開発ができるのに。しかしリファクタリングというとできるのは腕の良いものだけ。
よってクズの尻拭いを永久にやらされる上級者は、腐る。
そしておしまい。
リファクタ云々よりクズの徹底排除こそ最優先。
それがなされなければ、確実にクズソースの生成のほうが圧倒的に早い。
501デフォルトの名無しさん
2014/09/16(火) 20:29:13.06ID:c0zqQ2NF 3行で言うと
1%の有能な人間のリファクタリングの速度より
99%を占めるクズが作り出すクズソース量産スピードのほうが速い
だから、間に合わない。
ということだね。
1%の有能な人間のリファクタリングの速度より
99%を占めるクズが作り出すクズソース量産スピードのほうが速い
だから、間に合わない。
ということだね。
502デフォルトの名無しさん
2014/09/16(火) 21:19:30.50ID:LXIAs8Mg 隠された4行目は
そして、1%の有能な人間はここにはいない。
か?
そして、1%の有能な人間はここにはいない。
か?
503デフォルトの名無しさん
2014/09/16(火) 21:22:31.12ID:1lKEIB+1504デフォルトの名無しさん
2014/09/17(水) 00:27:57.13ID:5OnPRq9A また俺の会社すげえ自慢か
ITドカタのクセに生意気だ
ITドカタのクセに生意気だ
505デフォルトの名無しさん
2014/09/17(水) 01:33:42.78ID:ZHv/uS3X なんで力量がはっきりしてない人のソースレビューもせずに、
終わってからリファクタリングしてるの。クズじゃないの。
自分のコード書くだけが仕事じゃねーんだぞ。
終わってからリファクタリングしてるの。クズじゃないの。
自分のコード書くだけが仕事じゃねーんだぞ。
506デフォルトの名無しさん
2014/09/17(水) 01:41:26.78ID:bT3aRSk/ リファクタリングが工程になのであればら、彼の知っている開発手法はそもそもTDDに向いてないので、その前提でTDDの話なんてできないと思うのです
世の中にはCIって概念があるのを知らないのだろうか
まぁ土方なら仕方ないと思いますが
世の中にはCIって概念があるのを知らないのだろうか
まぁ土方なら仕方ないと思いますが
507デフォルトの名無しさん
2014/09/17(水) 01:43:13.03ID:bT3aRSk/ TDDすれと間違えたし、誤字りまくった
てへぺろ
てへぺろ
508デフォルトの名無しさん
2014/09/17(水) 02:10:48.96ID:B5vXdL5P リバースエンジニアリングが難しいのと同じで、
自分でソースを書くよりも、
他人が書いたソースを読むのは、ずっと難しい
仕様書→ソースは、簡単
ソース→仕様書は、難しい
自分でソースを書くよりも、
他人が書いたソースを読むのは、ずっと難しい
仕様書→ソースは、簡単
ソース→仕様書は、難しい
509デフォルトの名無しさん
2014/09/17(水) 04:16:14.76ID:YtdMSBzp510デフォルトの名無しさん
2014/09/17(水) 04:18:50.43ID:YtdMSBzp >>508
> 他人が書いたソースを読むのは、ずっと難しい
最近これ違うと思うようになってきた。
他人が書いたソースが読みにくいと思ったら
そのソースは他人が読むように書かれていない
自分よがりなソースコードなんだよ。
読む方に非があるんじゃなくて、書くほうが悪い
> 他人が書いたソースを読むのは、ずっと難しい
最近これ違うと思うようになってきた。
他人が書いたソースが読みにくいと思ったら
そのソースは他人が読むように書かれていない
自分よがりなソースコードなんだよ。
読む方に非があるんじゃなくて、書くほうが悪い
511デフォルトの名無しさん
2014/09/17(水) 07:16:49.41ID:5OnPRq9A 自分よがりなんて書いてる奴は、他人に読みやすい文章になるような注意力に欠けた
独りよがりの文章しか書けないんだろうな。
独りよがりの文章しか書けないんだろうな。
512デフォルトの名無しさん
2014/09/17(水) 12:15:48.80ID:Kfgv1MV9 >>511
うわあ読解力パネェ
うわあ読解力パネェ
513デフォルトの名無しさん
2014/09/17(水) 21:24:55.43ID:YtdMSBzp514デフォルトの名無しさん
2014/09/17(水) 23:24:58.57ID:IUDVFBKE 君達は本当に頭が悪いんだな
515デフォルトの名無しさん
2014/09/18(木) 00:20:18.22ID:spGOayPR うむ
http://www.weblio.jp/content/%E8%87%AA%E5%88%86%E3%82%88%E3%81%8C%E3%82%8A
自分よがり
読み方:じぶんよがり
別表記:自分善がり
ひとりよがり(独り善がり)に同じ。周囲を顧慮せずに自分の都合や損得のみで物事を考えること。
http://www.weblio.jp/content/%E8%87%AA%E5%88%86%E3%82%88%E3%81%8C%E3%82%8A
自分よがり
読み方:じぶんよがり
別表記:自分善がり
ひとりよがり(独り善がり)に同じ。周囲を顧慮せずに自分の都合や損得のみで物事を考えること。
516デフォルトの名無しさん
2014/09/18(木) 19:33:06.94ID:ot8C9XJ5 >>500
まぁほぼ同意だな
まぁほぼ同意だな
517デフォルトの名無しさん
2014/09/18(木) 20:26:58.62ID:spGOayPR518デフォルトの名無しさん
2014/09/18(木) 22:19:08.95ID:+GRlEEjB 要求仕様の変更に追随するために設計を変えていくのがリファクタだ
撒き散らしたクソコード直すのはリファクタとは言わん
テストの前に個々人レベルでやる仕事だ
撒き散らしたクソコード直すのはリファクタとは言わん
テストの前に個々人レベルでやる仕事だ
519デフォルトの名無しさん
2014/09/18(木) 22:31:11.52ID:Lc9LBSGA 他人が作ったものをメンテする時は
まず他人にやらせろってこと?
まず他人にやらせろってこと?
520デフォルトの名無しさん
2014/09/18(木) 23:29:47.48ID:i6De8Pgm クソコード直すのがリファクタリングでいいと思うお
521デフォルトの名無しさん
2014/09/18(木) 23:52:12.25ID:CfthWkvp 結局言葉遊びの域を出なかったね
522デフォルトの名無しさん
2014/09/18(木) 23:53:02.19ID:LNiMu1bm つーかリファクタリングとか言いにくいから修正でいいじゃん
523デフォルトの名無しさん
2014/09/19(金) 00:33:41.85ID:Y0Ellmpg リファクタリングを定義しようぜ
とりあえずQA形式にして質問と回答は最近の書き込みから適当に埋めた
<<リファクタリングとは>>
Q 何時やるの? A やりたい時。糞コードを見つけたら。今でしょ
Q 具体的には(工程では)いつ? A 回答なし
Q やる必要あるの? A 回答なし
Q 誰がやるの?A 自称上級者
Q 上級者の定義は?A 回答なし
Q その上級者には何かメリットが?A 回答なし
Q リファクタリングってお金もらえるの?A ボランティア
Q どういう効果が期待できるの? A 将来的なリスクを回避する、または逆にリスクを抱える
とりあえずQA形式にして質問と回答は最近の書き込みから適当に埋めた
<<リファクタリングとは>>
Q 何時やるの? A やりたい時。糞コードを見つけたら。今でしょ
Q 具体的には(工程では)いつ? A 回答なし
Q やる必要あるの? A 回答なし
Q 誰がやるの?A 自称上級者
Q 上級者の定義は?A 回答なし
Q その上級者には何かメリットが?A 回答なし
Q リファクタリングってお金もらえるの?A ボランティア
Q どういう効果が期待できるの? A 将来的なリスクを回避する、または逆にリスクを抱える
524デフォルトの名無しさん
2014/09/19(金) 17:39:57.70ID:J2pxYtIB525デフォルトの名無しさん
2014/09/19(金) 17:51:51.67ID:VKWv7B4z ちょっと何言ってるのかわかりませんわ
526デフォルトの名無しさん
2014/09/19(金) 18:08:18.14ID:J2pxYtIB 誰でもできることでないなら、実現は夢物語ということだ
527デフォルトの名無しさん
2014/09/19(金) 18:36:04.63ID:iHgvKusj 工程を確保して
下がやりたいと言ったら邪魔するなというだけの話かもしれない
下がやりたいと言ったら邪魔するなというだけの話かもしれない
528デフォルトの名無しさん
2014/09/19(金) 18:47:45.84ID:5Sq7tp9D >>524
行き詰まるところ先人達が考えて考えた結果
新言語の開発
にしか答えがないんだよなww
どんな素人でも言語のルールには逆らえない。つまり従わざるを得ない。
理論だけで劇的な変化があったのなんて
GOTOレス
だけだろ。
わかりやすくステップ数で言うけどjavaで10ステップで組まれていてごちゃごちゃなプログラムがある。
仕様変更するのに1万ステップの変更が必要。これを、新言語おまんこ女学院言語で開発すると、
main()
おまんちょ()
って書くだけで同じ機能が実現され、
仕様変更には
use ここか?ここがええんか?
main
おまんちょ(伝説の第49手目(3箇所、同時、左手だけちょうどいい微速))
って直せば実現できる言語が生まれれば、これ以上の可読性の向上はないわけで。
馬鹿でも簡単に、馬鹿でも可読性が高く、馬鹿でもスピーディーに・・・・を求めて新言語というのは生まれている
行き詰まるところ先人達が考えて考えた結果
新言語の開発
にしか答えがないんだよなww
どんな素人でも言語のルールには逆らえない。つまり従わざるを得ない。
理論だけで劇的な変化があったのなんて
GOTOレス
だけだろ。
わかりやすくステップ数で言うけどjavaで10ステップで組まれていてごちゃごちゃなプログラムがある。
仕様変更するのに1万ステップの変更が必要。これを、新言語おまんこ女学院言語で開発すると、
main()
おまんちょ()
って書くだけで同じ機能が実現され、
仕様変更には
use ここか?ここがええんか?
main
おまんちょ(伝説の第49手目(3箇所、同時、左手だけちょうどいい微速))
って直せば実現できる言語が生まれれば、これ以上の可読性の向上はないわけで。
馬鹿でも簡単に、馬鹿でも可読性が高く、馬鹿でもスピーディーに・・・・を求めて新言語というのは生まれている
529デフォルトの名無しさん
2014/09/19(金) 18:48:57.11ID:5Sq7tp9D >javaで10ステップ
を
>javaで10万ステップ
に訂正
を
>javaで10万ステップ
に訂正
530デフォルトの名無しさん
2014/09/19(金) 19:42:02.22ID:97jwqaFX531デフォルトの名無しさん
2014/09/19(金) 20:44:14.36ID:/lOvQPWO リファクタリングしない人は
修正する時、テストしないの?
テストするならリファクタリングしても
問題ないよね。
修正する時、テストしないの?
テストするならリファクタリングしても
問題ないよね。
532デフォルトの名無しさん
2014/09/19(金) 20:59:36.15ID:6gllmAz9 全部埋めてやったぞ
<<リファクタリングとは>>
Q 何時やるの? A やりたい時。糞コードを見つけたら。今でしょ
Q 具体的には(工程では)いつ? A アジャイルですから。工程て何?
Q やる必要あるの? A やらなきゃバグでるよ?いつか破綻するよ?
Q 誰がやるの?A 自称上級者
Q 上級者の定義は?A 糞コードを発見する嗅覚を持つこと
Q その上級者には何かメリットが?A コードが綺麗な方が気持ちいいだろ
Q リファクタリングってお金もらえるの?A ボランティア
Q どういう効果が期待できるの? A 将来的なリスクを回避する、または逆にリスクを抱える
<<リファクタリングとは>>
Q 何時やるの? A やりたい時。糞コードを見つけたら。今でしょ
Q 具体的には(工程では)いつ? A アジャイルですから。工程て何?
Q やる必要あるの? A やらなきゃバグでるよ?いつか破綻するよ?
Q 誰がやるの?A 自称上級者
Q 上級者の定義は?A 糞コードを発見する嗅覚を持つこと
Q その上級者には何かメリットが?A コードが綺麗な方が気持ちいいだろ
Q リファクタリングってお金もらえるの?A ボランティア
Q どういう効果が期待できるの? A 将来的なリスクを回避する、または逆にリスクを抱える
533デフォルトの名無しさん
2014/09/19(金) 21:28:04.06ID:/lOvQPWO <<リファクタリングとは>>
Q 何時やるの? A テスト駆動開発においては、テスト記述→コードを書く→リファクタリング の順番で開発する
Q 具体的には(工程では)いつ? A コードを書いた直後。工程で言えば開発工程
Q やる必要あるの? A 義務だろうね。小説で言えば清書する必要あるの?ぐらいのレベル。
Q 誰がやるの?A 客観的指標(McCab等)で差があるコードを見比べて、優れている方を言えるレベルの人全員
Q 上級者の定義は?A 客観的指標(McCab等)で計測して良いとされるコードを書ける人
Q その上級者には何かメリットが?A 上級者であっても、可読性やメンテナンス性が高いコードの方が早く機能追加・修正・不具合対応ができる。
Q リファクタリングってお金もらえるの?A 開発の一部であり、清書みたいなものなので当然お金はもらえる。
Q どういう効果が期待できるの? A 期待ではなく事実としてメリットがある。メリットは二つ上に書いたとおり。
Q 何時やるの? A テスト駆動開発においては、テスト記述→コードを書く→リファクタリング の順番で開発する
Q 具体的には(工程では)いつ? A コードを書いた直後。工程で言えば開発工程
Q やる必要あるの? A 義務だろうね。小説で言えば清書する必要あるの?ぐらいのレベル。
Q 誰がやるの?A 客観的指標(McCab等)で差があるコードを見比べて、優れている方を言えるレベルの人全員
Q 上級者の定義は?A 客観的指標(McCab等)で計測して良いとされるコードを書ける人
Q その上級者には何かメリットが?A 上級者であっても、可読性やメンテナンス性が高いコードの方が早く機能追加・修正・不具合対応ができる。
Q リファクタリングってお金もらえるの?A 開発の一部であり、清書みたいなものなので当然お金はもらえる。
Q どういう効果が期待できるの? A 期待ではなく事実としてメリットがある。メリットは二つ上に書いたとおり。
534デフォルトの名無しさん
2014/09/19(金) 21:57:34.29ID:Xfkvubm0 当然お金はもらえるってなんだよワロタ
535デフォルトの名無しさん
2014/09/19(金) 22:04:08.26ID:GUgRmWP+ >>534
たとえばさ、誤字脱字、これはあっても読めれば別に問題ないんだよ。
でも見つけたら直すだろう?
そうやって誤字脱字の見直し、修正が例え1時間で終わったとしても
業務である以上、それは給料に変わるんだよ。
たとえばさ、誤字脱字、これはあっても読めれば別に問題ないんだよ。
でも見つけたら直すだろう?
そうやって誤字脱字の見直し、修正が例え1時間で終わったとしても
業務である以上、それは給料に変わるんだよ。
536デフォルトの名無しさん
2014/09/19(金) 22:35:47.59ID:6gllmAz9 問題ないのに直すのは明らかに無駄な労力だろ
リファクタリングてそういう事なのか?
リファクタリングてそういう事なのか?
537デフォルトの名無しさん
2014/09/20(土) 00:28:50.80ID:zqGI0i/Q そこらに地雷が埋まってても踏まなきゃ平気なんだよ
538デフォルトの名無しさん
2014/09/20(土) 00:35:33.60ID:BGuuw2+W >>531
そもそもテストは各工程に含まれてるよね?
一度コードに手を付けたらリファクタリングだろうが何だろうがテストはやり直しだよ
工程をこなしてる間つまりリリースし終わって暇にでもならないと
リファクタリングなんか入り込む余地なんて無いぞ
要するに無駄ってことじゃないの
そもそもテストは各工程に含まれてるよね?
一度コードに手を付けたらリファクタリングだろうが何だろうがテストはやり直しだよ
工程をこなしてる間つまりリリースし終わって暇にでもならないと
リファクタリングなんか入り込む余地なんて無いぞ
要するに無駄ってことじゃないの
539デフォルトの名無しさん
2014/09/20(土) 01:43:02.74ID:b8OT/FfJ540デフォルトの名無しさん
2014/09/20(土) 10:04:40.32ID:zqGI0i/Q まあ理論的に完璧なリファクタリング手法を使っても
無関係であるはずの部分でコンパイラやOSのバグを踏んだらそれまでだから
実テストにやたら工数のかかってたらその後はさわれないだろうね
無関係であるはずの部分でコンパイラやOSのバグを踏んだらそれまでだから
実テストにやたら工数のかかってたらその後はさわれないだろうね
541デフォルトの名無しさん
2014/09/20(土) 10:58:44.27ID:b8OT/FfJ テストやりました。バグが見つかりました。
ソースコードが汚くて、コードの意味がわかりません。
ソースコードが汚くて、バグの原因がわかりません。
あちこちにコピペされてて、バグの修正が大変です。
バグを修正したら、別のバグが発生しました。
バグを修正しましたが、処理が複数のモジュールに
分散していたので多くの再テストが必要です。
こういうのを解決するのがリファクタリング。
ソースコードが汚くて、コードの意味がわかりません。
ソースコードが汚くて、バグの原因がわかりません。
あちこちにコピペされてて、バグの修正が大変です。
バグを修正したら、別のバグが発生しました。
バグを修正しましたが、処理が複数のモジュールに
分散していたので多くの再テストが必要です。
こういうのを解決するのがリファクタリング。
542デフォルトの名無しさん
2014/09/20(土) 11:27:24.57ID:41dsRCcO 違うね。
> テストやりました。バグが見つかりました。
> (以下略)
それはデバッグや。
> テストやりました。バグが見つかりました。
> (以下略)
それはデバッグや。
543デフォルトの名無しさん
2014/09/20(土) 11:43:01.81ID:b8OT/FfJ544デフォルトの名無しさん
2014/09/20(土) 11:48:06.25ID:zub5QpR2 ちょっと意味が分からない
545デフォルトの名無しさん
2014/09/20(土) 12:22:36.52ID:McF0jAPW 開発段階ですでにスケジュールオーバーしてる現場だらけなのに机上の空論w
新言語開発しろw
新言語開発しろw
546デフォルトの名無しさん
2014/09/20(土) 13:18:35.72ID:b8OT/FfJ >>544
意味がわからないレベルの人っているんだよねw
意味がわからないレベルの人っているんだよねw
547デフォルトの名無しさん
2014/09/20(土) 14:46:45.86ID:mG0BaSkX テストってコードを書いた本人がやるべき?
548デフォルトの名無しさん
2014/09/20(土) 15:02:25.23ID:uiyrzvHx リファクタリングすら必要ないほどの腕のいい奴を最初から揃えれば良くね?
というのと同じくらいリファクタリング理論は破綻してる
というのと同じくらいリファクタリング理論は破綻してる
549デフォルトの名無しさん
2014/09/20(土) 15:33:26.65ID:uiyrzvHx 他人のソースコードの解読は新規作成より時間がかかるケースが多々。
仕様がわかってるなら、そんなチェックをお願いしないといけない奴のソースレビューをするより、最初から自分でやったほうが早いし確実
つまり、リファクタリングの行き着く先は、無脳者を開発に入れなければ良いに行き着く。
少数精鋭方式。
仕様がわかってるなら、そんなチェックをお願いしないといけない奴のソースレビューをするより、最初から自分でやったほうが早いし確実
つまり、リファクタリングの行き着く先は、無脳者を開発に入れなければ良いに行き着く。
少数精鋭方式。
550デフォルトの名無しさん
2014/09/20(土) 15:48:28.37ID:Jdjsg9Fk551デフォルトの名無しさん
2014/09/20(土) 16:04:59.48ID:b8OT/FfJ 仕様変更っていうのは避けられないものだし、
機能追加や新しく出来た○○に対応するとか
どうしても変化は避けられないわけで
その変化にたいしてコードも変化させていかないといけないんだよ。
それにさ、人っていうのは成長するのは当たり前なのだから、
一年前の自分より、もっと優れたものを書けるようになっているはず。
一年後はさらに優れたものを書けるようになるはずだが、
それは今をきちんとやっていてできること。
過去の自分の真似ばかりしていても、成長はできないよ。
機能追加や新しく出来た○○に対応するとか
どうしても変化は避けられないわけで
その変化にたいしてコードも変化させていかないといけないんだよ。
それにさ、人っていうのは成長するのは当たり前なのだから、
一年前の自分より、もっと優れたものを書けるようになっているはず。
一年後はさらに優れたものを書けるようになるはずだが、
それは今をきちんとやっていてできること。
過去の自分の真似ばかりしていても、成長はできないよ。
552デフォルトの名無しさん
2014/09/20(土) 16:20:19.19ID:gqfYZyci 何を意味の分からん事を
と思ったら、またお前かw
と思ったら、またお前かw
553デフォルトの名無しさん
2014/09/20(土) 18:11:49.33ID:b8OT/FfJ554デフォルトの名無しさん
2014/09/20(土) 20:30:21.92ID:lV8t6mfn555デフォルトの名無しさん
2014/09/20(土) 20:40:59.03ID:Pz5VxQ8p リファクタリングは有能が無能の尻を拭く作業ではなく自分の尻を拭く作業だ
最初は速度など無視してとりあえず動くように作る
動いたら次に速く動くようにする
速く動いたらそれを読みやすく整える
読みやすくなったら今度は新機能を楽々追加する
これで立派なリファクタリングだ
最初は速度など無視してとりあえず動くように作る
動いたら次に速く動くようにする
速く動いたらそれを読みやすく整える
読みやすくなったら今度は新機能を楽々追加する
これで立派なリファクタリングだ
556デフォルトの名無しさん
2014/09/20(土) 21:06:59.81ID:K48fRfz5 速く動くようにするのは一番後でいいだろ
557デフォルトの名無しさん
2014/09/20(土) 21:21:43.45ID:npmlG4Eq >>556
ボトルネックが出来て、そこを解決すれば全体に速度が上がるようなものなら
後からでもどうにかなるが、全体的に微妙に遅い、微妙にリソース食っている、
それで全体的に遅くなってるだと後からじゃどうにもならない。
ボトルネックが出来て、そこを解決すれば全体に速度が上がるようなものなら
後からでもどうにかなるが、全体的に微妙に遅い、微妙にリソース食っている、
それで全体的に遅くなってるだと後からじゃどうにもならない。
558デフォルトの名無しさん
2014/09/20(土) 21:27:33.19ID:lV8t6mfn559デフォルトの名無しさん
2014/09/20(土) 21:36:13.07ID:lV8t6mfn >>555
そもそも、そんなものはリファクタリングではない
リファクタリングは「現時点『運用中』の動いているシステムプログラム」に勝手に手を加えること。
「まがいなりにも動いているシステムのプログラムを勝手にいじるな」
というのが世界の常識。でこの常識を変えようとした思想がリファクタリング。
ただ、結局は、誰もやらんってこと。
理由の大半は「仕様がわからん」ということ。
そもそも、そんなものはリファクタリングではない
リファクタリングは「現時点『運用中』の動いているシステムプログラム」に勝手に手を加えること。
「まがいなりにも動いているシステムのプログラムを勝手にいじるな」
というのが世界の常識。でこの常識を変えようとした思想がリファクタリング。
ただ、結局は、誰もやらんってこと。
理由の大半は「仕様がわからん」ということ。
560デフォルトの名無しさん
2014/09/20(土) 21:44:36.36ID:6heECCBq エクストリームプログラミングから全否定かよ。
カオスだな。
カオスだな。
561デフォルトの名無しさん
2014/09/20(土) 21:54:03.46ID:UNVZl8tG バグを仕込んでしまう可能性があるのが致命的
あとは評価制度の問題だな
長期的に絶対メリットはあるんだがそんなん誰も見ちゃいねえし
あとは評価制度の問題だな
長期的に絶対メリットはあるんだがそんなん誰も見ちゃいねえし
562デフォルトの名無しさん
2014/09/20(土) 22:00:15.71ID:Pz5VxQ8p 他人の尻を拭くハメになったとき、リファクタリングが可能である唯一の条件は、
引継ぎ時点でリファクタリングされているソースコードであること、だ
そうでなかったらご愁傷様あきらめた方がいい
引継ぎ時点でリファクタリングされているソースコードであること、だ
そうでなかったらご愁傷様あきらめた方がいい
563デフォルトの名無しさん
2014/09/20(土) 22:07:58.53ID:fFGu/96N >>559
> リファクタリングは「現時点『運用中』の動いているシステムプログラム」に勝手に手を加えること。
なんでウソつくの?
本当と言い返せるものなら言い返していいんだぜ?w
ただし、そんなことをしたら、ソースを要求するので
準備しておくこと。
> リファクタリングは「現時点『運用中』の動いているシステムプログラム」に勝手に手を加えること。
なんでウソつくの?
本当と言い返せるものなら言い返していいんだぜ?w
ただし、そんなことをしたら、ソースを要求するので
準備しておくこと。
564デフォルトの名無しさん
2014/09/20(土) 22:53:25.35ID:6heECCBq 恐怖駆動開発だな。
http://www.hanselman.com/blog/FearDrivenDevelopmentFDD.aspx
レガシーコードでテストが無い and/or コードに対する理解が無い
↓
エンバグ、ビルドを壊すことへの恐怖
http://www.hanselman.com/blog/FearDrivenDevelopmentFDD.aspx
レガシーコードでテストが無い and/or コードに対する理解が無い
↓
エンバグ、ビルドを壊すことへの恐怖
565デフォルトの名無しさん
2014/09/20(土) 23:06:54.25ID:K48fRfz5566デフォルトの名無しさん
2014/09/21(日) 01:19:15.97ID:H7xT3+nz りファクタリングって言うのは、オブジェクト指向の言語(これが大前提)で、
開発段階にあって、試作品が第一段階で問題なく動いて、
あとは性能やコードの見直しやカイゼンだよねって段階で設計へフィードバックするプロセスですよ。
その後に顧客側のチェックと納品ですよね。
運用中のシステムに手を入れるという話では無いですよ。
カイゼンを全否定ならトヨタはどうなるんでしょうか?
開発段階にあって、試作品が第一段階で問題なく動いて、
あとは性能やコードの見直しやカイゼンだよねって段階で設計へフィードバックするプロセスですよ。
その後に顧客側のチェックと納品ですよね。
運用中のシステムに手を入れるという話では無いですよ。
カイゼンを全否定ならトヨタはどうなるんでしょうか?
567デフォルトの名無しさん
2014/09/21(日) 01:26:54.31ID:UIOIQYIj 一度客に納入してさあ、次に改修の仕事がきたときにリファクタリングしていたから工数が減っていたとしてもなんのメリットもないんだよな。むしろ工数が少なきゃ金が取れない。リファクタリングした分取ったら水増し請求だ。
機能やバグについて同等で、メンテしやすさだけ向上させる工程なんて日本の一般的な開発ではインセンティブゼロだよ。趣味ならともかくプロの仕事なら。
最初からリファクタリングの作業も込みで工数見積もりなり、費用請求しろ、ってそんな見積もり見て納得する客いるわけないじゃん。最初から手直しいらない納品物にして下さい、と言われてオチ。
出来上がってテスト済みのソースをあれこれいじるなんてお遊びが入り込む余地はない。
機能やバグについて同等で、メンテしやすさだけ向上させる工程なんて日本の一般的な開発ではインセンティブゼロだよ。趣味ならともかくプロの仕事なら。
最初からリファクタリングの作業も込みで工数見積もりなり、費用請求しろ、ってそんな見積もり見て納得する客いるわけないじゃん。最初から手直しいらない納品物にして下さい、と言われてオチ。
出来上がってテスト済みのソースをあれこれいじるなんてお遊びが入り込む余地はない。
568デフォルトの名無しさん
2014/09/21(日) 01:42:02.59ID:H7xT3+nz それと、テストという概念は個人がスクリプトやツール類を書く場合には絶対に生まれてこない発想で、
多人数で、複数の技能レベルの人が、仕様書をガイドに組織的に開発に関わる条件下で必然的に生じる仕事上の手続き。
個人がコード書く場合は、ソースコード全体、アルゴリズム、関数やクラスを全て把握しているので
テストコードをいちいち書く必要がない。だからデバックという手順はあっても、関数やクラスのテストコードを
いちいち書くという発想にはならない。コード修正も容易、エラーが発生してもその場で即対応できる個人レベルの作業としては正しい。
組織で開発する部門では他人が必要なコードを仕様化した関数やクラスの動作条件を定めているから、
それを大前提としてモジュール動作をテストする必要がある。一見して馬鹿げている行為に思えるのは、
アルゴリズムを提示せずトップダウン的に関数のIN/OUTのみで仕様を提示するためにモジュールのテストが必須になる。
チェックデータの側面についていえば情報管理上テストデータが必ず必須になる。それは本物と試験用のデータが違うということ。
テストコードは本人が書くと、世界は如何にばかげた行為に時間を費やしているのかと思うだけだが、
本来は書く側は最終コードが動作すると確認した上で、2重チェックとして仕様を作成した側がテストするためのコードなり手段を作るべきだな。
人が居ないというなら、テストコード書くのでなく、統合テスト的に動作チェックすべき。
多人数で、複数の技能レベルの人が、仕様書をガイドに組織的に開発に関わる条件下で必然的に生じる仕事上の手続き。
個人がコード書く場合は、ソースコード全体、アルゴリズム、関数やクラスを全て把握しているので
テストコードをいちいち書く必要がない。だからデバックという手順はあっても、関数やクラスのテストコードを
いちいち書くという発想にはならない。コード修正も容易、エラーが発生してもその場で即対応できる個人レベルの作業としては正しい。
組織で開発する部門では他人が必要なコードを仕様化した関数やクラスの動作条件を定めているから、
それを大前提としてモジュール動作をテストする必要がある。一見して馬鹿げている行為に思えるのは、
アルゴリズムを提示せずトップダウン的に関数のIN/OUTのみで仕様を提示するためにモジュールのテストが必須になる。
チェックデータの側面についていえば情報管理上テストデータが必ず必須になる。それは本物と試験用のデータが違うということ。
テストコードは本人が書くと、世界は如何にばかげた行為に時間を費やしているのかと思うだけだが、
本来は書く側は最終コードが動作すると確認した上で、2重チェックとして仕様を作成した側がテストするためのコードなり手段を作るべきだな。
人が居ないというなら、テストコード書くのでなく、統合テスト的に動作チェックすべき。
569デフォルトの名無しさん
2014/09/21(日) 01:52:41.82ID:H7xT3+nz リファクタリングは工数水増しの手段ではない。
保守とは違うので、日本の開発やってる業界のインセンティブなど関係がない。
リファクタリングとは関係がないな。
見積もりの段階でリファクタリングなどの話は出てこない。
手直しが要るといって費用請求している段階で、それはリファクタリングの問題ではなく
失敗したプロジェクトや案件だということだろう。それを誤魔化す為に誰かが嘘として
リファクタリングと言ってるだけだろう。
保守とは違うので、日本の開発やってる業界のインセンティブなど関係がない。
リファクタリングとは関係がないな。
見積もりの段階でリファクタリングなどの話は出てこない。
手直しが要るといって費用請求している段階で、それはリファクタリングの問題ではなく
失敗したプロジェクトや案件だということだろう。それを誤魔化す為に誰かが嘘として
リファクタリングと言ってるだけだろう。
570デフォルトの名無しさん
2014/09/21(日) 02:21:17.93ID:H7xT3+nz もし>>567が客側の意見であれば、失敗したプロジェクトや案件とは縁を切って
再出発したほうが開発側も、客側も気持ち的にはしあわせになれますよ。
再出発したほうが開発側も、客側も気持ち的にはしあわせになれますよ。
571デフォルトの名無しさん
2014/09/21(日) 06:26:59.02ID:4aXz2u5s >>563
>http://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%95%E3%82%A1%E3%82%AF%E3%82%BF%E3%83%AA%E3%83%B3%E3%82%B0_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)
>リファクタリング登場の経緯と目的[編集]
>リファクタリングが登場する以前は、一度正常な動作をしたプログラムは二度と手を触れるべきではないと言われていた。
>下手に手を加えて動作が変わってしまうと、それに伴って関連する部分にも修正が加えられ、やがて修正はプロジェクト
>全体に波及し対処しきれなくなるかも知れない。またソフトウェアテストを十分に行い正常な動作が確認されたとしても、
>そのプログラムをわずかでも改変すれば、バグ (欠陥) が見つかったときに改変があったプログラムを疑わなければならない。
>http://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%95%E3%82%A1%E3%82%AF%E3%82%BF%E3%83%AA%E3%83%B3%E3%82%B0_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)
>リファクタリング登場の経緯と目的[編集]
>リファクタリングが登場する以前は、一度正常な動作をしたプログラムは二度と手を触れるべきではないと言われていた。
>下手に手を加えて動作が変わってしまうと、それに伴って関連する部分にも修正が加えられ、やがて修正はプロジェクト
>全体に波及し対処しきれなくなるかも知れない。またソフトウェアテストを十分に行い正常な動作が確認されたとしても、
>そのプログラムをわずかでも改変すれば、バグ (欠陥) が見つかったときに改変があったプログラムを疑わなければならない。
572デフォルトの名無しさん
2014/09/21(日) 06:35:53.53ID:4aXz2u5s >>566
>りファクタリングって言うのは、オブジェクト指向の言語(これが大前提)
は?wwwwwwwwwwwwwwwwwwww
オブジェクト指向とそうではない言語での違いを説明しろよ
オブジェクト指向という言葉になんか宗教的妄信でもしてるのか?
>りファクタリングって言うのは、オブジェクト指向の言語(これが大前提)
は?wwwwwwwwwwwwwwwwwwww
オブジェクト指向とそうではない言語での違いを説明しろよ
オブジェクト指向という言葉になんか宗教的妄信でもしてるのか?
573デフォルトの名無しさん
2014/09/21(日) 09:08:44.80ID:aP8Aq0OA 必要なのはコードのリファクタリングではなく
チームメンバのリファクタリングである
チームメンバのリファクタリングである
574デフォルトの名無しさん
2014/09/21(日) 09:29:51.06ID:48QWsy10 言い換えると、ソースコードをリファクタリング出来るように
チームメンバーの技術力を高めることである。
チームメンバーの技術力を高めることである。
575デフォルトの名無しさん
2014/09/21(日) 09:47:59.75ID:dzDyx0VV > チームメンバのリファクタリングである
リファクタリングて振舞いを変えてはいかんのでは?
リファクタリングて振舞いを変えてはいかんのでは?
576デフォルトの名無しさん
2014/09/21(日) 12:25:58.75ID:MCI/5nTd 例えばバグが多く、しかも非常にメンテしにくい糞コードがあったとする
この場合
1. バグを含んだままリファクタリングして、その後バグを直す
2. 先にバグを直して正しいテストを通る様にしてから、リファクタリングに着手する
どっち?
この場合
1. バグを含んだままリファクタリングして、その後バグを直す
2. 先にバグを直して正しいテストを通る様にしてから、リファクタリングに着手する
どっち?
577デフォルトの名無しさん
2014/09/21(日) 12:33:35.65ID:48QWsy10 >>576
原則としては2番
ただし、今既に十分なテストがあるのなら、
リファクタリングしてもよい。
ようするに「バグが有ることに気づいていなかった」と考える。
バグが有るといえども、その状態で使われていたのであれば、
問題ない範囲(把握している範囲)で使われていたわけで、
使われていた部分の動きが変わっていなければ何も問題ない。
適切に動いていないバグの部分の動きが変わった所で
誰も困らない。そもそもバグは仕様ではないのだから。
原則としては2番
ただし、今既に十分なテストがあるのなら、
リファクタリングしてもよい。
ようするに「バグが有ることに気づいていなかった」と考える。
バグが有るといえども、その状態で使われていたのであれば、
問題ない範囲(把握している範囲)で使われていたわけで、
使われていた部分の動きが変わっていなければ何も問題ない。
適切に動いていないバグの部分の動きが変わった所で
誰も困らない。そもそもバグは仕様ではないのだから。
578デフォルトの名無しさん
2014/09/21(日) 13:51:42.60ID:C0Gh49Ld579デフォルトの名無しさん
2014/09/21(日) 15:34:48.90ID:4aXz2u5s ホント現実をみてないな
クソコードの影にクソ仕様書あり
仕様が網羅されていないクソ仕様書、そしてあってるのかあってないのかもわからんクソソース
そして、仕様を完全把握しているものは不在(いない)
コードを読みやすくする?直す?どーやってなおすんだよ正しい仕様不明なのに
手を入れなければ責任問題は自分にはかからない
正式に仕事として認可されるまでは、さわらずほっとく。こんなのが大量なんだ現実は
まともな仕様書を作るやつは、まともなプログラムも書いている。でもそれは修正等々なんて必要のないソース
リファクタリングの対象となるソースは、前者のクソコード、クソ仕様書のほうだ。正解が不明なのにどうやって直すんだ
クソコードの影にクソ仕様書あり
仕様が網羅されていないクソ仕様書、そしてあってるのかあってないのかもわからんクソソース
そして、仕様を完全把握しているものは不在(いない)
コードを読みやすくする?直す?どーやってなおすんだよ正しい仕様不明なのに
手を入れなければ責任問題は自分にはかからない
正式に仕事として認可されるまでは、さわらずほっとく。こんなのが大量なんだ現実は
まともな仕様書を作るやつは、まともなプログラムも書いている。でもそれは修正等々なんて必要のないソース
リファクタリングの対象となるソースは、前者のクソコード、クソ仕様書のほうだ。正解が不明なのにどうやって直すんだ
580デフォルトの名無しさん
2014/09/21(日) 16:39:44.45ID:48QWsy10581デフォルトの名無しさん
2014/09/21(日) 16:40:37.43ID:48QWsy10 > コードを読みやすくする?直す?どーやってなおすんだよ正しい仕様不明なのに
それは、正しい仕様がなければ、
現在のコードの動きを仕様と考えればいいだけ。
それは、正しい仕様がなければ、
現在のコードの動きを仕様と考えればいいだけ。
582デフォルトの名無しさん
2014/09/21(日) 16:53:43.27ID:4aXz2u5s583デフォルトの名無しさん
2014/09/21(日) 16:54:11.17ID:Ep6XnQTS 開発手法が根本からおかしい
リファクタリング以前の問題
リファクタリング以前の問題
584デフォルトの名無しさん
2014/09/21(日) 16:55:08.58ID:4aXz2u5s585デフォルトの名無しさん
2014/09/21(日) 17:12:48.09ID:48QWsy10586デフォルトの名無しさん
2014/09/21(日) 17:14:26.03ID:48QWsy10 >>582
> 句読点のない文章みたいに処理の区切りがまったくないような文体で書かれたソースなんぞ誰が手をつけるか
でも、バグがあったら直さないといけないし、
仕様変更、機能追加があったら、手を付けないといけないよね?
> 句読点のない文章みたいに処理の区切りがまったくないような文体で書かれたソースなんぞ誰が手をつけるか
でも、バグがあったら直さないといけないし、
仕様変更、機能追加があったら、手を付けないといけないよね?
587デフォルトの名無しさん
2014/09/21(日) 17:24:56.25ID:SqCSMf85 うちのソースコードはほとんどが綺麗だから
句読点のない文章みたいに処理の区切りがまったくないような文体で書かれたソース
なんてほとんど無いよ。
そんな汚いソースがたくさんある所は、
手をつける箇所=リファクタリングするべき場所でしょう。
句読点のない文章みたいに処理の区切りがまったくないような文体で書かれたソース
なんてほとんど無いよ。
そんな汚いソースがたくさんある所は、
手をつける箇所=リファクタリングするべき場所でしょう。
588デフォルトの名無しさん
2014/09/21(日) 17:25:48.01ID:J4CuFh4O この板はガセネタをもとにした煽り合いのスレしかないみたいだな
・××と言われているが本当は○○
・こんなことも知らないの?
これが2ちゃんクヲリチーだな
・××と言われているが本当は○○
・こんなことも知らないの?
これが2ちゃんクヲリチーだな
589デフォルトの名無しさん
2014/09/21(日) 19:17:45.62ID:4aXz2u5s >>585
作ってあげるよ、クソ仕様書
機能:
俺の心の中にあるいい塩梅で、業務を遂行する処理
以上
これは極端に書いたが、冗談抜きで口頭で仕様をやりとりしたのか
いっさい、仕様書に、当該機能部分の記載がない。
作ってあげるよ、クソ仕様書
機能:
俺の心の中にあるいい塩梅で、業務を遂行する処理
以上
これは極端に書いたが、冗談抜きで口頭で仕様をやりとりしたのか
いっさい、仕様書に、当該機能部分の記載がない。
590デフォルトの名無しさん
2014/09/21(日) 20:05:10.80ID:6N1L/uhm 嫌なら辞めれば良いのに
って思う
って思う
591デフォルトの名無しさん
2014/09/21(日) 20:10:42.85ID:qWzZkk5b >>590
どっちにたいして言ってるのかわからんよ、その文では
クソシステムが嫌と言ってる人に言ってるのか、
リファクタリングwをしないやつはだめだって言ってるやつに言ってるのか
どっちにも解釈できる
どっちにたいして言ってるのかわからんよ、その文では
クソシステムが嫌と言ってる人に言ってるのか、
リファクタリングwをしないやつはだめだって言ってるやつに言ってるのか
どっちにも解釈できる
592デフォルトの名無しさん
2014/09/21(日) 21:44:29.99ID:5OzBoJXn クソソース1万ステップ読まなくていいようにするためにリファクタリングするんじゃないか
593デフォルトの名無しさん
2014/09/21(日) 21:45:48.38ID:9ZybMmhl マーチン・フラウアーのリファクタリング本てruby版とjava版て言語が違うだけで内容は重複してるの?
それとも別の内容が多いから両方買った方がいい?
それとも別の内容が多いから両方買った方がいい?
594デフォルトの名無しさん
2014/09/21(日) 22:48:11.16ID:SqCSMf85595デフォルトの名無しさん
2014/09/21(日) 23:01:02.38ID:SqCSMf85596デフォルトの名無しさん
2014/09/22(月) 01:14:38.68ID:8ME10ieO リファクタリング真理教か原理主義かしらんがウゼエ
597デフォルトの名無しさん
2014/09/22(月) 06:10:50.31ID:mZl8n2a+598デフォルトの名無しさん
2014/09/22(月) 06:22:02.06ID:VFEp2OOw Aさんがリファクタリングしました。
Bさんが読みましたAさんのリファクタリングがクソです。Bさん直しました。
Cさん見ましたBさんのソースコードクソです。Cさん直しました。
永遠と、、、、、
個人の力量、感性によって結果が大きく作用してしまうものは、学術的工学的な基本がないからどうにもならない。
Bさんが読みましたAさんのリファクタリングがクソです。Bさん直しました。
Cさん見ましたBさんのソースコードクソです。Cさん直しました。
永遠と、、、、、
個人の力量、感性によって結果が大きく作用してしまうものは、学術的工学的な基本がないからどうにもならない。
599デフォルトの名無しさん
2014/09/22(月) 08:09:32.93ID:mZl8n2a+ 普通は、
Aさんがリファクタリングしました。
Bさんが読みましたAさんのリファクタリングがクソです。Bさん直しました。
Cさん見ましたBさんのソースコードクソです。Cさん直しました。
Cさんリファクタリング大勝利!!! ・・・でしょ?
Aさんがリファクタリングしました。
Bさんが読みましたAさんのリファクタリングがクソです。Bさん直しました。
Cさん見ましたBさんのソースコードクソです。Cさん直しました。
Cさんリファクタリング大勝利!!! ・・・でしょ?
600デフォルトの名無しさん
2014/09/22(月) 08:34:50.21ID:mZl8n2a+ Class レイザラモンFoo Extends Object
Public サルinit(void);
Public クエリFoo(String SQL文はクソ);
Protect ないですFoo(void);
Destractor システム緊急停止オペ呼んでくさいFoo(void);
End Class
こんな仕様のクラスを業務システムのスーパークラスにしてあとは全て継承
という仕様は誰だって疑問を持つと思うんだが、そこを直すのがリファクタリング。
リファクタリング大勝利!!!
Public サルinit(void);
Public クエリFoo(String SQL文はクソ);
Protect ないですFoo(void);
Destractor システム緊急停止オペ呼んでくさいFoo(void);
End Class
こんな仕様のクラスを業務システムのスーパークラスにしてあとは全て継承
という仕様は誰だって疑問を持つと思うんだが、そこを直すのがリファクタリング。
リファクタリング大勝利!!!
601デフォルトの名無しさん
2014/09/22(月) 11:41:29.79ID:y9q7ZqSb602デフォルトの名無しさん
2014/09/22(月) 12:15:28.88ID:4rgv3mOC603デフォルトの名無しさん
2014/09/22(月) 13:03:42.75ID:BRLO2XpR 優れたの方コードを採用すればいいだけだろ。
604デフォルトの名無しさん
2014/09/22(月) 13:12:39.94ID:8Zrs8f+9 個人の知識の違いによってソースの見え方が違うからな
アホが天才のコードを見ると何じゃこりゃってなるし、逆もまた然り
アホが天才のコードを見ると何じゃこりゃってなるし、逆もまた然り
605デフォルトの名無しさん
2014/09/22(月) 13:51:20.75ID:BRLO2XpR 知識って・・・そんなの一機能5分もあれば
知らない状態から理解できるだろ。
どんだけ素人なんだ?
つーか知らない時点で、判断できないわけで
議論からはお役御免なわけだが
知らない状態から理解できるだろ。
どんだけ素人なんだ?
つーか知らない時点で、判断できないわけで
議論からはお役御免なわけだが
606デフォルトの名無しさん
2014/09/22(月) 13:53:03.85ID:BRLO2XpR それに、知らないなら何をやっているか
理解できないわけで、リファクタリング出来るわけがないな。
理解できないわけで、リファクタリング出来るわけがないな。
607デフォルトの名無しさん
2014/09/22(月) 17:49:10.78ID:8HtrhTyn おれはやらな〜いw
これでリファクタリングは崩壊するwww
これでリファクタリングは崩壊するwww
608デフォルトの名無しさん
2014/09/22(月) 19:42:14.76ID:OvpzlkOF アホみたいな話だが結局>>598が真理だよな。
リファクタリングする人は、自分のコードもいずれリファクタリングされる事を受けいれねばならん。
リファクタリングする人は、自分のコードもいずれリファクタリングされる事を受けいれねばならん。
609デフォルトの名無しさん
2014/09/22(月) 20:32:19.28ID:0yRqeFm6 リファクタリングはただのコード修正と思ってもらってかまわない
610デフォルトの名無しさん
2014/09/22(月) 20:44:04.47ID:jEzIKioA リファクタリングするよ派はここでなにしてんの?しないよ派とじゃれあってるのが楽しいの?
やり合ってる本人は議論してるつもりかもしれないけど、外から見てるとしょうもなさすぎてww
やり合ってる本人は議論してるつもりかもしれないけど、外から見てるとしょうもなさすぎてww
611デフォルトの名無しさん
2014/09/22(月) 21:11:07.07ID:BRLO2XpR612デフォルトの名無しさん
2014/09/22(月) 22:45:37.55ID:rMqlGcxC >>1が考えるようなことは誰もが考えてる。
その結果、新しい開発言語が生まれているということを理解できないのか?
過去、多くの開発手法・開発スタイルが提唱されたが、
社会に受け入れられたものは、「理論」と「それを強制する新しい開発言語」が常にワンセットになっていた
「超絶スパゲッティコード」を少しでもまともにするために
原因の「goto」を取り除く方法として、「gotoレス」という理論とともに「3つの基本構造を使うようにした、構造化プログラミング言語」が生まれ
「グローバル変数の多用がデバッグを困難にする問題」を少しでもまともにするために
原因の「不必要にメモリをどこからでもアクセスできる状態」を取り除くため「カプセル化」が提唱され、オブジェクト指向言語に組み込まれ
等々・・・・。
何を持ってリファクタリングといいたいのかわからないが、汚いコードを綺麗なコードになおすというなら。
リファクタリングが成功したといえる、最終のコードはどのようなものなのか。具体的に示す必要がある。
プログラムとして存在するあらゆるコードパターンに対応した、綺麗なコードを示してくれ。
それを明示できないうちは>>598の意見が正しい。
個人の感性次第なら、汚いコードと周りは言うが書いているプログラマにとってはリファクタリング不要な綺麗なコードと判断するだろう。
先人達は、その時代のプログラムコードの問題を考えた。
その答えが、理論を具現化した新プログラミング言語の開発だ。
>>1はしのごのいうなら、リファクタリング後の形になるプログラミング言語を生み出せ。
どんな馬鹿でも、その綺麗なプログラミングになるプログラミング言語を。
その結果、新しい開発言語が生まれているということを理解できないのか?
過去、多くの開発手法・開発スタイルが提唱されたが、
社会に受け入れられたものは、「理論」と「それを強制する新しい開発言語」が常にワンセットになっていた
「超絶スパゲッティコード」を少しでもまともにするために
原因の「goto」を取り除く方法として、「gotoレス」という理論とともに「3つの基本構造を使うようにした、構造化プログラミング言語」が生まれ
「グローバル変数の多用がデバッグを困難にする問題」を少しでもまともにするために
原因の「不必要にメモリをどこからでもアクセスできる状態」を取り除くため「カプセル化」が提唱され、オブジェクト指向言語に組み込まれ
等々・・・・。
何を持ってリファクタリングといいたいのかわからないが、汚いコードを綺麗なコードになおすというなら。
リファクタリングが成功したといえる、最終のコードはどのようなものなのか。具体的に示す必要がある。
プログラムとして存在するあらゆるコードパターンに対応した、綺麗なコードを示してくれ。
それを明示できないうちは>>598の意見が正しい。
個人の感性次第なら、汚いコードと周りは言うが書いているプログラマにとってはリファクタリング不要な綺麗なコードと判断するだろう。
先人達は、その時代のプログラムコードの問題を考えた。
その答えが、理論を具現化した新プログラミング言語の開発だ。
>>1はしのごのいうなら、リファクタリング後の形になるプログラミング言語を生み出せ。
どんな馬鹿でも、その綺麗なプログラミングになるプログラミング言語を。
613デフォルトの名無しさん
2014/09/22(月) 22:52:50.40ID:BRLO2XpR >612
新しい言語というから何かと思えば
gotoレスとかカプセル化とか
全然新しくないじゃないか。
30年ぐらい前の話だろ。
新しい言語というから何かと思えば
gotoレスとかカプセル化とか
全然新しくないじゃないか。
30年ぐらい前の話だろ。
614デフォルトの名無しさん
2014/09/22(月) 22:55:02.43ID:BRLO2XpR > 何を持ってリファクタリングといいたいのかわからないが
無知は勉強すればいいだけ。恥ずかしいことなんて無いよ!
>>423, >>426あたりを読むといいよ。
リファクタリングの誤用
ttp://capsctrl.que.jp/kdmsnr/wiki/bliki/?RefactoringMalapropism
リファクタリングの境界線
ttp://capsctrl.que.jp/kdmsnr/wiki/bliki/?RefactoringBoundary
インタフェースの変更はリファクタリングか
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?IsChangingInterfacesRefactoring
> 答えは簡単――インタフェースの変更はリファクタリングだ。
未知のバグフィックスはリファクタリングか?
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?IsFixingAnUnknownBugRefactoring
> 私はリファクタリングと呼べると思う。 バグを含んだ振る舞いを知らなかった(あるいは気にしなかった)わけだから、
> これは「外部から見たときの振る舞い」ではないのだ。 たとえバグに気付いていたとしても、
> それが気にするようなバグでなければ、 リファクタリングと呼んでもよいと思う。
最適化はリファクタリングか?
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?IsOptimizationRefactoring
> 最適化とリファクタリングはどちらも変化を伴うものだが(なかには最適化かつリファクタリングとなる変化もあるが)、
> 両者は別物だと私は考えている。なぜなら、両者の目的が異なるからである。リファクタリングは、
> コードを理解しやすくするためである。最適化は、プログラムを速くするためである。
宣言の順序変更はリファクタリングか?
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?IsDeclarationOrderingRefactoring
> 宣言(Javaで言うメソッドやフィールド)の順序を変更することは、リファクタリングと呼べるのか?
> リファクタリングの定義で、 「理解や修正が簡単になるように」というフレーズを使った。
> 宣言部分を変更すると、理解や修正が簡単になるのだろうか? 私は、そういう場合もあると思う。
> ソフトウェアの内部構造を変更しないという点が紛らわしいかもしれない。 リネームしても実行内容は変化しない。
無知は勉強すればいいだけ。恥ずかしいことなんて無いよ!
>>423, >>426あたりを読むといいよ。
リファクタリングの誤用
ttp://capsctrl.que.jp/kdmsnr/wiki/bliki/?RefactoringMalapropism
リファクタリングの境界線
ttp://capsctrl.que.jp/kdmsnr/wiki/bliki/?RefactoringBoundary
インタフェースの変更はリファクタリングか
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?IsChangingInterfacesRefactoring
> 答えは簡単――インタフェースの変更はリファクタリングだ。
未知のバグフィックスはリファクタリングか?
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?IsFixingAnUnknownBugRefactoring
> 私はリファクタリングと呼べると思う。 バグを含んだ振る舞いを知らなかった(あるいは気にしなかった)わけだから、
> これは「外部から見たときの振る舞い」ではないのだ。 たとえバグに気付いていたとしても、
> それが気にするようなバグでなければ、 リファクタリングと呼んでもよいと思う。
最適化はリファクタリングか?
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?IsOptimizationRefactoring
> 最適化とリファクタリングはどちらも変化を伴うものだが(なかには最適化かつリファクタリングとなる変化もあるが)、
> 両者は別物だと私は考えている。なぜなら、両者の目的が異なるからである。リファクタリングは、
> コードを理解しやすくするためである。最適化は、プログラムを速くするためである。
宣言の順序変更はリファクタリングか?
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?IsDeclarationOrderingRefactoring
> 宣言(Javaで言うメソッドやフィールド)の順序を変更することは、リファクタリングと呼べるのか?
> リファクタリングの定義で、 「理解や修正が簡単になるように」というフレーズを使った。
> 宣言部分を変更すると、理解や修正が簡単になるのだろうか? 私は、そういう場合もあると思う。
> ソフトウェアの内部構造を変更しないという点が紛らわしいかもしれない。 リネームしても実行内容は変化しない。
615デフォルトの名無しさん
2014/09/22(月) 22:58:10.11ID:BRLO2XpR >>614を見ればわかるけど、
リファクタリングを
汚いコードを綺麗なコードに直すこと
とは書いてないんだよね。
なんでこんなふうに間違って解釈してるのかな?
それって、汚いコードが(あなたの所に)多いってだけで、
リファクタリング以前の解決するべき問題だよね?
リファクタリングとはソフトウェアの変化とともに、
あるべき設計に安全に変化させる方法のこと。
リファクタリングを
汚いコードを綺麗なコードに直すこと
とは書いてないんだよね。
なんでこんなふうに間違って解釈してるのかな?
それって、汚いコードが(あなたの所に)多いってだけで、
リファクタリング以前の解決するべき問題だよね?
リファクタリングとはソフトウェアの変化とともに、
あるべき設計に安全に変化させる方法のこと。
616デフォルトの名無しさん
2014/09/22(月) 23:03:19.25ID:rMqlGcxC617デフォルトの名無しさん
2014/09/22(月) 23:04:10.78ID:rMqlGcxC618デフォルトの名無しさん
2014/09/22(月) 23:24:14.03ID:OvpzlkOF >>615
(お前にとっての)あるべき設計だな
(お前にとっての)あるべき設計だな
619デフォルトの名無しさん
2014/09/23(火) 07:26:06.78ID:0ZBouPvA このスレも
↓のスレも
ソースコード品質検定試験が世の中には必要だ
http://kanae.2ch.net/test/read.cgi/prog/1411354584/
同一人物が立てたスレだと自白しました。
そして、人物の正体も自白しました。
>5 名前:仕様書無しさん[sage] 投稿日:2014/09/22(月) 17:48:09.54
>無職Windowsしか使えないリファクタリング馬鹿がまたスレたてやがった
>
>6 名前:仕様書無しさん[sage] 投稿日:2014/09/22(月) 21:31:27.59
>>>5
>たてたね。それで?
>
>なにか言い返したいことがあるのなら
>いっていいだぜ?w
>
>7 自分:仕様書無しさん[sage] 投稿日:2014/09/23(火) 07:22:55.61
>>>5
>自然と、「無職」「Windowsしか使えない」「ム板でリファクタリングスレ」を立てたことを認めているww
さすが、無職でWindowsしか使えないだけはあるw
だれも同調してくれないww 説得力もカリスマ性も感じないからなw
↓のスレも
ソースコード品質検定試験が世の中には必要だ
http://kanae.2ch.net/test/read.cgi/prog/1411354584/
同一人物が立てたスレだと自白しました。
そして、人物の正体も自白しました。
>5 名前:仕様書無しさん[sage] 投稿日:2014/09/22(月) 17:48:09.54
>無職Windowsしか使えないリファクタリング馬鹿がまたスレたてやがった
>
>6 名前:仕様書無しさん[sage] 投稿日:2014/09/22(月) 21:31:27.59
>>>5
>たてたね。それで?
>
>なにか言い返したいことがあるのなら
>いっていいだぜ?w
>
>7 自分:仕様書無しさん[sage] 投稿日:2014/09/23(火) 07:22:55.61
>>>5
>自然と、「無職」「Windowsしか使えない」「ム板でリファクタリングスレ」を立てたことを認めているww
さすが、無職でWindowsしか使えないだけはあるw
だれも同調してくれないww 説得力もカリスマ性も感じないからなw
620デフォルトの名無しさん
2014/09/23(火) 12:26:15.85ID:aBTcR7ac621デフォルトの名無しさん
2014/09/23(火) 16:29:00.40ID:wrw0I4Vi まだ無職が語るの?
恥ずかしいからお前の社会的立場を恥ずかしくない位置にリファクタリングしてからプログラムのリファクタリングを語れよw
恥ずかしいからお前の社会的立場を恥ずかしくない位置にリファクタリングしてからプログラムのリファクタリングを語れよw
622デフォルトの名無しさん
2014/09/23(火) 16:45:57.11ID:wrw0I4Vi しかし、この超売り手市場なのに就職出来ないって、相当無能なんだな
623デフォルトの名無しさん
2014/09/24(水) 17:32:35.84ID:iVFJW3Cg いやぁ馬鹿スレを止めてくれてありがたい
完全に自爆だけどな(笑
完全に自爆だけどな(笑
624デフォルトの名無しさん
2014/09/25(木) 08:00:06.24ID:2gwTj0ip え?
マジで!?いろいろ見て回ってきたけど
ゲーム作りたくてプログラマになったけど、就職できず、Windowsしか扱えないので、派遣でコボルやるもクビになって無職
なの?!( ;´Д`)
そんな身分で、現役のプロのプログラマにプログラム、プログラミングにたついて講釈たれてたの?
ε-(´∀`; )
どんだけ、恥知らずというか、身の程知らずというか、小保方というか。
空いた口が塞がらないわ(^◇^;)
マジでお前自信をリファクタしろよ(・Д・)ノ
マジで!?いろいろ見て回ってきたけど
ゲーム作りたくてプログラマになったけど、就職できず、Windowsしか扱えないので、派遣でコボルやるもクビになって無職
なの?!( ;´Д`)
そんな身分で、現役のプロのプログラマにプログラム、プログラミングにたついて講釈たれてたの?
ε-(´∀`; )
どんだけ、恥知らずというか、身の程知らずというか、小保方というか。
空いた口が塞がらないわ(^◇^;)
マジでお前自信をリファクタしろよ(・Д・)ノ
625デフォルトの名無しさん
2014/09/25(木) 12:50:36.36ID:fB0UYRRr という妄想を書く人って、
実社会では自分が落ちこぼれなのかな。
実社会では自分が落ちこぼれなのかな。
626デフォルトの名無しさん
2014/09/25(木) 17:28:15.70ID:oxMb9EZk 不用意に自供しといて妄想とかw
627デフォルトの名無しさん
2014/10/05(日) 23:35:12.83ID:gYmu4Dn/ リファクタリング良さそうなんだけど、いろいろ疑問点があります
上で内部的インターフェイスの変更もリファクタリングに含まれるという話がありましたが
インターフェイスを作り変えたら対応するテストケースも作り変える必要がありますよね?
その場合、リファクタリング内でテストケースに手を付けて
インターフェイスとテストケースを同時に作ってしまっていいものでしょうか?
外部的インターフェイスに指定したテストケースのみパスすれば
問題ないと考えるのでしょうか?
上で内部的インターフェイスの変更もリファクタリングに含まれるという話がありましたが
インターフェイスを作り変えたら対応するテストケースも作り変える必要がありますよね?
その場合、リファクタリング内でテストケースに手を付けて
インターフェイスとテストケースを同時に作ってしまっていいものでしょうか?
外部的インターフェイスに指定したテストケースのみパスすれば
問題ないと考えるのでしょうか?
628デフォルトの名無しさん
2014/10/07(火) 01:36:41.20ID:0pCKu6Fp テストケースは全部通さないと駄目だよ
人間の書くテストが全部網羅してるとも限らないから
テストの穴を突いた部分が他所で影響してるかもしれない
原則としてよほどの事でもない限り一度リリースしたら手をつけないがベスト
リファクタリングなんて幻想だからやめなさい
人間の書くテストが全部網羅してるとも限らないから
テストの穴を突いた部分が他所で影響してるかもしれない
原則としてよほどの事でもない限り一度リリースしたら手をつけないがベスト
リファクタリングなんて幻想だからやめなさい
629デフォルトの名無しさん
2014/10/07(火) 09:53:16.20ID:pP8u07NL インタフェースを作り替えたらテストも必要
というかテストできない・しづらいインタフェースを作ったらあかん
というかテストできない・しづらいインタフェースを作ったらあかん
630627
2014/10/07(火) 20:19:23.95ID:J1sG3mPW >>628
> テストケースは全部通さないと駄目だよ
内部動作をリファクタリングする場合はそうだと思います。
> 人間の書くテストが全部網羅してるとも限らないから
> テストの穴を突いた部分が他所で影響してるかもしれない
100%のテストはないけど、十分捕捉率の高いテストと
十分機能変更の余地が低いリファクタリング手法の組み合わせで
実用になるというのがリファクタリングの主張ですよね。
内部動作のリファクタリグだけならそれでいいんですけど、
ただやっぱりインターフェイスの拡張・取捨選択も
やりたくて、そういう場合どうすればいいのかなと。
> 原則としてよほどの事でもない限り一度リリースしたら手をつけないがベスト
一度リリースしたっきりでソースのことを忘れ去っても
大丈夫なプロジェクトならそうかもしれませんが、
リファクタリングがターゲットにするプロジェクトは
リリースした後に(リファクタリングするしないに関わらず)
何度も手を付けてメンテナンスすることが要求されるような
継続性のあるプロジェクトではないでしょうか?
> リファクタリングなんて幻想だからやめなさい
上手くいくと言っている人も多いので、
安易に幻想だと断定もできないように思います。
幻想だとはっきり納得出来たらやめます。
> テストケースは全部通さないと駄目だよ
内部動作をリファクタリングする場合はそうだと思います。
> 人間の書くテストが全部網羅してるとも限らないから
> テストの穴を突いた部分が他所で影響してるかもしれない
100%のテストはないけど、十分捕捉率の高いテストと
十分機能変更の余地が低いリファクタリング手法の組み合わせで
実用になるというのがリファクタリングの主張ですよね。
内部動作のリファクタリグだけならそれでいいんですけど、
ただやっぱりインターフェイスの拡張・取捨選択も
やりたくて、そういう場合どうすればいいのかなと。
> 原則としてよほどの事でもない限り一度リリースしたら手をつけないがベスト
一度リリースしたっきりでソースのことを忘れ去っても
大丈夫なプロジェクトならそうかもしれませんが、
リファクタリングがターゲットにするプロジェクトは
リリースした後に(リファクタリングするしないに関わらず)
何度も手を付けてメンテナンスすることが要求されるような
継続性のあるプロジェクトではないでしょうか?
> リファクタリングなんて幻想だからやめなさい
上手くいくと言っている人も多いので、
安易に幻想だと断定もできないように思います。
幻想だとはっきり納得出来たらやめます。
631627
2014/10/07(火) 20:20:02.46ID:J1sG3mPW >>629
> インタフェースを作り替えたらテストも必要
> というかテストできない・しづらいインタフェースを作ったらあかん
テストしづらくはないのですが、
例えば1つ1つの public メソッドにテストを書いていたら
とても作業が時間内に終わらないというような、
時間がかかってしまう的な問題です。
でも public メソッドはクラスの持つインターフェイスだから
テストは必要ってことですか?
> インタフェースを作り替えたらテストも必要
> というかテストできない・しづらいインタフェースを作ったらあかん
テストしづらくはないのですが、
例えば1つ1つの public メソッドにテストを書いていたら
とても作業が時間内に終わらないというような、
時間がかかってしまう的な問題です。
でも public メソッドはクラスの持つインターフェイスだから
テストは必要ってことですか?
632デフォルトの名無しさん
2014/10/08(水) 15:43:43.04ID:AP5j0Y8f ただ、そのテストのメンテナンス、テストを減らしたり、改善したり、
そういう話はまだ多くないんですね。(例えば)テストが増えてくると、
全部のテスト通すのに 3 時間かかったりとか、 テストの量自体が問題になってくる。
またテストが実装に深く依存してて、リファクタリングしたらテストが
ばーっと真っ赤*49になっちゃうからやめようみたいな話とか。
テストをたくさん書けば良いってものじゃないんですよ。
設計の改善を前後で担保するためのテストだったはずなのに、
設計改善の邪魔をしてるんじゃないか? と。
テストが変更のコストを一定にするという夢を俺たちは見てやってきたのに、
テストが増えると変更コストが上がっていないかい? という問題に対してどう戦うか、
それが今の TDD の主戦場だと思っています。
http://www.ogis-ri.co.jp/otc/hiroba/others/OORing/interview43.html
そういう話はまだ多くないんですね。(例えば)テストが増えてくると、
全部のテスト通すのに 3 時間かかったりとか、 テストの量自体が問題になってくる。
またテストが実装に深く依存してて、リファクタリングしたらテストが
ばーっと真っ赤*49になっちゃうからやめようみたいな話とか。
テストをたくさん書けば良いってものじゃないんですよ。
設計の改善を前後で担保するためのテストだったはずなのに、
設計改善の邪魔をしてるんじゃないか? と。
テストが変更のコストを一定にするという夢を俺たちは見てやってきたのに、
テストが増えると変更コストが上がっていないかい? という問題に対してどう戦うか、
それが今の TDD の主戦場だと思っています。
http://www.ogis-ri.co.jp/otc/hiroba/others/OORing/interview43.html
633デフォルトの名無しさん
2014/10/08(水) 17:47:03.08ID:No3WRPQd >>632
下手なテストを書くとそうなるって話ですね。
下手なテストを書くとそうなるって話ですね。
634デフォルトの名無しさん
2014/10/08(水) 23:56:17.82ID:UFd7lKdk よくわからんが何かの言い訳に使えそうな
635デフォルトの名無しさん
2014/10/09(木) 10:21:37.01ID:IFg54I5e テストできない・しづらいインタフェースを作ったらあかん
636デフォルトの名無しさん
2014/10/09(木) 20:44:29.80ID:zf/NUEdS ボタン一個一発こそ至高
637デフォルトの名無しさん
2014/10/12(日) 07:13:20.02ID:jwvcB2bY >>627
有能な人材だけで構成されているなら可能
でも有能な人材はそもそもそんなコードを書かない
つまり、現実では実現不能ということ。
よく考えてよ。
ゲーム会社への就職も面接すらいけずに終わり、他の会社も全滅、登録派遣しかなく
ようやく派遣されたCOBOLでクビになり、
自分は有能だと思い込んでいるケドWindowsしか使えない
無職の人の立てたスレだよ?
有能な人材だけで構成されているなら可能
でも有能な人材はそもそもそんなコードを書かない
つまり、現実では実現不能ということ。
よく考えてよ。
ゲーム会社への就職も面接すらいけずに終わり、他の会社も全滅、登録派遣しかなく
ようやく派遣されたCOBOLでクビになり、
自分は有能だと思い込んでいるケドWindowsしか使えない
無職の人の立てたスレだよ?
638デフォルトの名無しさん
2014/10/12(日) 13:23:31.01ID:08qsWg0a >>637
返信ありがとうございます
> よく考えてよ。
誰が立てたかでなく、何を言っているかで判断しています
> 有能な人材だけで構成されているなら可能
627 では可能かどうかという聞き方はしていないのですが、
627 のどの部分を指して可能と言われているのでしょうか?
> でも有能な人材はそもそもそんなコードを書かない
これも、627 ではどんなコードかに関して言及していないと
思うのですが、そんなコードというのは何を指しているのでしょうか?
返信ありがとうございます
> よく考えてよ。
誰が立てたかでなく、何を言っているかで判断しています
> 有能な人材だけで構成されているなら可能
627 では可能かどうかという聞き方はしていないのですが、
627 のどの部分を指して可能と言われているのでしょうか?
> でも有能な人材はそもそもそんなコードを書かない
これも、627 ではどんなコードかに関して言及していないと
思うのですが、そんなコードというのは何を指しているのでしょうか?
639デフォルトの名無しさん
2014/10/12(日) 14:51:47.69ID:jjrAIsW+ 世の中に汚いコードが溢れてるってことだなw
リファクタリングは汚いコードを直すことじゃないよ。
コードは修正するたびに(≒機能追加)
どんどんコードが増えていく。
素人集団は、コードの既存部分を直さずに追加するだけで終わらせる。
有能な人材はそもそも汚いコードを書かないというが、
それは、有能な人材は、リファクタリングをしながら機能追加していくから
汚いコードに"成長しない" ということを意味する。
リファクタリングは汚いコードを直すことじゃないよ。
コードは修正するたびに(≒機能追加)
どんどんコードが増えていく。
素人集団は、コードの既存部分を直さずに追加するだけで終わらせる。
有能な人材はそもそも汚いコードを書かないというが、
それは、有能な人材は、リファクタリングをしながら機能追加していくから
汚いコードに"成長しない" ということを意味する。
640デフォルトの名無しさん
2014/10/12(日) 15:32:46.02ID:08qsWg0a 設計がまずかったり場当たり的に組んでしまったりして
いったん汚いコードになってしまったらもう手遅れですか?
汚いコードをインターフェイスを変えつつ
改善していきたいと思っているのですが
いったん汚いコードになってしまったらもう手遅れですか?
汚いコードをインターフェイスを変えつつ
改善していきたいと思っているのですが
641デフォルトの名無しさん
2014/10/12(日) 16:01:06.81ID:jjrAIsW+642デフォルトの名無しさん
2014/10/13(月) 12:31:48.66ID:dRUWRUgv コードが汚いとか騒ぐやつは総じて低スキル
643デフォルトの名無しさん
2014/10/13(月) 17:48:27.91ID:qVWnI3+v644デフォルトの名無しさん
2014/10/13(月) 21:27:10.38ID:mV3fqIh9 >>643
ではリファクタリグしたとしても汚いコードは汚いままなのですね
ではリファクタリグしたとしても汚いコードは汚いままなのですね
645デフォルトの名無しさん
2014/10/13(月) 22:25:07.42ID:0J6BIdC+646デフォルトの名無しさん
2014/10/13(月) 22:41:00.86ID:mV3fqIh9647デフォルトの名無しさん
2014/10/13(月) 22:43:13.35ID:zulUt3IX >>646
まず何が綺麗で何が汚いかを勉強することだね。
それを知らないことにはどうしようもない。
逆に知ってしまえば、具体的な質問ができるようになるよ
汚い××というコードを、綺麗な○○に変化させるには
どうしたらいいでしょうか?って
そういう質問なら答えがちゃんと言える。
君の今のレベルの質問は曖昧すぎて答えがない。
まず何が綺麗で何が汚いかを勉強することだね。
それを知らないことにはどうしようもない。
逆に知ってしまえば、具体的な質問ができるようになるよ
汚い××というコードを、綺麗な○○に変化させるには
どうしたらいいでしょうか?って
そういう質問なら答えがちゃんと言える。
君の今のレベルの質問は曖昧すぎて答えがない。
648デフォルトの名無しさん
2014/11/22(土) 11:07:28.63ID:jhiCG8Ku649デフォルトの名無しさん
2014/11/22(土) 16:04:31.14ID:6qlI/h48650デフォルトの名無しさん
2014/11/25(火) 12:34:50.30ID:aVHf4ing 世の中なんでも使い捨てで楽な方に向かってるのに
プログラミングの世界は古いものを大事に使いたがる不思議
怠惰なフログラマこそ率先してコードを使い捨てにすべきじゃね?
プログラミングの世界は古いものを大事に使いたがる不思議
怠惰なフログラマこそ率先してコードを使い捨てにすべきじゃね?
651デフォルトの名無しさん
2014/11/25(火) 23:55:42.35ID:n1duvf0w >>650
使い捨てる理由の大半はどんなにうまく保存しようとしても劣化し続けるから。
ソフトウェアはそういう物理的制約から書いたものはずっと同じまま残り続ける。
うまくバックアップや環境が残りさえすれば半永久的に使い続けることが出来る
わけだから、怠惰であればあるほどそういう資産を積み上げていくんだよ。
使い捨てる理由の大半はどんなにうまく保存しようとしても劣化し続けるから。
ソフトウェアはそういう物理的制約から書いたものはずっと同じまま残り続ける。
うまくバックアップや環境が残りさえすれば半永久的に使い続けることが出来る
わけだから、怠惰であればあるほどそういう資産を積み上げていくんだよ。
652デフォルトの名無しさん
2014/11/26(水) 12:34:55.88ID:1UftDcOY >>651
バカだな劣化するからリファクタリングとかいう下らない事が流行るんだぞ
バカだな劣化するからリファクタリングとかいう下らない事が流行るんだぞ
653デフォルトの名無しさん
2014/11/26(水) 19:48:43.25ID:0BkZoqqN 再利用って考え方がそもそもコストが高いんだよ
もんじゅとか例に挙げなくてもリサイクルって金掛かるだけで
利権で儲けるしかない仕組みだって判るよね
もんじゅとか例に挙げなくてもリサイクルって金掛かるだけで
利権で儲けるしかない仕組みだって判るよね
654デフォルトの名無しさん
2014/11/27(木) 00:55:26.29ID:dibuY+0s 再利用のコストに関しては単純に何回再利用するかで変わってくるから、
コストの高い再利用をしているお前が悪いんじゃないのとしか言えない。
リファクタリングも同じで、2度と手を入れないような部分や新規プロジェクトを
渡り歩くような人には不要なもの。 ただ昨今のアジャイル開発とか呼ばれている
ものだと、ある程度の期間は修正や追加が必要になってくる。 無計画に接ぎ木を
してわけの分からないキメラを作るより、ある程度剪定して理解できる範疇に
修める必要があるよねっていうのがリファクタリング。
コストの高い再利用をしているお前が悪いんじゃないのとしか言えない。
リファクタリングも同じで、2度と手を入れないような部分や新規プロジェクトを
渡り歩くような人には不要なもの。 ただ昨今のアジャイル開発とか呼ばれている
ものだと、ある程度の期間は修正や追加が必要になってくる。 無計画に接ぎ木を
してわけの分からないキメラを作るより、ある程度剪定して理解できる範疇に
修める必要があるよねっていうのがリファクタリング。
655デフォルトの名無しさん
2014/11/27(木) 12:34:12.35ID:jH/Xs+Kz656デフォルトの名無しさん
2014/11/27(木) 12:41:38.96ID:r+bsdp9/ >>655
> ソフトウェアの再利用もその都度コストがかかるんだが?
> 普通は回数に比例してコストが増加するぞ
再利用するために何らかの変更が必要なら、そのときだけコストがかかるが、
以降はコストかからんだろ。
> ソフトウェアの再利用もその都度コストがかかるんだが?
> 普通は回数に比例してコストが増加するぞ
再利用するために何らかの変更が必要なら、そのときだけコストがかかるが、
以降はコストかからんだろ。
657デフォルトの名無しさん
2014/11/27(木) 23:29:56.27ID:kUiumU8R 再利用前提で作ろうとしてる時点で余計なコトスがかかっとるわい
658デフォルトの名無しさん
2014/11/28(金) 02:38:41.57ID:LrjKc3Ws 古くなった原発の再利用
659デフォルトの名無しさん
2014/11/28(金) 04:18:59.87ID:MN0ISYZx 再利用性や拡張性というのは、将来のことだから仕様外。
仕様外だからプログラミングの対象外。
おわり。
仕様外だからプログラミングの対象外。
おわり。
660デフォルトの名無しさん
2014/11/28(金) 07:48:17.97ID:IEXuWLi+ 再利用と考えるからいけない。
モジュール化。
適切なモジュール化は、再利用出来るだけじゃなく、
複雑度も減ってバグも少なくなる。
適切なモジュール化が出来ない奴が
再利用にコストがかかるとか
コードが再利用できないとか言う。
モジュール化。
適切なモジュール化は、再利用出来るだけじゃなく、
複雑度も減ってバグも少なくなる。
適切なモジュール化が出来ない奴が
再利用にコストがかかるとか
コードが再利用できないとか言う。
661デフォルトの名無しさん
2014/11/28(金) 12:44:59.78ID:X4M4SbHd >>660
それは再利用じゃないよ
機能を小さく保つ事で、本来の目的である一次利用出来る範囲が広がるだけだ
それを便宜的に「再利用しやすい」などと表現してる訳だ
ソフトウェア本来の目的とは異なる本当の意味での再利用にはコストがかかるんだよ
それは再利用じゃないよ
機能を小さく保つ事で、本来の目的である一次利用出来る範囲が広がるだけだ
それを便宜的に「再利用しやすい」などと表現してる訳だ
ソフトウェア本来の目的とは異なる本当の意味での再利用にはコストがかかるんだよ
662デフォルトの名無しさん
2014/11/28(金) 17:41:36.95ID:03S1h8mH663デフォルトの名無しさん
2014/11/29(土) 01:59:23.82ID:TbFyYdBX664デフォルトの名無しさん
2014/11/29(土) 13:13:20.77ID:U5ivpV2C 再利用じゃなくて流用と言えばいいのに
665デフォルトの名無しさん
2014/11/29(土) 14:17:24.97ID:v2v5Wnkr 全く修正しないで使うのが再利用。
コピーして修正して使うのが流用
流用をすると、AとA'というコードが生まれなんで二つに分かれてるの?
違いはなんんあの?と結局両方を読まないといけなくなる。
流用するたびに読むべきコードがどんどん増えていく。
はてに一つを修正するともう片方の修正を忘れるとか。
なので全く修正しないで使う「再利用」でないと意味が無い。
全く修正しないで使えるのだからコピーする必要はなくなる
コピーして修正して使うのが流用
流用をすると、AとA'というコードが生まれなんで二つに分かれてるの?
違いはなんんあの?と結局両方を読まないといけなくなる。
流用するたびに読むべきコードがどんどん増えていく。
はてに一つを修正するともう片方の修正を忘れるとか。
なので全く修正しないで使う「再利用」でないと意味が無い。
全く修正しないで使えるのだからコピーする必要はなくなる
666デフォルトの名無しさん
2014/11/29(土) 14:46:23.56ID:A4nuaoXO 流用元から流用先がどこにどれだけあるかは基本的に分からない。
流用元に何かバグがあって修正する必要があった場合に論理的に考えると
流用先も直しておいた方がいいor直す必要がある。 ただ流用先を全て特定
することは難しく、特に流用先で動くように変数名とか変えてあると確実に
漏れる。バグじゃなくても何か修正追加したいと思った時の事を考えると
コピペをばらまくより関数で再利用するほうがいいよねってなる。
ただ人間は欲深いもので1つの関数にあれもこれも詰め込んで破綻させる
奴が出てきたりする。こういうのを見て、関数なんて作らなくてコピペでいい
だろって奴が出てきて無限ループする。
流用元に何かバグがあって修正する必要があった場合に論理的に考えると
流用先も直しておいた方がいいor直す必要がある。 ただ流用先を全て特定
することは難しく、特に流用先で動くように変数名とか変えてあると確実に
漏れる。バグじゃなくても何か修正追加したいと思った時の事を考えると
コピペをばらまくより関数で再利用するほうがいいよねってなる。
ただ人間は欲深いもので1つの関数にあれもこれも詰め込んで破綻させる
奴が出てきたりする。こういうのを見て、関数なんて作らなくてコピペでいい
だろって奴が出てきて無限ループする。
667デフォルトの名無しさん
2014/11/29(土) 22:16:12.25ID:UEas1JmU 頑張って同じ機能がすでにあるか探して、
あったらあまりいいコードじゃなくても正しく仕様を満たすからそれ使って
散々気をつけてんのに誰かが変更しやがる
あったらあまりいいコードじゃなくても正しく仕様を満たすからそれ使って
散々気をつけてんのに誰かが変更しやがる
668デフォルトの名無しさん
2014/11/30(日) 12:24:33.02ID:NxMP0P1A リファクタリングと言う名の正義
669デフォルトの名無しさん
2014/12/05(金) 19:01:54.53ID:cszTTiF/ >>668
同意、正義を振りかざす曲者
同意、正義を振りかざす曲者
670デフォルトの名無しさん
2014/12/21(日) 11:54:37.04ID:LOCxTeYe >>661,660
>ソフトウェア本来の目的とは異なる本当の意味での再利用にはコストがかかるんだよ
アプリ内でのモジュールの共通化(=アプリに特化したフレームワーク、ライブラリ
の抽出)と、どんなプロジェクトでも使えるようにフレームワークやライブラリーを
汎用化するのは似て非なるものだと思う。
>ソフトウェア本来の目的とは異なる本当の意味での再利用にはコストがかかるんだよ
アプリ内でのモジュールの共通化(=アプリに特化したフレームワーク、ライブラリ
の抽出)と、どんなプロジェクトでも使えるようにフレームワークやライブラリーを
汎用化するのは似て非なるものだと思う。
671デフォルトの名無しさん
2015/02/15(日) 22:12:39.01ID:wyXhgSeE >>1-1000
テスト
テスト
672デフォルトの名無しさん
2016/03/27(日) 21:55:32.43ID:N7IGtcj3 どのタイミングでやったら工数に影響を与えずにできるの?
673デフォルトの名無しさん
2016/09/10(土) 20:12:17.64ID:/nLYt7vC みんな、言い負かされないようにリファクタリングを定義してるから、本当の目的がなんなのかぼやけちゃってるよね。
保守性(機能変更のし易さ)と速度の向上
リファクタリングの目的はこれでしょ。
それが必要ならリファクタリングすればいいし、将来的な機能変更もなく速度にもとくに問題がないなのら、どんなに汚いコードであっても下手にいじる必要はないよね。
むろん、個人で作った(使ってる)プログラムならリファクタリングするかしないかはその人の勝手だけど。
保守性(機能変更のし易さ)と速度の向上
リファクタリングの目的はこれでしょ。
それが必要ならリファクタリングすればいいし、将来的な機能変更もなく速度にもとくに問題がないなのら、どんなに汚いコードであっても下手にいじる必要はないよね。
むろん、個人で作った(使ってる)プログラムならリファクタリングするかしないかはその人の勝手だけど。
674デフォルトの名無しさん
2016/11/02(水) 19:22:35.91ID:5cFgMElw >>673
次の変更がきてから変更すればいいじゃない?
次の変更がきてから変更すればいいじゃない?
675デフォルトの名無しさん
2016/11/11(金) 18:20:08.17ID:cgCFsvxz なるほど
676デフォルトの名無しさん
2017/02/06(月) 05:50:15.98ID:ZR9n4VuA 大抵の趣味人はリファクタリングなんかせずに垂れ流しだろ
677デフォルトの名無しさん
2017/02/06(月) 06:14:33.50ID:gKoTGA+M 趣味としてのリファクタリングも結構面白いけど
678デフォルトの名無しさん
2017/02/06(月) 06:41:48.30ID:gKoTGA+M あとwikiから
"Code refactoring is the process of restructuring existing computer code―changing the factoring―without changing its external behavior. "
リファクタリングとは既存のコードを再構成する工程であり、
そのコードの外的な振る舞いを変えずに
問題の細分化(factoringを意訳)を変えることである。
だってさ、こんなスレよりよっぽどわかりやすいや
"Code refactoring is the process of restructuring existing computer code―changing the factoring―without changing its external behavior. "
リファクタリングとは既存のコードを再構成する工程であり、
そのコードの外的な振る舞いを変えずに
問題の細分化(factoringを意訳)を変えることである。
だってさ、こんなスレよりよっぽどわかりやすいや
679デフォルトの名無しさん
2017/02/06(月) 06:56:02.14ID:cswrm9tC リファクタリングにはユニットテスト必須だよな
680デフォルトの名無しさん
2017/02/06(月) 12:26:12.33ID:I8OzMN90 ユニットが再編成されたコードの外的な振る舞いをテストする
という意味ではユニットテストはその目的を果たしてないけどな
という意味ではユニットテストはその目的を果たしてないけどな
681デフォルトの名無しさん
2017/02/06(月) 13:37:16.68ID:2jscAFeG うちの会社の糞プロジェクトはリファクタしてことでバグ生んで大炎上してたな
682デフォルトの名無しさん
2017/02/06(月) 16:24:54.25ID:gWijZw93 >>680
外的な振る舞いを変えないのがリファクタリングだろ
外的な振る舞いを変えないのがリファクタリングだろ
683デフォルトの名無しさん
2017/02/06(月) 20:52:46.36ID:De1q4r3Z >>682
なんだ?だからテストしなくても良いとか言いたいのか?
なんだ?だからテストしなくても良いとか言いたいのか?
684デフォルトの名無しさん
2017/02/06(月) 21:26:39.16ID:cswrm9tC685デフォルトの名無しさん
2017/02/06(月) 21:43:37.79ID:De1q4r3Z686デフォルトの名無しさん
2017/02/06(月) 22:00:46.99ID:w4i0A8ue 分子構造が再構築された全ての細胞の働きがもとそれと1つも変わらないならそれは再構築前と同じ生物になるのではないか
という理屈
という理屈
687デフォルトの名無しさん
2017/02/06(月) 22:00:51.21ID:eyaDYQgE688デフォルトの名無しさん
2017/02/07(火) 11:38:03.93ID:pecoNgwz >>687
設計に近いレベルの変更というのがどういうものを指すのか良くわからんが、E2Eテストやシステムテストが必要になるコード変更はリファクタリングとは言わないでしょ。
設計に近いレベルの変更というのがどういうものを指すのか良くわからんが、E2Eテストやシステムテストが必要になるコード変更はリファクタリングとは言わないでしょ。
689デフォルトの名無しさん
2017/02/07(火) 11:39:08.61ID:qLX8GhSK えっ!?
690デフォルトの名無しさん
2017/02/07(火) 12:21:09.75ID:TOEOKA4e >>688
むしろその規模のリファクタリングでなければコーダーのオナニー以上の意味がないくらいなのだが
むしろその規模のリファクタリングでなければコーダーのオナニー以上の意味がないくらいなのだが
691デフォルトの名無しさん
2017/02/07(火) 13:06:50.95ID:pecoNgwz >>690
規模の話はしていない。
1箇所数行のリファクタリングであろうが、1万箇所数万行のリファクタリングであろうが話は同じ。
E2Eテストやシステムテストでなければテストできないようなリファクタリングって、具体的にどんなものなんだ?
規模の話はしていない。
1箇所数行のリファクタリングであろうが、1万箇所数万行のリファクタリングであろうが話は同じ。
E2Eテストやシステムテストでなければテストできないようなリファクタリングって、具体的にどんなものなんだ?
692デフォルトの名無しさん
2017/02/07(火) 15:04:10.93ID:hq/hh9Cr >>691
リファクタリングで効率が良くなったとして、ユニットテストレベルで勝手にリリースして
本当は他のシステムで必要な協調動作パラメータの再調整が必要だったり
想定してたバッファがパンクする可能性とか想像できんの?
そもそもリファクタリング単体の案件なんてまず発生しないし
他の案件の一部にねじ込むってパターンがほとんどだから結局テストは全工程やる事になるけど
リファクタリングで効率が良くなったとして、ユニットテストレベルで勝手にリリースして
本当は他のシステムで必要な協調動作パラメータの再調整が必要だったり
想定してたバッファがパンクする可能性とか想像できんの?
そもそもリファクタリング単体の案件なんてまず発生しないし
他の案件の一部にねじ込むってパターンがほとんどだから結局テストは全工程やる事になるけど
693デフォルトの名無しさん
2017/02/07(火) 15:27:04.15ID:pecoNgwz694デフォルトの名無しさん
2017/02/07(火) 15:28:33.61ID:pecoNgwz695デフォルトの名無しさん
2017/02/07(火) 16:00:21.23ID:WNm+xswo >>692 のレベルが低すぎて笑う
696デフォルトの名無しさん
2017/02/07(火) 18:13:12.04ID:hq/hh9Cr レベル低くて結構だが
要件から漏れた設計なんて後からいくらでも見つかるのが現実
最初から設計や実装が完璧ならリリース後のコードに手を付けようなんて考えすら出てこないだろ
要件から漏れた設計なんて後からいくらでも見つかるのが現実
最初から設計や実装が完璧ならリリース後のコードに手を付けようなんて考えすら出てこないだろ
697デフォルトの名無しさん
2017/02/07(火) 18:17:09.92ID:i748zAYA ID:pecoNgwzがすごい小さい世界で生きていることだけはよくわかる
698デフォルトの名無しさん
2017/02/07(火) 20:26:46.11ID:hbaz0JGp スレタイ通りの人達
699デフォルトの名無しさん
2017/02/07(火) 21:49:17.94ID:6yEMM6pR >>691
> 1箇所数行のリファクタリングであろうが
君はこれで何がリファクターされると考えているのかね?
既存のコードを君好みのノーテーションに変える事をリファクタリングとは言わないのだよ
リファクタリングとはただのコード修正とは違うという意味
君分かってないよね
> 1箇所数行のリファクタリングであろうが
君はこれで何がリファクターされると考えているのかね?
既存のコードを君好みのノーテーションに変える事をリファクタリングとは言わないのだよ
リファクタリングとはただのコード修正とは違うという意味
君分かってないよね
700デフォルトの名無しさん
2017/02/07(火) 21:55:16.30ID:WNm+xswo っていう勘違いをここまで堂々と話してるところが2chだなぁと感じる
701デフォルトの名無しさん
2017/02/07(火) 21:58:23.39ID:S1oxUZhq702デフォルトの名無しさん
2017/02/07(火) 22:06:09.85ID:S1oxUZhq >>692
> リファクタリングで効率が良くなったとして、ユニットテストレベルで勝手にリリースして
> 本当は他のシステムで必要な協調動作パラメータの再調整が必要だったり
> 想定してたバッファがパンクする可能性とか想像できんの?
これリファクタリングと全く関係ないよね?
機能追加で便利になったとして、ユニットテストレベルで勝手にリリースして
本当は他のシステムで必要な協調動作パラメータの再調整が必要だったり
想定してたバッファがパンクする可能性とか想像できんの?
> リファクタリングで効率が良くなったとして、ユニットテストレベルで勝手にリリースして
> 本当は他のシステムで必要な協調動作パラメータの再調整が必要だったり
> 想定してたバッファがパンクする可能性とか想像できんの?
これリファクタリングと全く関係ないよね?
機能追加で便利になったとして、ユニットテストレベルで勝手にリリースして
本当は他のシステムで必要な協調動作パラメータの再調整が必要だったり
想定してたバッファがパンクする可能性とか想像できんの?
703デフォルトの名無しさん
2017/02/07(火) 22:10:27.76ID:WNm+xswo704デフォルトの名無しさん
2017/02/07(火) 22:11:07.79ID:S1oxUZhq >>692
> そもそもリファクタリング単体の案件なんてまず発生しないし
当たり前。何かの修正があるときに
適切な形に変えるのがリファクタリング
「何かの修正」が加わる前の時点での適切な設計と
「何かの修正」が加わった後の適切な設計は必ずしも同じではない
「何かの修正」を加えるときは、もし最初から「何かの修正」が存在したと
仮定した時の適切な設計も同時に実現しなければいけない
修正するたびに適切な設計から離れていく、修正するたびに
壊していくようなやり方は責任あるプロの仕事とはいえない
> 他の案件の一部にねじ込むってパターンがほとんどだから結局テストは全工程やる事になるけど
結局テストは全行程やるんだから、修正のたびにリファクタリングを加えてなんのもんだもない
> そもそもリファクタリング単体の案件なんてまず発生しないし
当たり前。何かの修正があるときに
適切な形に変えるのがリファクタリング
「何かの修正」が加わる前の時点での適切な設計と
「何かの修正」が加わった後の適切な設計は必ずしも同じではない
「何かの修正」を加えるときは、もし最初から「何かの修正」が存在したと
仮定した時の適切な設計も同時に実現しなければいけない
修正するたびに適切な設計から離れていく、修正するたびに
壊していくようなやり方は責任あるプロの仕事とはいえない
> 他の案件の一部にねじ込むってパターンがほとんどだから結局テストは全工程やる事になるけど
結局テストは全行程やるんだから、修正のたびにリファクタリングを加えてなんのもんだもない
705デフォルトの名無しさん
2017/02/07(火) 22:11:57.21ID:S1oxUZhq706デフォルトの名無しさん
2017/02/07(火) 22:21:19.34ID:NKjx6bYj >>705
実行ファイル一つならそうである可能性もあるけど、ライブラリだったらシステム全体ではないよね。言語関係ないとはそういうこと。
実行ファイル一つならそうである可能性もあるけど、ライブラリだったらシステム全体ではないよね。言語関係ないとはそういうこと。
707デフォルトの名無しさん
2017/02/07(火) 22:24:10.12ID:NKjx6bYj 勘違いさせたならすまんが、俺は別にリファクタリングにシステムテストとかが必要ないなんて思ってない。その一つとは別人。
708デフォルトの名無しさん
2017/02/07(火) 22:44:43.58ID:K2oda13o リファクタにE2Eテストがいらないというのはある意味ただしいんだよ
アジャイルにおけるリファクタなんかがまさにそう
自動テストありきでイテレーションに組み込まれる
ただリファクタにも色々あるよねって話
アジャイルにおけるリファクタなんかがまさにそう
自動テストありきでイテレーションに組み込まれる
ただリファクタにも色々あるよねって話
709デフォルトの名無しさん
2017/02/07(火) 22:53:25.47ID:hbaz0JGp リファクタリングの責任範囲はユニットテスト迄でシステムテストとかは機能の変更、追加、向上なんかの範囲だと思うけどね
この二つを混ぜてリファクタリングと呼んでる人が一定数いて話をややこしくしてる
もちろんリリース前には一通りテストはするけどそれはそれ。リファクタリングに必要なテストとは別物
この二つを混ぜてリファクタリングと呼んでる人が一定数いて話をややこしくしてる
もちろんリリース前には一通りテストはするけどそれはそれ。リファクタリングに必要なテストとは別物
710デフォルトの名無しさん
2017/02/07(火) 22:55:46.93ID:NKjx6bYj >>708
いやE2Eテストが自動化出来ないというわけでもないからちょっと違うくない?
リファクタリングにも色々あるよねというのには同意。
リファクタリングの対象を決めることは大事だよね。
システム全体をリファクタリングしようとしても成功率は低い。だからE2Eテストはいらない(システム全体を一度に変えようとすんな)と言いたい気持ちも解る。
いやE2Eテストが自動化出来ないというわけでもないからちょっと違うくない?
リファクタリングにも色々あるよねというのには同意。
リファクタリングの対象を決めることは大事だよね。
システム全体をリファクタリングしようとしても成功率は低い。だからE2Eテストはいらない(システム全体を一度に変えようとすんな)と言いたい気持ちも解る。
711デフォルトの名無しさん
2017/02/07(火) 22:57:24.46ID:6yEMM6pR712デフォルトの名無しさん
2017/02/07(火) 23:01:56.40ID:hbaz0JGp >>711
君が言いたいことは分かんないけど自分の言いたいことはわかってるよ
君が言いたいことは分かんないけど自分の言いたいことはわかってるよ
713デフォルトの名無しさん
2017/02/07(火) 23:08:35.66ID:6yEMM6pR >>712
いや分かってねえよお前w
既存のユニットテストが利用出来るようなコード修正は
お前のコードオナニー以外の何者でもない
お前はリファクタリングという正義を笠に着てコードオナニーをしているだけの
童貞コーダーにすぎないのだよ
いや分かってねえよお前w
既存のユニットテストが利用出来るようなコード修正は
お前のコードオナニー以外の何者でもない
お前はリファクタリングという正義を笠に着てコードオナニーをしているだけの
童貞コーダーにすぎないのだよ
714デフォルトの名無しさん
2017/02/07(火) 23:11:01.58ID:hbaz0JGp >>713
まさに混同してる人が話をややこしくしてる見本
まさに混同してる人が話をややこしくしてる見本
715デフォルトの名無しさん
2017/02/07(火) 23:16:01.53ID:S1oxUZhq >>706
何だその意味がない答えは?
> 実行ファイル一つならそうである可能性もあるけど、ライブラリだったらシステム全体ではないよね。言語関係ないとはそういうこと。
ライブラリだったらシステム全体ではないかもしれないけど、実行ファイル一つならそうである可能性もある
何だその意味がない答えは?
> 実行ファイル一つならそうである可能性もあるけど、ライブラリだったらシステム全体ではないよね。言語関係ないとはそういうこと。
ライブラリだったらシステム全体ではないかもしれないけど、実行ファイル一つならそうである可能性もある
716デフォルトの名無しさん
2017/02/07(火) 23:16:32.08ID:K2oda13o717デフォルトの名無しさん
2017/02/07(火) 23:17:49.44ID:S1oxUZhq718デフォルトの名無しさん
2017/02/07(火) 23:19:18.43ID:S1oxUZhq719デフォルトの名無しさん
2017/02/07(火) 23:22:44.32ID:K2oda13o720デフォルトの名無しさん
2017/02/07(火) 23:23:22.80ID:S1oxUZhq721デフォルトの名無しさん
2017/02/07(火) 23:23:38.10ID:6yEMM6pR722デフォルトの名無しさん
2017/02/07(火) 23:23:56.74ID:NKjx6bYj >>715
だから違う言語にしたというのと、システムテストをするというのは無関係だって話だよ。それだけ。
だから違う言語にしたというのと、システムテストをするというのは無関係だって話だよ。それだけ。
723デフォルトの名無しさん
2017/02/07(火) 23:25:16.66ID:NKjx6bYj ID:6yEMM6pR がまともなリファクタリングを語るのはもうギャグにしか見えない
724デフォルトの名無しさん
2017/02/07(火) 23:32:41.16ID:S1oxUZhq725デフォルトの名無しさん
2017/02/07(火) 23:37:57.69ID:hbaz0JGp >>717
そう言ってるつもりだけど?機能の変更までやったらシステムテストは必要だけどそれはリファクタリングの後の工程だよねってこと
そう言ってるつもりだけど?機能の変更までやったらシステムテストは必要だけどそれはリファクタリングの後の工程だよねってこと
726デフォルトの名無しさん
2017/02/07(火) 23:41:30.42ID:NKjx6bYj >>724
なんで?例えばC互換のABI作れる言語なんて山ほどあるけど(バイナリ作る言語ではほぼ必須機能だよね)
他にも内部の言語は変えたけどモジュールの外向きのラッパーは今までと同じ言語で書くというのもあるだろ
なんで?例えばC互換のABI作れる言語なんて山ほどあるけど(バイナリ作る言語ではほぼ必須機能だよね)
他にも内部の言語は変えたけどモジュールの外向きのラッパーは今までと同じ言語で書くというのもあるだろ
727デフォルトの名無しさん
2017/02/07(火) 23:46:26.22ID:6yEMM6pR >>725
お前頭沸いてんなw
そもそもテストの存在意義すら分かってねえじゃねえかw
ユニットテストは必要だけどシステムテストは必要ないなどと言う開発メソッドは
人類の歴史上でただの一度たりとも存在した事はねえよw
お前頭沸いてんなw
そもそもテストの存在意義すら分かってねえじゃねえかw
ユニットテストは必要だけどシステムテストは必要ないなどと言う開発メソッドは
人類の歴史上でただの一度たりとも存在した事はねえよw
728デフォルトの名無しさん
2017/02/07(火) 23:53:55.55ID:S1oxUZhq729デフォルトの名無しさん
2017/02/08(水) 00:00:15.94ID:xLLPMt9l730デフォルトの名無しさん
2017/02/08(水) 00:03:59.64ID:oBIe6m9v731デフォルトの名無しさん
2017/02/08(水) 00:16:01.83ID:ahyxJIg+ >>730←自分のオナニーが認められないから根本的な設計思想の変更までリファクタリングだと言いだす極端すぎるバカw
732デフォルトの名無しさん
2017/02/08(水) 00:37:41.54ID:E3hlYujb >>731
涙ふけよ
涙ふけよ
733デフォルトの名無しさん
2017/02/08(水) 03:53:58.44ID:/T6I+uKy バカをチンカス野郎と言い換えても
罵倒であることは変わりない
これがリファクタリングでしょ?
罵倒であることは変わりない
これがリファクタリングでしょ?
734デフォルトの名無しさん
2017/02/08(水) 04:18:31.48ID:TcrM+SWf 「外部からみた振る舞いを変えずに内部の設計を変更すること」がリファクタリング
ここでいう"外部"が関数の外部だったりシステムの外部だったりするけど、どっちもリファクタリング
リファクタリングを実施するのは設計〜製作工程
TDDなら製作と同時にユニットテストも当然走る
TDDであってもそうで無くても、製作後にテストの工程は当然流す
添削おなしゃす
ここでいう"外部"が関数の外部だったりシステムの外部だったりするけど、どっちもリファクタリング
リファクタリングを実施するのは設計〜製作工程
TDDなら製作と同時にユニットテストも当然走る
TDDであってもそうで無くても、製作後にテストの工程は当然流す
添削おなしゃす
735デフォルトの名無しさん
2017/02/08(水) 05:18:42.07ID:ahyxJIg+ >>734
> TDDなら製作と同時にユニットテストも当然走る
> TDDであってもそうで無くても、製作後にテストの工程は当然流す
これはリファクタリングの定義とは関係ないし
TDDでなくてもユニットテストは当然走る
> TDDなら製作と同時にユニットテストも当然走る
> TDDであってもそうで無くても、製作後にテストの工程は当然流す
これはリファクタリングの定義とは関係ないし
TDDでなくてもユニットテストは当然走る
736デフォルトの名無しさん
2017/02/08(水) 09:24:40.45ID:pGBkCxNv >>735
内省したのか?
内省したのか?
737デフォルトの名無しさん
2017/02/08(水) 09:39:48.42ID:nBuIwUQ3 >>735
>これはリファクタリングの定義とは関係ないし
そうだね
上の方でごっちゃにしてる人が居たからついでに書いたけど、語弊があったね
>TDDでなくてもユニットテストは当然走る
そうだね
製作と"同時に"走るかどうかだけの違いだと思う
>これはリファクタリングの定義とは関係ないし
そうだね
上の方でごっちゃにしてる人が居たからついでに書いたけど、語弊があったね
>TDDでなくてもユニットテストは当然走る
そうだね
製作と"同時に"走るかどうかだけの違いだと思う
738デフォルトの名無しさん
2017/02/08(水) 09:46:07.86ID:tJ+Jm8vl おれはTDDなんて大嫌いだ
あれ考えやつはアホ
あれ考えやつはアホ
739デフォルトの名無しさん
2017/02/08(水) 09:47:23.69ID:3ajnzt+4 >>738
どんなところが嫌いなん?
どんなところが嫌いなん?
740デフォルトの名無しさん
2017/02/08(水) 13:47:01.32ID:DMN235DC >>739
日本の社畜プログラマーは文系卒のゴミばっかりだから
日本のソフト業界は大量のゴミを一部の有能なエンジニアがコントロールすることでなんとか成立してる
ゴミにTDDなんてやらせたら有能な人間がリファクタリングに追われる羽目になる
日本の社畜プログラマーは文系卒のゴミばっかりだから
日本のソフト業界は大量のゴミを一部の有能なエンジニアがコントロールすることでなんとか成立してる
ゴミにTDDなんてやらせたら有能な人間がリファクタリングに追われる羽目になる
741デフォルトの名無しさん
2017/02/08(水) 14:21:20.51ID:HCDAsN67 >>740
どうせゴミが書いたコードなんて修正しなければならないんだから、テストがちゃんと書かれてる方がそれをパスするようにリファクタリング出来てマシだろ。
どうせゴミが書いたコードなんて修正しなければならないんだから、テストがちゃんと書かれてる方がそれをパスするようにリファクタリング出来てマシだろ。
742デフォルトの名無しさん
2017/02/08(水) 18:18:22.76ID:DMN235DC ゴミが書いたテストコードなんて使えるわけなかろう
時間の無駄
時間の無駄
743デフォルトの名無しさん
2017/02/08(水) 19:05:55.15ID:nBuIwUQ3 それTDD関係ないじゃん
744デフォルトの名無しさん
2017/02/08(水) 19:51:16.87ID:z7CrxHSJ テストコード真っ先にレビューしろよ
745デフォルトの名無しさん
2017/02/08(水) 19:54:03.00ID:ahyxJIg+ >>740←TDDもリファクタリングも分かってないゴミwこういうのがリファクタオナニストw
746デフォルトの名無しさん
2017/02/08(水) 20:10:43.25ID:9HGTCoP8 リファクタリング前提の開発なんて小規模開発以外はやるものじゃないね
747デフォルトの名無しさん
2017/02/08(水) 20:59:58.04ID:ahyxJIg+ それを言うならプロトタイピングだろw
なんだよリファクタリング前提てw
なんだよリファクタリング前提てw
748デフォルトの名無しさん
2017/02/08(水) 21:04:39.44ID:saIve44q >>747
オナニー君まだいたの?
オナニー君まだいたの?
749デフォルトの名無しさん
2017/02/08(水) 22:05:08.20ID:EqksEKaR >>746
> リファクタリング前提の開発なんて小規模開発以外はやるものじゃないね
設計に問題があるときどうしてるの?
問題があるっていうのは、最初の時点で間違っていた場合の他
機能追加などで最初の想定と変わってしまった場合
リファクタリングしないで、問題ある設計のまま
開発を続行するの?
大きい開発ほど最初に想定しなかった事態が起こるはずだけど?
> リファクタリング前提の開発なんて小規模開発以外はやるものじゃないね
設計に問題があるときどうしてるの?
問題があるっていうのは、最初の時点で間違っていた場合の他
機能追加などで最初の想定と変わってしまった場合
リファクタリングしないで、問題ある設計のまま
開発を続行するの?
大きい開発ほど最初に想定しなかった事態が起こるはずだけど?
750デフォルトの名無しさん
2017/02/08(水) 22:42:04.56ID:E3hlYujb751デフォルトの名無しさん
2017/02/08(水) 22:59:10.86ID:EqksEKaR >>750
> ただの上流への出戻り、やり直し、糞開発じゃないの
上流へ出戻りするのは良いんだが、
今のコードはどうするんだよ?捨てるのか?
リファクタリングというのは今のコードをよく知られている
手順を使って安全に(バグを入れることなく)変化させていくことをいう
リファクタリングの勉強をちゃんとした人なら、知っているはずだが
リファクタリングしないことを選択すべき理由として
作り直したほうが速い場合っていうのがある。
作り直したほうが早い場合はリファクタリングの哲学によって作りなおすが、
コードを安全に変化させたほうが早い場合は当然リファクタリングをする。
で最初の質問に戻るが、お前コードを修正したほうが早い場合でも
リファクタリングしないで、コードを捨てて作り直すって言ってんの?
それとも行き当たりばったりなただの修正を行ってバグ発生させるの?
> ただの上流への出戻り、やり直し、糞開発じゃないの
上流へ出戻りするのは良いんだが、
今のコードはどうするんだよ?捨てるのか?
リファクタリングというのは今のコードをよく知られている
手順を使って安全に(バグを入れることなく)変化させていくことをいう
リファクタリングの勉強をちゃんとした人なら、知っているはずだが
リファクタリングしないことを選択すべき理由として
作り直したほうが速い場合っていうのがある。
作り直したほうが早い場合はリファクタリングの哲学によって作りなおすが、
コードを安全に変化させたほうが早い場合は当然リファクタリングをする。
で最初の質問に戻るが、お前コードを修正したほうが早い場合でも
リファクタリングしないで、コードを捨てて作り直すって言ってんの?
それとも行き当たりばったりなただの修正を行ってバグ発生させるの?
752デフォルトの名無しさん
2017/02/08(水) 23:15:25.00ID:/T6I+uKy 現状それなりに動いているけど
将来性を考慮しての改善するのがリファクタリングでしょ
そもそもマトモに動いてないコードは問題外
将来性を考慮しての改善するのがリファクタリングでしょ
そもそもマトモに動いてないコードは問題外
753デフォルトの名無しさん
2017/02/08(水) 23:18:57.65ID:EqksEKaR > 将来性を考慮しての改善するのがリファクタリングでしょ
YAGNIに反するからそれは違う。
その将来が絶対来るというのなら話は別だけど
YAGNIに反するからそれは違う。
その将来が絶対来るというのなら話は別だけど
754デフォルトの名無しさん
2017/02/08(水) 23:22:55.16ID:E3hlYujb >>751
うーんw
いずれにしてもコードを捨てる捨てないに関わらず設計に問題があるものをその開発中に直すことをおれの界隈ではリファクタリングとは言わないね
おまえがそれをリファクタリングと言うのは自由なので好きにしてくれw
うーんw
いずれにしてもコードを捨てる捨てないに関わらず設計に問題があるものをその開発中に直すことをおれの界隈ではリファクタリングとは言わないね
おまえがそれをリファクタリングと言うのは自由なので好きにしてくれw
755デフォルトの名無しさん
2017/02/08(水) 23:27:19.72ID:EqksEKaR >>754
俺が言ってるんじゃなくて世間一般の定義。
っていうか開発中とそうでないのが別れてる時点で
お前、前時代的だしなぁ。
お前なら一日に何十回もデプロイするような
ウェブアプリをどうやって変化させていくんだ?
「俺にはできません。」ですかな?w
俺が言ってるんじゃなくて世間一般の定義。
っていうか開発中とそうでないのが別れてる時点で
お前、前時代的だしなぁ。
お前なら一日に何十回もデプロイするような
ウェブアプリをどうやって変化させていくんだ?
「俺にはできません。」ですかな?w
756デフォルトの名無しさん
2017/02/08(水) 23:31:13.83ID:EqksEKaR ちなみに、TDDでは最初にテストコードを書いて
それに通る最小限の実装を書く、その後リファクタリングを
行うというのを繰り返して開発するものので、
http://www.atmarkit.co.jp/ait/articles/1403/05/news035.html#025
> 開発中に直すことをおれの界隈ではリファクタリングとは言わないね
> 開発中に直すことをおれの界隈ではリファクタリングとは言わないね
というのはもぐり、無知レベルでしかないよ
それに通る最小限の実装を書く、その後リファクタリングを
行うというのを繰り返して開発するものので、
http://www.atmarkit.co.jp/ait/articles/1403/05/news035.html#025
> 開発中に直すことをおれの界隈ではリファクタリングとは言わないね
> 開発中に直すことをおれの界隈ではリファクタリングとは言わないね
というのはもぐり、無知レベルでしかないよ
757デフォルトの名無しさん
2017/02/08(水) 23:31:50.65ID:EqksEKaR758デフォルトの名無しさん
2017/02/08(水) 23:36:21.44ID:E3hlYujb うーんw
自ら話を反らしていくスタイルw
自ら話を反らしていくスタイルw
759デフォルトの名無しさん
2017/02/08(水) 23:38:20.99ID:EqksEKaR それてないじゃん?w
それてるっていうのなら、戻していいよ。君の手で
それてるっていうのなら、戻していいよ。君の手で
760デフォルトの名無しさん
2017/02/08(水) 23:53:10.75ID:E3hlYujb うーんww
そもそも少人数短期イテレーション開発におけるリファクタリングの話なんて始めからしてないのだがw
毎日デプロイするwebアプリ?そんな小さな話も全くしてないw
おまえが数億円契約の大規模開発をやったことないのはよくわかったw
そもそも少人数短期イテレーション開発におけるリファクタリングの話なんて始めからしてないのだがw
毎日デプロイするwebアプリ?そんな小さな話も全くしてないw
おまえが数億円契約の大規模開発をやったことないのはよくわかったw
761デフォルトの名無しさん
2017/02/09(木) 01:52:04.00ID:CNUBJX7I >>760
大規模だからって何の自慢になると思ってるんだ?
大規模は別にどうでもいいよ
どういった開発をしているのかが重要だろ。
いくら金がかかっているからって
ろくでもないやつばっかり集めて人海戦術で
ひたすら効率の悪い開発方法をしている?
だとしたら自慢どころか恥だよね。
もっと規模とか金以外に自慢できることないの?
大規模だからって何の自慢になると思ってるんだ?
大規模は別にどうでもいいよ
どういった開発をしているのかが重要だろ。
いくら金がかかっているからって
ろくでもないやつばっかり集めて人海戦術で
ひたすら効率の悪い開発方法をしている?
だとしたら自慢どころか恥だよね。
もっと規模とか金以外に自慢できることないの?
762デフォルトの名無しさん
2017/02/09(木) 04:01:02.59ID:VpXdxNl0763デフォルトの名無しさん
2017/02/09(木) 06:44:32.92ID:IOSaScxB リファクタリングに開発規模は関係ない
レガシーコードの山に頭抱えながら仕事するのも自由だし、好きにしてくれ
レガシーコードの山に頭抱えながら仕事するのも自由だし、好きにしてくれ
764デフォルトの名無しさん
2017/02/09(木) 07:38:20.57ID:W9c8fNbT 規模が大きい開発はクソコーダーがクソコードを量産してくるから俺様が随時コードを書き換えてやる
ってのが ID:E3hlYujb の主張
こういうリファクタオナニストに好きにさせてはいけない
ってのが ID:E3hlYujb の主張
こういうリファクタオナニストに好きにさせてはいけない
765デフォルトの名無しさん
2017/02/09(木) 08:20:04.14ID:2NAFiD3Z リファクタリングに必要な見積りを出してくれ
766デフォルトの名無しさん
2017/02/09(木) 11:43:47.05ID:qhoyYE05 >>765
これな
これな
767デフォルトの名無しさん
2017/02/09(木) 11:48:27.92ID:qhoyYE05768デフォルトの名無しさん
2017/02/09(木) 12:39:15.13ID:Ra4XvV1b 本当に大規模開発やったことあるのか?
新規で作って作りっぱなしだったのか?
新規で作って作りっぱなしだったのか?
769デフォルトの名無しさん
2017/02/09(木) 12:49:33.29ID:2OmAEiex770デフォルトの名無しさん
2017/02/09(木) 13:07:11.30ID:/WGpXuP3771デフォルトの名無しさん
2017/02/09(木) 13:11:02.24ID:/WGpXuP3772デフォルトの名無しさん
2017/02/09(木) 14:01:01.97ID:Ra4XvV1b じゃあ何のことをリファクタリングと呼んでるの?
773デフォルトの名無しさん
2017/02/09(木) 14:27:10.00ID:VpXdxNl0 そもそもファクタリングとは?
それをやり直すってことでしょ
それをやり直すってことでしょ
774デフォルトの名無しさん
2017/02/09(木) 15:01:34.48ID:Lyr2GEHi じゃあ逆に聞くけど設計から変えてUTのコードがそのまま使えるケースってどんなの?w
テストコードの書き換えが必要な改修は開発スキームとして事前にスケジュールに組み込まれるリファクタリングとは全く別ものだろww
テストコードの書き換えが必要な改修は開発スキームとして事前にスケジュールに組み込まれるリファクタリングとは全く別ものだろww
775デフォルトの名無しさん
2017/02/09(木) 15:14:26.88ID:lnTHGhne 別にリファクタリングは個別のユニットテストに影響ないレベルとは限らないでしょ。
リファクタリング対象によってそこは取捨選択すべき。
リファクタリング対象によってそこは取捨選択すべき。
776デフォルトの名無しさん
2017/02/09(木) 17:19:48.49ID:EPpoXydB 結論から言えば概念としてのリファクタリングは否定しないが、
リファクタリングのための工数なんて実際は取れないし、
そんな余計なリソースがあるなら他の事に回した方がいい
所詮暇を持て余した学生の戯言だよ
リファクタリングのための工数なんて実際は取れないし、
そんな余計なリソースがあるなら他の事に回した方がいい
所詮暇を持て余した学生の戯言だよ
777デフォルトの名無しさん
2017/02/09(木) 19:13:25.68ID:Lyr2GEHi778デフォルトの名無しさん
2017/02/09(木) 19:41:42.20ID:2NAFiD3Z プロジェクトの開始時にリファクタリングの見積も出してね
オーバーした分はお金出せないからね
オーバーした分はお金出せないからね
779デフォルトの名無しさん
2017/02/09(木) 20:10:08.12ID:VpXdxNl0 だからまずファクタリングの定義からしようか
それをやり直すってだけの話でしょ
それをやり直すってだけの話でしょ
780デフォルトの名無しさん
2017/02/09(木) 20:29:21.19ID:Ra4XvV1b 機能要件を満たすため
非機能要件を満たすため
オナニーするため
目的が何であろうとリファクタリングはリファクタリングですよ
非機能要件を満たすため
オナニーするため
目的が何であろうとリファクタリングはリファクタリングですよ
781デフォルトの名無しさん
2017/02/09(木) 21:09:00.44ID:DXVOdvHd オブジェクト指向でシステム開発するなら、リファクタリングは必須です。
クラスの設計、インターフェースの抽出・設計といったプログラミング前に
既に必要です。
クラスの設計、インターフェースの抽出・設計といったプログラミング前に
既に必要です。
782デフォルトの名無しさん
2017/02/09(木) 21:09:16.18ID:W9c8fNbT783デフォルトの名無しさん
2017/02/09(木) 21:29:45.22ID:l61bzEJu とりあえず動くものを新規で作って書き換える場合か、すでに動いているもので、修正が入りまくって汚くなったものを整理するくらいしかない。
自由にいじくりまわすのをリファクタリングとは言わない。
自由にいじくりまわすのをリファクタリングとは言わない。
784デフォルトの名無しさん
2017/02/09(木) 21:35:33.02ID:CNUBJX7I >>762
> while文よりfor文の方がわかりやすいね
> って書き直す事のどこが機能追加なの?
while文よりfor文の方がわかりやすいねとか
俺は言ってない。お前が言ったことだ。
お前は、機能追加じゃない例を自分で出して
自分で自分にツッコミを入れてるだけなんだが、
何がしたいの?
> while文よりfor文の方がわかりやすいね
> って書き直す事のどこが機能追加なの?
while文よりfor文の方がわかりやすいねとか
俺は言ってない。お前が言ったことだ。
お前は、機能追加じゃない例を自分で出して
自分で自分にツッコミを入れてるだけなんだが、
何がしたいの?
785デフォルトの名無しさん
2017/02/09(木) 21:39:19.62ID:lnTHGhne786デフォルトの名無しさん
2017/02/09(木) 21:42:53.34ID:CNUBJX7I >>777
> いやだから話の前提が>>749だから選択も糞もないくやらないといけない状況でそれをリファクタリングとはいわねーって
お前根本的に間違ってるんだわ。
まず先に最初の話のツッコミ漏れを補完しておくとだな
>>749で設計に問題があるときはどうするのか聞いた。
これは言い換えると「やり直し以外の選択の余地がない例」として上げたんだよ。
それなのに、>>750で
> ただの上流への出戻り、やり直し、糞開発じゃないの
やり直しすればいいじゃんって、お前アスペか?
やり直し以外の選択肢の余地がないことにたいして、
「やり直ししろ」ってそれは反論になってない
俺が意図してる答えだ
でな、リファクタリングかどうかっていうのは、手段なの
「糞もないくやらないといけない状況」のときに、
リファクタリングを使って、修正を行うのか
リファクタリングを使わずに、修正を行うかの話
ここまで言えば、お前が根本的に間違ってることが理解できるだろ?
お前はリファクタリングが手段であることをわかってない。どんな状況かはどうでもいい。
修正をするときに、どうやって修正するかの話だ。
お前は、リファクタリングしないで、行き当たりばったりで修正してバグを入れ込むんだろう?
俺はリファクタリング(わかりやすく言えばリファクタリングの本に書いてあるテクニック)を使って修正するんだよ
> いやだから話の前提が>>749だから選択も糞もないくやらないといけない状況でそれをリファクタリングとはいわねーって
お前根本的に間違ってるんだわ。
まず先に最初の話のツッコミ漏れを補完しておくとだな
>>749で設計に問題があるときはどうするのか聞いた。
これは言い換えると「やり直し以外の選択の余地がない例」として上げたんだよ。
それなのに、>>750で
> ただの上流への出戻り、やり直し、糞開発じゃないの
やり直しすればいいじゃんって、お前アスペか?
やり直し以外の選択肢の余地がないことにたいして、
「やり直ししろ」ってそれは反論になってない
俺が意図してる答えだ
でな、リファクタリングかどうかっていうのは、手段なの
「糞もないくやらないといけない状況」のときに、
リファクタリングを使って、修正を行うのか
リファクタリングを使わずに、修正を行うかの話
ここまで言えば、お前が根本的に間違ってることが理解できるだろ?
お前はリファクタリングが手段であることをわかってない。どんな状況かはどうでもいい。
修正をするときに、どうやって修正するかの話だ。
お前は、リファクタリングしないで、行き当たりばったりで修正してバグを入れ込むんだろう?
俺はリファクタリング(わかりやすく言えばリファクタリングの本に書いてあるテクニック)を使って修正するんだよ
787デフォルトの名無しさん
2017/02/09(木) 21:45:29.54ID:CNUBJX7I >>778
> プロジェクトの開始時にリファクタリングの見積も出してね
リファクタリングが手段であることを知れば、
「リファクタリング(手段)の見積もり」がおかしい言い方だとわかるだろう。
正しく言うならば「プロジェクトの開始時に修正の見積もだしてね」だ
修正にはバグだけじゃなくて仕様の追加や間違いによる修正も含まれる。
あとは修正するしかない状況で、行き当たりばったりで修正するか
リファクタリングで修正するかの違いなだけだ
> プロジェクトの開始時にリファクタリングの見積も出してね
リファクタリングが手段であることを知れば、
「リファクタリング(手段)の見積もり」がおかしい言い方だとわかるだろう。
正しく言うならば「プロジェクトの開始時に修正の見積もだしてね」だ
修正にはバグだけじゃなくて仕様の追加や間違いによる修正も含まれる。
あとは修正するしかない状況で、行き当たりばったりで修正するか
リファクタリングで修正するかの違いなだけだ
788デフォルトの名無しさん
2017/02/09(木) 21:46:27.58ID:CNUBJX7I789デフォルトの名無しさん
2017/02/09(木) 21:52:20.21ID:lnTHGhne790762
2017/02/09(木) 21:55:31.20ID:VpXdxNl0 >>784
ほらな
きちんと書いてないと
こうやって誤解されるわけだ
言いたかったのは
「現状while文で処理されていて問題ないけど
このケースはfor文の方がわかりやすいから書き直そう!」
どこに機能追加される余地があんの?
ほらな
きちんと書いてないと
こうやって誤解されるわけだ
言いたかったのは
「現状while文で処理されていて問題ないけど
このケースはfor文の方がわかりやすいから書き直そう!」
どこに機能追加される余地があんの?
791デフォルトの名無しさん
2017/02/09(木) 21:57:10.56ID:CNUBJX7I793デフォルトの名無しさん
2017/02/09(木) 21:58:44.70ID:CNUBJX7I >>753には while とか for の話は
明らかに書いてないけど?
明らかに書いてないけど?
794デフォルトの名無しさん
2017/02/09(木) 21:59:52.90ID:VpXdxNl0795デフォルトの名無しさん
2017/02/09(木) 22:01:15.92ID:CNUBJX7I YAGNIの話?
753 自分:デフォルトの名無しさん[sage] 投稿日:2017/02/08(水) 23:18:57.65 ID:EqksEKaR [3/7]
> 将来性を考慮しての改善するのがリファクタリングでしょ
YAGNIに反するからそれは違う。
これがどうfor やwhileと関係すんの?
753 自分:デフォルトの名無しさん[sage] 投稿日:2017/02/08(水) 23:18:57.65 ID:EqksEKaR [3/7]
> 将来性を考慮しての改善するのがリファクタリングでしょ
YAGNIに反するからそれは違う。
これがどうfor やwhileと関係すんの?
796デフォルトの名無しさん
2017/02/09(木) 22:02:47.10ID:lnTHGhne ほんまやね。レス辿って明らかにおかしいのを見つけたがら言ったけどそれforのレスにかすりもしなかったわ。すまん。
797デフォルトの名無しさん
2017/02/09(木) 22:06:33.30ID:Lyr2GEHi >>786
おまえ日本人か?w
おまえ日本人か?w
798デフォルトの名無しさん
2017/02/09(木) 22:08:07.52ID:CNUBJX7I 下手に勘違いされると困るから補足しておくと、
汚いから修正するってだけならYAGNIでやるべきではないが、
その部分を修正していたり読む必要があるならば、
いつ必要しているの?今でしょ?ってことで
今すぐ必要としていることなわけだから、
そこを修正するのはYAGNIではない
汚いから修正するってだけならYAGNIでやるべきではないが、
その部分を修正していたり読む必要があるならば、
いつ必要しているの?今でしょ?ってことで
今すぐ必要としていることなわけだから、
そこを修正するのはYAGNIではない
799デフォルトの名無しさん
2017/02/09(木) 22:25:26.99ID:lnTHGhne 読まなきゃ汚いと思わないんだから、矛盾してるような気がするけど。
必要ないのに汚いコードを読み始める酔狂な奴が居るとしたら別だけど。
必要ないのに汚いコードを読み始める酔狂な奴が居るとしたら別だけど。
800デフォルトの名無しさん
2017/02/09(木) 22:29:02.28ID:CNUBJX7I > 読まなきゃ汚いと思わないんだから
いや、コードメトリクスツールなどをつかえば
読まなくても、客観的に汚いとわかる
いや、コードメトリクスツールなどをつかえば
読まなくても、客観的に汚いとわかる
801デフォルトの名無しさん
2017/02/09(木) 22:29:15.76ID:Ra4XvV1b >>797
いつになったら何のことをリファクタリングと呼んでるか書いてくれるの?
いつになったら何のことをリファクタリングと呼んでるか書いてくれるの?
802デフォルトの名無しさん
2017/02/09(木) 22:34:05.44ID:Ra4XvV1b 汚いから直すってのもリファクタリングと呼ぶと思うけど、
汚いから直すってのは実際の開発現場じゃなかなか難しいと思うよ
その汚さが原因で性能が出ないとか、機能追加できない、し辛いって明確な理由があれば別だけどね
汚いから直すってのは実際の開発現場じゃなかなか難しいと思うよ
その汚さが原因で性能が出ないとか、機能追加できない、し辛いって明確な理由があれば別だけどね
803デフォルトの名無しさん
2017/02/09(木) 22:41:25.83ID:CNUBJX7I >>802
> その汚さが原因で性能が出ないとか、機能追加できない、し辛いって明確な理由があれば別だけどね
だから俺は聞いたんだよ?
そういうどうしても直さなければいけないときに
リファクタリングで安全に修正するのか?
それとも行き当たりばったりに修正してバグを入れるのか?って
> その汚さが原因で性能が出ないとか、機能追加できない、し辛いって明確な理由があれば別だけどね
だから俺は聞いたんだよ?
そういうどうしても直さなければいけないときに
リファクタリングで安全に修正するのか?
それとも行き当たりばったりに修正してバグを入れるのか?って
804デフォルトの名無しさん
2017/02/09(木) 22:43:53.46ID:Ra4XvV1b いや、俺に噛みつかれましても
805デフォルトの名無しさん
2017/02/09(木) 22:45:29.16ID:Lyr2GEHi806デフォルトの名無しさん
2017/02/09(木) 22:47:35.42ID:CNUBJX7I リファクタリングを行うタイミングを間違ってるんだよね
俺は何らかの機能修正とかでコードをいじるときに
関連するところを少しづつなおす
大抵が数行程度で10分もかからずに終わる
こまめに修正しないで、手遅れになってからやろうとするから
大規模になってしまって、別途工数が〜とかいう話になるんだよ。
手遅れになってしまったものを修正する工数がないからと
手遅れなコードのままさらにコードを追加するから
さらに手遅れになっていくんだろうが
俺は何らかの機能修正とかでコードをいじるときに
関連するところを少しづつなおす
大抵が数行程度で10分もかからずに終わる
こまめに修正しないで、手遅れになってからやろうとするから
大規模になってしまって、別途工数が〜とかいう話になるんだよ。
手遅れになってしまったものを修正する工数がないからと
手遅れなコードのままさらにコードを追加するから
さらに手遅れになっていくんだろうが
807デフォルトの名無しさん
2017/02/09(木) 22:59:39.83ID:lnTHGhne >>806
多分解ってると思うけどその言い方は誤解を生むと思うぞ。
リファクタリングと機能追加は明確に分けるべきで、リファクタリングして、テスト走らせて振る舞いが変わってない事を確認してから機能追加に入るべき
多分解ってると思うけどその言い方は誤解を生むと思うぞ。
リファクタリングと機能追加は明確に分けるべきで、リファクタリングして、テスト走らせて振る舞いが変わってない事を確認してから機能追加に入るべき
808デフォルトの名無しさん
2017/02/09(木) 23:07:28.39ID:Ra4XvV1b >>805
他人の否定はしてるけど、自分では何も言ってないよ君
他人の否定はしてるけど、自分では何も言ってないよ君
809デフォルトの名無しさん
2017/02/09(木) 23:07:33.91ID:2NAFiD3Z リファクタリング=上腕二頭筋
810デフォルトの名無しさん
2017/02/09(木) 23:12:13.46ID:CNUBJX7I >>807
うん。わかってる
> リファクタリングして、テスト走らせて振る舞いが変わってない事を確認してから機能追加に入るべき
どちらもあるよ。
機能追加してからリファクタリングする物の典型的な例がTDD
Red/Green/Refactor 通りの順番
うん。わかってる
> リファクタリングして、テスト走らせて振る舞いが変わってない事を確認してから機能追加に入るべき
どちらもあるよ。
機能追加してからリファクタリングする物の典型的な例がTDD
Red/Green/Refactor 通りの順番
811デフォルトの名無しさん
2017/02/10(金) 00:46:58.66ID:/WxwB06L どんどん別の手法がまざっていく洗脳馬鹿
812デフォルトの名無しさん
2017/02/10(金) 01:18:18.70ID:+KYQgfiL 別の手法ってなんの話だ?
813デフォルトの名無しさん
2017/02/10(金) 02:12:34.39ID:/WxwB06L >>810 のことだよ。
814デフォルトの名無しさん
2017/02/10(金) 02:25:45.27ID:+KYQgfiL > Red/Green/Refactor 通りの順番
これのことか?
Refactorはリファクタリングのことだよ
別の手法じゃなくて全く同じもの
これのことか?
Refactorはリファクタリングのことだよ
別の手法じゃなくて全く同じもの
815デフォルトの名無しさん
2017/02/10(金) 12:06:41.01ID:QRGeJWes 1.機能追加前にテスト書く
2.追加コード書く
3.テスト
4.ダメならテストに通るまでコードいじる
もしかしてこれもリファクタリング扱いしてるの?
2.追加コード書く
3.テスト
4.ダメならテストに通るまでコードいじる
もしかしてこれもリファクタリング扱いしてるの?
816デフォルトの名無しさん
2017/02/10(金) 12:38:04.04ID:+HewTgrG >>815
それはRed→Greenのところでしょ…
それはRed→Greenのところでしょ…
817デフォルトの名無しさん
2017/02/10(金) 21:26:25.38ID:1oBD+cZp 最近、特定のフラグ変数に関するif文の山をswitch構文に清書し直したんだけど、これってリファクタリング?
818デフォルトの名無しさん
2017/02/10(金) 21:34:25.32ID:/WxwB06L >>816
それさ、リファクタリングのいち定義であってリファクタリングではないから。
それさ、リファクタリングのいち定義であってリファクタリングではないから。
819デフォルトの名無しさん
2017/02/10(金) 21:35:50.89ID:/WxwB06L >>817
そのif文が変ならな。まともなif文なら書き換える必要がない。
そのif文が変ならな。まともなif文なら書き換える必要がない。
820デフォルトの名無しさん
2017/02/10(金) 21:37:35.22ID:/WxwB06L >>817
ただswitch文にすると仕様変更時にswitch文では対応できなくなる可能性があるので逆かもしれない。
ただswitch文にすると仕様変更時にswitch文では対応できなくなる可能性があるので逆かもしれない。
821デフォルトの名無しさん
2017/02/10(金) 21:42:51.54ID:+KYQgfiL >>817
確かにswitchでかけるならばifよりswitchの方が少しだけ見やすくなるけど、
大抵はリファクタリングにはならないよ
巨大なswitchもリファクタリングすべき対象となる
何がダメなのかというと比較の回数がifのときと変わってないから。
比較が多い=複雑なので、これは単なる書き方の違いでしかなくて
リファクタリングとまではいかない。重要なのは比較回数
じゃあどうすべきかというと、一番簡単な方法は
関数テーブル(ルックアップテーブル)を使う方法
大量のswitchでの比較が条件が揃えば0個にまで減る
確かにswitchでかけるならばifよりswitchの方が少しだけ見やすくなるけど、
大抵はリファクタリングにはならないよ
巨大なswitchもリファクタリングすべき対象となる
何がダメなのかというと比較の回数がifのときと変わってないから。
比較が多い=複雑なので、これは単なる書き方の違いでしかなくて
リファクタリングとまではいかない。重要なのは比較回数
じゃあどうすべきかというと、一番簡単な方法は
関数テーブル(ルックアップテーブル)を使う方法
大量のswitchでの比較が条件が揃えば0個にまで減る
822デフォルトの名無しさん
2017/02/10(金) 21:46:49.78ID:+KYQgfiL823デフォルトの名無しさん
2017/02/10(金) 21:57:11.80ID:+KYQgfiL * Green
1.機能追加前にテスト書く
* Red
2.追加コード書く
3.テスト
4.ダメならテストに通るまでコードいじる
5.テストに通った。やったー完成だ! ←ふざけんじゃないよ。なんだこのコピペだらけで無駄がばかりのクソコードは
* Green
6.リファクタリングする
7. 読みやすくなりました。←このコードならレビューする気になる。シンプルあとで読んだ人も理解しやすいだろう
8. 完成、1に戻る
1.機能追加前にテスト書く
* Red
2.追加コード書く
3.テスト
4.ダメならテストに通るまでコードいじる
5.テストに通った。やったー完成だ! ←ふざけんじゃないよ。なんだこのコピペだらけで無駄がばかりのクソコードは
* Green
6.リファクタリングする
7. 読みやすくなりました。←このコードならレビューする気になる。シンプルあとで読んだ人も理解しやすいだろう
8. 完成、1に戻る
824デフォルトの名無しさん
2017/02/10(金) 22:00:06.48ID:+KYQgfiL 現実にはこの5. テストに通っただけの状態で
完成としてしまうやつが多いんだよな。
そういうコードで許される環境っていうのは
コードレビューが行われていない。
コードを見ずにテストに通ればOKとしてしまう環境
そして向かうはデスマーチw
完成としてしまうやつが多いんだよな。
そういうコードで許される環境っていうのは
コードレビューが行われていない。
コードを見ずにテストに通ればOKとしてしまう環境
そして向かうはデスマーチw
825デフォルトの名無しさん
2017/02/10(金) 22:14:40.62ID:/WxwB06L 駄目だこりゃ。なんでそういう手順がリファクタリングなのか?
826デフォルトの名無しさん
2017/02/10(金) 22:20:09.64ID:+KYQgfiL >>825
お前が理解してないだけだよw
お前が理解してないだけだよw
827デフォルトの名無しさん
2017/02/10(金) 22:33:35.95ID:+HewTgrG Refactorとリファクタリングが同じ意味の言葉だってのが伝わってないのかも知れないな
828デフォルトの名無しさん
2017/02/10(金) 22:38:11.34ID:+KYQgfiL あ、はい間違えました
> 6.リファクタリングする
これじゃ リファクタリンギング ですねw
> 6.リファクタリングする
これじゃ リファクタリンギング ですねw
829デフォルトの名無しさん
2017/02/10(金) 22:59:58.18ID:/WxwB06L このスレってそもそも特定のリファクタリング作業のスレッドか。話がかみ合わないわけだ。
830デフォルトの名無しさん
2017/02/10(金) 23:48:55.17ID:+KYQgfiL 誰が特定のリファクタリング作業の話をしてるんだ?
誰がはどうでもいいや「特定の」ってどれのことだよ?
誰がはどうでもいいや「特定の」ってどれのことだよ?
831デフォルトの名無しさん
2017/02/11(土) 00:00:12.78ID:o1zrWG0U TDDの例出したからTDDに限定した話だって勘違いしてるんでしょ
832デフォルトの名無しさん
2017/02/11(土) 00:04:14.10ID:p/3UeWk3 >>829
「特定の」がなにか言うだけだよ。
お前がちゃんと考えて発言しているなら
簡単な質問なはずだが?
もっとも俺はお前が何も考えてないってことを
あぶり出すために「特定の」が何か聞いたんだけどなw
「特定の」がなにか言うだけだよ。
お前がちゃんと考えて発言しているなら
簡単な質問なはずだが?
もっとも俺はお前が何も考えてないってことを
あぶり出すために「特定の」が何か聞いたんだけどなw
833デフォルトの名無しさん
2017/02/21(火) 23:44:51.93ID:8I0Tfvzv お、あぶり出してるねえ
834デフォルトの名無しさん
2017/02/22(水) 01:09:25.60ID:TiP/fttU このスレの存在忘れてたわw
なんだ逃げたのかw
なんだ逃げたのかw
835デフォルトの名無しさん
2017/02/22(水) 12:59:43.56ID:zJ9IFSdf >>423 >>426 のやつNot Foundになってた
リファクタリングの誤用
https://bliki-ja.github.io/RefactoringMalapropism/
リファクタリングの境界線
[見当たらない]
インタフェースの変更はリファクタリングか
https://bliki-ja.github.io/IsChangingInterfacesRefactoring/
未知のバグフィックスはリファクタリングか?
https://bliki-ja.github.io/IsFixingAnUnknownBugRefactoring/
最適化はリファクタリングか?
https://bliki-ja.github.io/IsOptimizationRefactoring/
宣言の順序変更はリファクタリングか?
https://bliki-ja.github.io/IsDeclarationOrderingRefactoring/
リファクタリングの誤用
https://bliki-ja.github.io/RefactoringMalapropism/
リファクタリングの境界線
[見当たらない]
インタフェースの変更はリファクタリングか
https://bliki-ja.github.io/IsChangingInterfacesRefactoring/
未知のバグフィックスはリファクタリングか?
https://bliki-ja.github.io/IsFixingAnUnknownBugRefactoring/
最適化はリファクタリングか?
https://bliki-ja.github.io/IsOptimizationRefactoring/
宣言の順序変更はリファクタリングか?
https://bliki-ja.github.io/IsDeclarationOrderingRefactoring/
836デフォルトの名無しさん
2017/02/23(木) 18:03:32.56ID:G3lxPXWh 定義から定まってないからなリファクタリングって
いや、実在するのか?
いや、実在するのか?
837デフォルトの名無しさん
2017/02/23(木) 22:07:14.34ID:Ka1UMSVA 殆どの用語は定義なんか定まってないよ
数学でさえ、ある用語に対して数学ではこういう定義で
使いましょうと決めているだけ
数学でさえ、ある用語に対して数学ではこういう定義で
使いましょうと決めているだけ
838デフォルトの名無しさん
2017/02/26(日) 20:54:48.09ID:wNjUkQs3 ソースを組んだときと今とでチンコのポジションを若干変更した
これがリファクタリングである
これがリファクタリングである
839デフォルトの名無しさん
2017/02/26(日) 22:44:41.65ID:zOBszuQK 特定の統合開発環境のリファクタリング機能をリファクタリングだと言ってるやつはいなくなったなw
840デフォルトの名無しさん
2017/02/27(月) 01:14:12.49ID:IXzsv4Rb 俺の中では変数名の変更=リファクタリング
Visual Studioの機能名がそうだったから
Visual Studioの機能名がそうだったから
841デフォルトの名無しさん
2017/02/27(月) 01:49:20.76ID:j4xHFZFw 俺の中では、マーチン ファウラーのリファクタリング本(古い方)に
のっているのがリファクタリング
変数名の変更ももちろんのってる
後はそのリファクタリングをどれだけ簡単に
正確に行えるかの違い。
ローカルスコープ程度で済むものなら良いけど
スコープが広い部分のリファクタリングは手動でやるのは大変
それを自動的に間違いなく行える、静的型付け言語+IDEの力は偉大
のっているのがリファクタリング
変数名の変更ももちろんのってる
後はそのリファクタリングをどれだけ簡単に
正確に行えるかの違い。
ローカルスコープ程度で済むものなら良いけど
スコープが広い部分のリファクタリングは手動でやるのは大変
それを自動的に間違いなく行える、静的型付け言語+IDEの力は偉大
842デフォルトの名無しさん
2017/02/27(月) 02:49:09.61ID:Ydy+ZWkb あるスコープの中で外部から見た仕様を変えずに内部の設計を変えるのがリファクタリング
843デフォルトの名無しさん
2017/02/27(月) 17:22:25.25ID:IXzsv4Rb >>842
それではチンコのポジションも
それではチンコのポジションも
844デフォルトの名無しさん
2017/02/27(月) 22:10:17.46ID:Ydy+ZWkb チンポジ設計
845デフォルトの名無しさん
2018/05/23(水) 23:04:38.11ID:Au5e7VGg 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
K2FKH
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
K2FKH
846デフォルトの名無しさん
2018/07/04(水) 23:04:33.21ID:gFgZc5FG GKH
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国国営メディア「沖縄は日本ではない」… ★4 [BFU★]
- 小野田氏、”中国経済への依存“に警戒感 高市首相の国会答弁巡り [煮卵★]
- 【こんなの初めて…】民泊には既にキャンセルも 中国の渡航自粛で [ぐれ★]
- 台湾声明 「台湾は独立した主権国家、中国は台湾を統治したことがなく、中国は口出しする権利ない」 中国が高市首相に抗議で ★7 [お断り★]
- 日本が「世界で最も魅力的な国」1位に!✨「魅力的な都市」では東京が2位 「魅力的な地域」は北海道が7位に [煮卵★]
- 【サッカー】独占入手 最年長JリーガーにW不倫疑惑 『お風呂覗きたいんですが笑』LINE流出も… 慰謝料トラブルを本人に直撃 [冬月記者★]
- 浜田省吾に「チェリーボーイ」って曲あったっけ? [369521721]
- 【高市速報】日本「中国さんお願い首脳会談させて!ねえってば!😭」 [931948549]
- 日経平均、49000円割れ 国賊高市を許すな [402859164]
- とうすこ🏡愛され絵文字♡🤥👊😅👊👶♡
- ネトウヨ、完全に終わる 「高市さんの『台湾が武力攻撃された場合』というのは『米中戦争が勃発した場合』って意味に決まってるだろ!」 [314039747]
- 中国とのパイプ役がいない高市政権、実施詰みか [668970678]
