リファクタリングすると全部テストしろと言ってくる奴の矛盾2
■ このスレッドは過去ログ倉庫に格納されています
機能追加や変更した時に、全部テストしてるでしょ?
いつもやってることじゃん
前スレ
リファクタリングすると全部テストしろと言ってくるやつの矛盾
https://medaka.5ch.net/test/read.cgi/prog/1523765624/ >>289
やれやれ
メモリが壊れてるのも何が壊れてるのも話の要点は同じだろ
例え話に変なツッコミ入れる人ってホント要点から目をそらしたがるよね >>290
あれ?インターフェースは関係ないというツッコミへの
レスはしないの?
これがたとえ話ではなく一番重要な点なんだが
反論できない所からは目をそらすんだねw >>291
は?
頓珍漢すぎてスルーしてたわ
パソコン部品はインターフェースの考え方を応用して成功した代表例だぞ?
インターフェース関係ないとかまじ大丈夫か? C#なのにインターフェイスから実装に飛べないなんて言ってるアホの妄言だから気にするな モノリスおじさん「インターフェースさん邪魔(うわあああ論理じゃ勝てない。そんだ!むかつくから悪口いったろwww)」
悲しいなぁ >>295
無理だろ
型情報を削っちまったんだから
それに知る必要がないんだろ?
主張に責任持てよw ものによるね
インターフェースや抽象クラスでやるべきものを無理やり条件分岐にしたようなものは追う気しないね
実装クラス全部見るより大変だよ >>300
ごった煮のクソッタレ条件分岐をインターフェースで綺麗に分離、パッケージングしたわけさ
インターフェース使わないとごった煮っていうのは同意 >>292
パソコンの話をしたいのなら
別の板に言ってください。
インターフェースは関係ありません そもそもさ、壊れたメモリを交換するのと
モジュールを修理するのは意味がぜんぜん違う。
パソコンにインターフェースがあってよかったというのは、
インターフェースさえ一緒なら、他のメーカーであっても
正常なメモリに交換できるからだ
だけどソフトウェアは違う。インターフェースが同じで
機能が全く一緒のものなんて、殆ど無い。
バグがあったら交換するのではなく、そのモジュール修正するのだから
インターフェースがあることと、バグの修正には全く関係がない >>301
ごった煮になるのはインターフェース使うからだろ?
フツーに組めよフツーにw >>303
メーカーの気持ちがわかってないね
君は開発者じゃなくてユーザーということなんだろう >>305
だからパソコンの話をしたいなら
他の板に逝けって言ったよね? >>304
フツーに組んだらインターフェースになんだって
オブジェクト指向でなんで手続き型丸出しの条件分岐地獄をワザワザ使わないといけないのか
マゾなのかな >>306
人間は異なる話題から共通性を認識して教訓とする能力がある >>306
その論法だとインターフェース使いたくないならプログラム板とプロフラマ板には入れないね
どちらもインターフェースと密接に関わる板だから >>308
>>303を読むと、パソコンのインターフェースと
ソフトウェアのインターフェースは共通してないことがわかる インターフェースは交換しやすいだけで
バグが修正しやすくなるわけじゃないんだな バグが修正しやすくなるぞ
お気に入りのバイクが壊れたけど壊れてるパーツを修理すれば動くとする
インターフェースを使わない派は
バイクが組みあがった状態で修理作業をしないといけないので修正が最悪にしにくい
修理した後もぶっつけ本番でテストしなきゃならんから最悪の場合それで他の部分が壊れる
インターフェースを使う派は
部品を外して壊れた部品だけを作業机に置いて修理できるので超やりやすい
直したら部品の単機能テストをして本体に組みこんでテストできるから安心 >>312
だからそれ、インターフェースがあるからじゃなくて
単にモジュールとして別れていればいいだけだよねw どうやってクラスAの中に埋め込まれているクラスBをテストするのか?
そりゃクラスBだけ取り出して、
テストすればいいだけでは? >>313
モジュールとして分けるためのインターフェースな
インターフェースなかったらモジュール化してもハンダで癒着させるしかない >>315
普通にインターフェース無くても分離できるけど?
あんた、クラスの仕様、かけない人? >>316
それは君が分離できてると思い込んでるだけ ソフトウェアだと全く同じものを複数作れるからな
半田で癒着したモジュールをテストする必要はない。
そのモジュール=クラスがあるのだから、
そのクラス単体でテストすれば良いだけ >>317
だからクラスAの中にあるクラスBを分離するんでしょ?
クラスBだけをテストすれば終わりじゃん
なにか難しいことでもあんの
クラスBはクラスAがなければテストできないわけじゃないんだしさぁ >>319
そもそもBは依存先がないのだからその例は無意味だな
ABが癒着していたらAを分離してテストする方法がないだろ ABが癒着していたら Aを分離してテストする方法がないだろ
であれば、
ABが癒着していなければ Aを分離してテストする方法がある
という意味になる
で、インターフェースを使うことは必須ではない
インターフェースを使わず、かつ癒着しないようにすれば良い インターフェースを使わなければ、
絶対癒着してしまうんだー、ブンブン(手足を振り回す音)
ガキじゃないんだから、理由ぐらい言えよw はい、ガキいっちょいただきましたーw
やっぱり理由言えませんでしたね。
想定どおりです。
ほんとガキ ABが癒着していなければな
しかしAがBに依存するなら癒着は不可避
インターフェースを使うしかない で、癒着してない例は?
それで任意のシステムを組める保証は?
できるったらできるんだーブンブン、ってかwww >>327
くだらね。そんなこともわからんのか。
じゃあ、ぐうの音も出ない例だしてやるよ。
Aという会社にClassAの作成を依頼しました。
ClassAは完成しテストはしっかり行われています。
ClassAはどこにも癒着していません
数年後、Bという会社に、ClassAを使ってClassBを作るように仕事を依頼しました。
仕事を依頼する前は、ClassAは癒着していません。
ClassAのコードはなにも変えてないのだから
仕事完了後も、ClassAはどこにも癒着していません つーかこんな茶番劇のような例を出さなくても
MSが作ったライブラリをラップしたオレオレライブラリが
癒着するわけ無いだろと
MSはそのライブラリ単体で開発・テストしてんだからさ >>328
意味不明
ClassBはClassAに依存しているから開発にもテストにもClassAが必要
もう少しまともな意見を期待してたんだがこりゃ話にならんかな >>329
オレオレラッパーはMSのライブラリと癒着してんだよ
そしてそのオレオレラッパーを使うクラスはオレオレラッパーに癒着する
癒着が連鎖してMSのライブラリに癒着することになる
オレオレラッパーをインターフェースを実装するように作れば
オレオレラッパーインターフェースを使うクラスは癒着から逃れられる > ClassBはClassAに依存しているから開発にもテストにもClassAが必要
ClassAならすでにあるじゃん?アホなの? >>332
それを癒着というんだよ
ClassAがあるからいいじゃんじゃなくてなかったらダメじゃんってのが正解な
ClassAがデータベースに依存してたらデータベースも整備しなきゃならん
ClassAが外部サービス依存してたら外部サービスと契約しなきゃいけない
そうやって癒着の連鎖が広がっていく 仮にClassBを動かすのにClassAがまだできていなかったとしても
モックを使えばいいだけなのでインターフェースは必要ない
まあClassAの偽物を使ってテストしても
それは本当に動くことの証明にはならないから、
最終的にはClassAを組み込んだ状態でテストしなければいけないんだがな >>334
> それを癒着というんだよ
言わない。ソフトウェア業界のどの文献を探しても
癒着なんて書いてあるものはない
勉強し直したほうが良いよ?
あんた自分の妄想の世界で生きてる >>334
> ClassAがデータベースに依存してたらデータベースも整備しなきゃならん
整備すればいい
> ClassAが外部サービス依存してたら外部サービスと契約しなきゃいけない
外部サービスのモックを使えばいい
接続先の切り替えは単に設定ファイルの接続先を変更するだけ >>335
それは言語機能的な意味でインターフェースを使っていないだけで
考え方としてはインターフェースを使って実装を切り替えるのと変わらんよ
インターフェースを使った場合との違いは手順が増えて面倒くさくなる >>336
文献ベースで話進めるなら世界中で言及されてるインターフェースを使うのが正義ってことになるぞ >>338
> それは言語機能的な意味でインターフェースを使っていないだけで
> 考え方としてはインターフェースを使って実装を切り替えるのと変わらんよ
はぁ? じゃあお前のその主張だと
すべてのクラスは、言語的な意味でのインターフェースを使ってないだけで
インターフェースを持っているので、別になにかを作る必要はないってことで終わりだな
はい、ClassAとClassBだけで十分ですーw
だって、インターフェースがあるのですからーw >>337
整備のコストがもったいない
モック使うって発想はインターフェース肯定だぞ >>341
テストなんだから完璧なものを作る必要はない >>340
インターフェースを使わない代わりに無駄なコストを呼び込んでるんだよ
古の時代では確かにビルド時のリンク設定を変えたりマクロ定数による分岐を使って実装の切り替えを行っていた
これは非常に原始的だけど依存性注入の原型と言っていい
だけどあまりに不安定で管理の手間がかかるから人類は新しい方法を考えた
それは抽象基底クラスや仮装メソッドだったりするがまだまだ実用には難があった
最終的に依存性を丸ごとインターフェースに切り出して外からインスタンス渡すのがいいねって進化した
君が言うようにインターフェースを使わなくても実装のの切り替えはできないことはないが
それはIT原始時代の非効率的で野蛮な方法なんだよ
そういうのは猿がやることだ >>312
いや、型情報が潰されてるしバグ修正なんてしにくいと思うけど
しかも、インターフェースの先は知る必要がないんでしょ? インターフェース君、もう死んだ方がいいな
バカだし >>345
しやすいよ
余計な依存関係がクリアされるから作業対象に集中できる
作業対象の型も設定や命名規約からすぐわかるし全体からすれば極一部の動的なインスタンスだったとしてもログやファクトリーを見ればすぐにわかる
作業対象が依存してるのはインターフェースの契約でしかないのでインターフェースの先はもちろん知らなくていい インターフェースを使わずにあちこちに条件分岐を撒き散らすほうが
バグ修正しにくいわ まぁ実際のところ、interfaceまでガッツリ作る業務は今まであったことないんだけどね。
大体abstractクラスが限界 後はienumerableと受け取ったり返したりするヘルパー関数群とかは作るか。他はもはや趣味の領域な気がする IT業界は企業間で10年、20年分ぐらい技術格差がある
当たり前のようにinterfaceを使うモダンな企業もある
JavaやC#を採用しているのにCやCOBOLみたいなプログラムを書いてる老舗企業もまだある >>347
じゃあ、型情報潰しちゃってるのにどうやって該当の処理まで飛ぶの?
っていうか君はインターフェースの先は知る必要がないって主張だから
不具合も直せないよね?w インターフェース君はどうやってインターフェースの先を知らずに不具合を直すのだろう? 作業対象の依存するインターフェースの先を知る必要はない
作業対象==バグってるクラスを治すだけ >じゃあ、型情報潰しちゃってるのにどうやって該当の処理まで飛ぶの?
作業対象の型も設定や命名規約からすぐわかるし全体からすれば極一部の動的なインスタンスだったとしてもログやファクトリーを見ればすぐにわかる
>インターフェース君はどうやってインターフェースの先を知らずに不具合を直すのだろう?
作業対象が依存してるのはインターフェースの契約でしかないのでインターフェースの先はもちろん知らなくていい
作業対象==バグってるクラス >>356
IF「フフフ、我らを見抜けるかな?」
IF「3万のインスタンスをもち、150種のクラスをもつ我らを見抜くことは不可能」
IF「さらにメモリ、フォーム、コントロール、スレッド、ファイル、プロトコル、etc」
IF「すべての共通項を見出した万能クラス」 実際には責務:クラス=1:1だから症状聞いた瞬間にあぁあのクラスだなってわかるんだけどね
クラス分けしないでif文書きまくるとそれができなくなってコード追いかけたり実際に動かさないとわからなくなる >>357
いや、お前の主張はインターフェースの先は知らなくていいんだから
不具合直せないだろ
そこでチンコでもいじってろよ バグがあるクラスを直す時にそのクラスが依存しているインターフェースの先を知る必要がない
インターフェースを守っていればいい これも成り立つよな?
バグがあるクラスを直す時にそのクラスが依存しているクラスの先を知る必要がない クラスを使ってるだけなら、クラスの実装を知る必要はないのと同じことか
そういやライブラリのソースコードって見ないもんな クラスを使ってるだけならクラスの実装にも注意が必要 あー、勝負ついたなw
クラス(第三者が作ったライブラリ)のソースコード
普通見ねぇわ インターフェースを使うとバグが無いことが証明される
なんでかな? インターフェースの先は知らなくていい
↑これが間違ってる これが流行ってるからっで、レガシーコードにぶち込まれた数々のソリューション。
やるなら同等の箇所を完全に書き換えろ。
未来に責任が持てないならおとなしくしとけよ、糞が あ、未来のことなんか考えなかったからだね
未来の責任は放棄か 残業、休出してリファクタリングってなんかおかしくねーか?
いま、足が出てるわけで、いま、なんとかしろよ
アリもしないお前が想定する未来はきっとこないんだ >>377
うーん? ただ単に遅れてるだけだよね、それ >>378
え?ちょっと頭使ってね
リファクタリングっていまの工数を使って明日の工数につなげましょうって作戦じゃん?
なのにいま足が出てるのにそんなことしたって一体いつのプロジェクトを成功させたいのかわけがわからないじゃん > リファクタリングっていまの工数を使って明日の工数につなげましょうって作戦じゃん?
え?違うよ
まず今日の仕事の準備としてリファクタリングする。
そして今日の仕事の仕上げとしてリファクタリングする
それで今日の仕事が終わったと言える
準備と仕上げを入れずに仕事を見積もってはいけない
足が出てるのは、その準備と仕上げを勤務時間中にやらないで
1時間早く出社して、残業もするような状態になってるから >>380
は?
それなんのためにやってるの?
設計書通りに組んだんだよね? 気分に任せて組んでるから必要になってんじゃない?
お前の場合 >>381
設計書にコードの中身まで書いてあるっていうのかい? 野球で例えるならバッターが足場を慣らすのがリファクタリング >>388
それ統計データでもあるの?
それともあなたの思い込み?
嘘つかないでくれませんか? 設計書通りだとバグ出るしバグの修正めちゃくちゃ大変
しかも当たり前のように仕様変更入るじゃん
だから設計書は参考までに止めてリファクタリングするしかない
文句言うなら最初から整理とテストまで実行した設計書をよこせや ■ このスレッドは過去ログ倉庫に格納されています