1 名前:デフォルトの名無しさん mailto:sage [2010/05/29(土) 17:25:56 .net] テストも書かないでリファクタリングとかうけるw まずな、リファクタリングでは機能追加・修正は行わない。 動作はまったく同じでコードをきれいに書き換えること。 書き換えるといっても、これなら同じ動きだろ?って推測でやってはいけない。 まずテストを書く。ユニットテストをできるように、 単一のクラスでインスタンスを作る。 汚いコードなのだからたいていは依存関係のせいで単一ではクラスが生成できない それを生成するために、クラスの動作を書き換える。 といっても元のコードは修正しない。継承やプリプロセッサを使って 依存関係を断ち切るために既存のコードを上書きする。 どうしてもそれが不可能な場合には、決められた手順で最小のコード修正を行う そうやって既存のクラスのユニットテストを行う。 それでやっとリファクタリングが行える。 既存のクラスのユニットテストを通るように新たなコードに修正、 もしくは新規作成して置き換える。 この手順と考え方を守ってないのはリファクタリングではない。 で?
562 名前:デフォルトの名無しさん mailto:sage [2014/09/20(土) 22:07:58.53 ID:fFGu/96N.net] >>558 > リファクタリングは「現時点『運用中』の動いているシステムプログラム」に勝手に手を加えること。 なんでウソつくの? 本当と言い返せるものなら言い返していいんだぜ?w ただし、そんなことをしたら、ソースを要求するので 準備しておくこと。
563 名前:デフォルトの名無しさん mailto:sage [2014/09/20(土) 22:53:25.35 ID:6heECCBq.net] 恐怖駆動開発だな。 www.hanselman.com/blog/FearDrivenDevelopmentFDD.aspx レガシーコードでテストが無い and/or コードに対する理解が無い ↓ エンバグ、ビルドを壊すことへの恐怖
564 名前:デフォルトの名無しさん mailto:sage [2014/09/20(土) 23:06:54.25 ID:K48fRfz5.net] >>556 新しいマシン買えばいいだけじゃないか 開発費とハードウェア費用どっちが高くつくと思ってるんだ
565 名前:デフォルトの名無しさん mailto:sage [2014/09/21(日) 01:19:15.97 ID:H7xT3+nz.net] りファクタリングって言うのは、オブジェクト指向の言語(これが大前提)で、 開発段階にあって、試作品が第一段階で問題なく動いて、 あとは性能やコードの見直しやカイゼンだよねって段階で設計へフィードバックするプロセスですよ。 その後に顧客側のチェックと納品ですよね。 運用中のシステムに手を入れるという話では無いですよ。 カイゼンを全否定ならトヨタはどうなるんでしょうか?
566 名前:デフォルトの名無しさん [2014/09/21(日) 01:26:54.31 ID:UIOIQYIj.net] 一度客に納入してさあ、次に改修の仕事がきたときにリファクタリングしていたから工数が減っていたとしてもなんのメリットもないんだよな。むしろ工数が少なきゃ金が取れない。リファクタリングした分取ったら水増し請求だ。 機能やバグについて同等で、メンテしやすさだけ向上させる工程なんて日本の一般的な開発ではインセンティブゼロだよ。趣味ならともかくプロの仕事なら。 最初からリファクタリングの作業も込みで工数見積もりなり、費用請求しろ、ってそんな見積もり見て納得する客いるわけないじゃん。最初から手直しいらない納品物にして下さい、と言われてオチ。 出来上がってテスト済みのソースをあれこれいじるなんてお遊びが入り込む余地はない。
567 名前:デフォルトの名無しさん mailto:sage [2014/09/21(日) 01:42:02.59 ID:H7xT3+nz.net] それと、テストという概念は個人がスクリプトやツール類を書く場合には絶対に生まれてこない発想で、 多人数で、複数の技能レベルの人が、仕様書をガイドに組織的に開発に関わる条件下で必然的に生じる仕事上の手続き。 個人がコード書く場合は、ソースコード全体、アルゴリズム、関数やクラスを全て把握しているので テストコードをいちいち書く必要がない。だからデバックという手順はあっても、関数やクラスのテストコードを いちいち書くという発想にはならない。コード修正も容易、エラーが発生してもその場で即対応できる個人レベルの作業としては正しい。 組織で開発する部門では他人が必要なコードを仕様化した関数やクラスの動作条件を定めているから、 それを大前提としてモジュール動作をテストする必要がある。一見して馬鹿げている行為に思えるのは、 アルゴリズムを提示せずトップダウン的に関数のIN/OUTのみで仕様を提示するためにモジュールのテストが必須になる。 チェックデータの側面についていえば情報管理上テストデータが必ず必須になる。それは本物と試験用のデータが違うということ。 テストコードは本人が書くと、世界は如何にばかげた行為に時間を費やしているのかと思うだけだが、 本来は書く側は最終コードが動作すると確認した上で、2重チェックとして仕様を作成した側がテストするためのコードなり手段を作るべきだな。 人が居ないというなら、テストコード書くのでなく、統合テスト的に動作チェックすべき。
568 名前:デフォルトの名無しさん mailto:sage [2014/09/21(日) 01:52:41.82 ID:H7xT3+nz.net] リファクタリングは工数水増しの手段ではない。 保守とは違うので、日本の開発やってる業界のインセンティブなど関係がない。 リファクタリングとは関係がないな。 見積もりの段階でリファクタリングなどの話は出てこない。 手直しが要るといって費用請求している段階で、それはリファクタリングの問題ではなく 失敗したプロジェクトや案件だということだろう。それを誤魔化す為に誰かが嘘として リファクタリングと言ってるだけだろう。
569 名前:デフォルトの名無しさん mailto:sage [2014/09/21(日) 02:21:17.93 ID:H7xT3+nz.net] もし>>566 が客側の意見であれば、失敗したプロジェクトや案件とは縁を切って 再出発したほうが開発側も、客側も気持ち的にはしあわせになれますよ。
570 名前:デフォルトの名無しさん mailto:sage [2014/09/21(日) 06:26:59.02 ID:4aXz2u5s.net] >>562 >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) >リファクタリング登場の経緯と目的[編集] >リファクタリングが登場する以前は、一度正常な動作をしたプログラムは二度と手を触れるべきではないと言われていた。 >下手に手を加えて動作が変わってしまうと、それに伴って関連する部分にも修正が加えられ、やがて修正はプロジェクト >全体に波及し対処しきれなくなるかも知れない。またソフトウェアテストを十分に行い正常な動作が確認されたとしても、 >そのプログラムをわずかでも改変すれば、バグ (欠陥) が見つかったときに改変があったプログラムを疑わなければならない。
571 名前:デフォルトの名無しさん mailto:sage [2014/09/21(日) 06:35:53.53 ID:4aXz2u5s.net] >>565 >りファクタリングって言うのは、オブジェクト指向の言語(これが大前提) は?wwwwwwwwwwwwwwwwwwww オブジェクト指向とそうではない言語での違いを説明しろよ オブジェクト指向という言葉になんか宗教的妄信でもしてるのか?
572 名前:デフォルトの名無しさん mailto:sage [2014/09/21(日) 09:08:44.80 ID:aP8Aq0OA.net] 必要なのはコードのリファクタリングではなく チームメンバのリファクタリングである
573 名前:デフォルトの名無しさん mailto:sage [2014/09/21(日) 09:29:51.06 ID:48QWsy10.net] 言い換えると、ソースコードをリファクタリング出来るように チームメンバーの技術力を高めることである。
574 名前:デフォルトの名無しさん mailto:sage [2014/09/21(日) 09:47:59.75 ID:dzDyx0VV.net] > チームメンバのリファクタリングである リファクタリングて振舞いを変えてはいかんのでは?
575 名前:デフォルトの名無しさん mailto:sage [2014/09/21(日) 12:25:58.75 ID:MCI/5nTd.net] 例えばバグが多く、しかも非常にメンテしにくい糞コードがあったとする この場合 1. バグを含んだままリファクタリングして、その後バグを直す 2. 先にバグを直して正しいテストを通る様にしてから、リファクタリングに着手する どっち?
576 名前:デフォルトの名無しさん mailto:sage [2014/09/21(日) 12:33:35.65 ID:48QWsy10.net] >>575 原則としては2番 ただし、今既に十分なテストがあるのなら、 リファクタリングしてもよい。 ようするに「バグが有ることに気づいていなかった」と考える。 バグが有るといえども、その状態で使われていたのであれば、 問題ない範囲(把握している範囲)で使われていたわけで、 使われていた部分の動きが変わっていなければ何も問題ない。 適切に動いていないバグの部分の動きが変わった所で 誰も困らない。そもそもバグは仕様ではないのだから。
577 名前:デフォルトの名無しさん [2014/09/21(日) 13:51:42.60 ID:C0Gh49Ld.net] >>575 2. 一択。 1. は死亡フラグ。
578 名前:デフォルトの名無しさん mailto:sage [2014/09/21(日) 15:34:48.90 ID:4aXz2u5s.net] ホント現実をみてないな クソコードの影にクソ仕様書あり 仕様が網羅されていないクソ仕様書、そしてあってるのかあってないのかもわからんクソソース そして、仕様を完全把握しているものは不在(いない) コードを読みやすくする?直す?どーやってなおすんだよ正しい仕様不明なのに 手を入れなければ責任問題は自分にはかからない 正式に仕事として認可されるまでは、さわらずほっとく。こんなのが大量なんだ現実は まともな仕様書を作るやつは、まともなプログラムも書いている。でもそれは修正等々なんて必要のないソース リファクタリングの対象となるソースは、前者のクソコード、クソ仕様書のほうだ。正解が不明なのにどうやって直すんだ
579 名前:デフォルトの名無しさん mailto:sage [2014/09/21(日) 16:39:44.45 ID:48QWsy10.net] >>578 具体的に、クソコードになってしまう クソ仕様の例を言ってみて。 思いつかないんだよね。
580 名前:デフォルトの名無しさん mailto:sage [2014/09/21(日) 16:40:37.43 ID:48QWsy10.net] > コードを読みやすくする?直す?どーやってなおすんだよ正しい仕様不明なのに それは、正しい仕様がなければ、 現在のコードの動きを仕様と考えればいいだけ。
581 名前:デフォルトの名無しさん mailto:sage [2014/09/21(日) 16:53:43.27 ID:4aXz2u5s.net] >>580 クソソース1万ステップもよみとーない 句読点のない文章みたいに処理の区切りがまったくないような文体で書かれたソースなんぞ誰が手をつけるか
582 名前:デフォルトの名無しさん mailto:sage [2014/09/21(日) 16:54:11.17 ID:Ep6XnQTS.net] 開発手法が根本からおかしい リファクタリング以前の問題
583 名前:デフォルトの名無しさん mailto:sage [2014/09/21(日) 16:55:08.58 ID:4aXz2u5s.net] >>579 クソ仕様って誰が言った? クソ仕様「書」って言ってるの。馬鹿なの?あほなの?無能なの? おまえマ板の無職windowsさんでしょ
584 名前:デフォルトの名無しさん mailto:sage [2014/09/21(日) 17:12:48.09 ID:48QWsy10.net] >>583 じゃあ、そのクソ仕様書の具体例を 言ってみて。
585 名前:デフォルトの名無しさん mailto:sage [2014/09/21(日) 17:14:26.03 ID:48QWsy10.net] >>581 > 句読点のない文章みたいに処理の区切りがまったくないような文体で書かれたソースなんぞ誰が手をつけるか でも、バグがあったら直さないといけないし、 仕様変更、機能追加があったら、手を付けないといけないよね?
586 名前:デフォルトの名無しさん mailto:sage [2014/09/21(日) 17:24:56.25 ID:SqCSMf85.net] うちのソースコードはほとんどが綺麗だから 句読点のない文章みたいに処理の区切りがまったくないような文体で書かれたソース なんてほとんど無いよ。 そんな汚いソースがたくさんある所は、 手をつける箇所=リファクタリングするべき場所でしょう。
587 名前:デフォルトの名無しさん [2014/09/21(日) 17:25:48.01 ID:J4CuFh4O.net] この板はガセネタをもとにした煽り合いのスレしかないみたいだな ・××と言われているが本当は○○ ・こんなことも知らないの? これが2ちゃんクヲリチーだな
588 名前:デフォルトの名無しさん mailto:sage [2014/09/21(日) 19:17:45.62 ID:4aXz2u5s.net] >>584 作ってあげるよ、クソ仕様書 機能: 俺の心の中にあるいい塩梅で、業務を遂行する処理 以上 これは極端に書いたが、冗談抜きで口頭で仕様をやりとりしたのか いっさい、仕様書に、当該機能部分の記載がない。
589 名前:デフォルトの名無しさん mailto:sage [2014/09/21(日) 20:05:10.80 ID:6N1L/uhm.net] 嫌なら辞めれば良いのに って思う
590 名前:デフォルトの名無しさん mailto:sage [2014/09/21(日) 20:10:42.85 ID:qWzZkk5b.net] >>589 どっちにたいして言ってるのかわからんよ、その文では クソシステムが嫌と言ってる人に言ってるのか、 リファクタリングwをしないやつはだめだって言ってるやつに言ってるのか どっちにも解釈できる
591 名前:デフォルトの名無しさん mailto:sage [2014/09/21(日) 21:44:29.99 ID:5OzBoJXn.net] クソソース1万ステップ読まなくていいようにするためにリファクタリングするんじゃないか
592 名前:デフォルトの名無しさん mailto:sage [2014/09/21(日) 21:45:48.38 ID:9ZybMmhl.net] マーチン・フラウアーのリファクタリング本てruby版とjava版て言語が違うだけで内容は重複してるの? それとも別の内容が多いから両方買った方がいい?
593 名前:デフォルトの名無しさん mailto:sage [2014/09/21(日) 22:48:11.16 ID:SqCSMf85.net] >>588 それがソースコードとなんの関係があるの? その曖昧な仕様によって、作られる機能が 曖昧になるだろう。 だが、機能が曖昧になるだけで、 それを実現するコードの読みやすさは関係ないはずだ。
594 名前:デフォルトの名無しさん mailto:sage [2014/09/21(日) 23:01:02.38 ID:SqCSMf85.net] >>592 >>453 ででてるリンク先の一覧が内容の比較として使えるよ。 多くは重複しているが、それぞれ片方にしかないものもある。 と思ったが、Java版、新装版がでたんだったか。 旧版、新装版、両方持っているが新装版の方はまだ見てないやw ぱっとみ片方にしかないものは、言語の特徴によるものっぽいから 重複率は同じか少し高くなるだけだろうね。 それでも俺はそのうちRuby版かうけどねw
595 名前:デフォルトの名無しさん [2014/09/22(月) 01:14:38.68 ID:8ME10ieO.net] リファクタリング真理教か原理主義かしらんがウゼエ
596 名前:デフォルトの名無しさん mailto:sage [2014/09/22(月) 06:10:50.31 ID:mZl8n2a+.net] >>595 リファクタリングっつって真理教とか妄想するお前が一番オームくさい。 リファクタリング大勝利!!!
597 名前:デフォルトの名無しさん mailto:sage [2014/09/22(月) 06:22:02.06 ID:VFEp2OOw.net] Aさんがリファクタリングしました。 Bさんが読みましたAさんのリファクタリングがクソです。Bさん直しました。 Cさん見ましたBさんのソースコードクソです。Cさん直しました。 永遠と、、、、、 個人の力量、感性によって結果が大きく作用してしまうものは、学術的工学的な基本がないからどうにもならない。
598 名前:デフォルトの名無しさん mailto:sage [2014/09/22(月) 08:09:32.93 ID:mZl8n2a+.net] 普通は、 Aさんがリファクタリングしました。 Bさんが読みましたAさんのリファクタリングがクソです。Bさん直しました。 Cさん見ましたBさんのソースコードクソです。Cさん直しました。 Cさんリファクタリング大勝利!!! ・・・でしょ?
599 名前:デフォルトの名無しさん mailto:sage [2014/09/22(月) 08:34:50.21 ID:mZl8n2a+.net] Class レイザラモンFoo Extends Object Public サルinit(void); Public クエリFoo(String SQL文はクソ); Protect ないですFoo(void); Destractor システム緊急停止オペ呼んでくさいFoo(void); End Class こんな仕様のクラスを業務システムのスーパークラスにしてあとは全て継承 という仕様は誰だって疑問を持つと思うんだが、そこを直すのがリファクタリング。 リファクタリング大勝利!!!
600 名前:デフォルトの名無しさん mailto:sage [2014/09/22(月) 11:41:29.79 ID:y9q7ZqSb.net] >>597 それリファクタリング関係ないしw なぜなら、俺が作ったコードを誰かが編集した時に、 変な修正の仕方をされることがあるから。 それを直すのがリファクタリングなわけ。
601 名前:デフォルトの名無しさん mailto:sage [2014/09/22(月) 12:15:28.88 ID:4rgv3mOC.net] >>598 再びAさんが担当した時、Cさんのコードを読めず仕事になりませんでした。 Cさんリファクタリング大勝利!!!
602 名前:デフォルトの名無しさん mailto:sage [2014/09/22(月) 13:03:42.75 ID:BRLO2XpR.net] 優れたの方コードを採用すればいいだけだろ。
603 名前:デフォルトの名無しさん mailto:sage [2014/09/22(月) 13:12:39.94 ID:8Zrs8f+9.net] 個人の知識の違いによってソースの見え方が違うからな アホが天才のコードを見ると何じゃこりゃってなるし、逆もまた然り
604 名前:デフォルトの名無しさん mailto:sage [2014/09/22(月) 13:51:20.75 ID:BRLO2XpR.net] 知識って・・・そんなの一機能5分もあれば 知らない状態から理解できるだろ。 どんだけ素人なんだ? つーか知らない時点で、判断できないわけで 議論からはお役御免なわけだが
605 名前:デフォルトの名無しさん mailto:sage [2014/09/22(月) 13:53:03.85 ID:BRLO2XpR.net] それに、知らないなら何をやっているか 理解できないわけで、リファクタリング出来るわけがないな。
606 名前:デフォルトの名無しさん mailto:sage [2014/09/22(月) 17:49:10.78 ID:8HtrhTyn.net] おれはやらな〜いw これでリファクタリングは崩壊するwww
607 名前:デフォルトの名無しさん mailto:sage [2014/09/22(月) 19:42:14.76 ID:OvpzlkOF.net] アホみたいな話だが結局>>597 が真理だよな。 リファクタリングする人は、自分のコードもいずれリファクタリングされる事を受けいれねばならん。
608 名前:デフォルトの名無しさん mailto:sage [2014/09/22(月) 20:32:19.28 ID:0yRqeFm6.net] リファクタリングはただのコード修正と思ってもらってかまわない
609 名前:デフォルトの名無しさん mailto:sage [2014/09/22(月) 20:44:04.47 ID:jEzIKioA.net] リファクタリングするよ派はここでなにしてんの?しないよ派とじゃれあってるのが楽しいの? やり合ってる本人は議論してるつもりかもしれないけど、外から見てるとしょうもなさすぎてww
610 名前:デフォルトの名無しさん mailto:sage [2014/09/22(月) 21:11:07.07 ID:BRLO2XpR.net] >>606 それは単に、プログラム?なにそれおいしいの? 動けばいいでしょ?って言ってるだけでしょう? そんな会社はリファクタリング以前に 仕事が終わってる。
611 名前:デフォルトの名無しさん mailto:sage [2014/09/22(月) 22:45:37.55 ID:rMqlGcxC.net] >>1 が考えるようなことは誰もが考えてる。 その結果、新しい開発言語が生まれているということを理解できないのか? 過去、多くの開発手法・開発スタイルが提唱されたが、 社会に受け入れられたものは、「理論」と「それを強制する新しい開発言語」が常にワンセットになっていた 「超絶スパゲッティコード」を少しでもまともにするために 原因の「goto」を取り除く方法として、「gotoレス」という理論とともに「3つの基本構造を使うようにした、構造化プログラミング言語」が生まれ 「グローバル変数の多用がデバッグを困難にする問題」を少しでもまともにするために 原因の「不必要にメモリをどこからでもアクセスできる状態」を取り除くため「カプセル化」が提唱され、オブジェクト指向言語に組み込まれ 等々・・・・。 何を持ってリファクタリングといいたいのかわからないが、汚いコードを綺麗なコードになおすというなら。 リファクタリングが成功したといえる、最終のコードはどのようなものなのか。具体的に示す必要がある。 プログラムとして存在するあらゆるコードパターンに対応した、綺麗なコードを示してくれ。 それを明示できないうちは>>597 の意見が正しい。 個人の感性次第なら、汚いコードと周りは言うが書いているプログラマにとってはリファクタリング不要な綺麗なコードと判断するだろう。 先人達は、その時代のプログラムコードの問題を考えた。 その答えが、理論を具現化した新プログラミング言語の開発だ。 >>1 はしのごのいうなら、リファクタリング後の形になるプログラミング言語を生み出せ。 どんな馬鹿でも、その綺麗なプログラミングになるプログラミング言語を。
612 名前:デフォルトの名無しさん mailto:sage [2014/09/22(月) 22:52:50.40 ID:BRLO2XpR.net] >611 新しい言語というから何かと思えば gotoレスとかカプセル化とか 全然新しくないじゃないか。 30年ぐらい前の話だろ。
613 名前:デフォルトの名無しさん mailto:sage [2014/09/22(月) 22:55:02.43 ID:BRLO2XpR.net] > 何を持ってリファクタリングといいたいのかわからないが 無知は勉強すればいいだけ。恥ずかしいことなんて無いよ! >>422 , >>425 あたりを読むといいよ。 リファクタリングの誤用 ttp://capsctrl.que.jp/kdmsnr/wiki/bliki/?RefactoringMalapropism リファクタリングの境界線 ttp://capsctrl.que.jp/kdmsnr/wiki/bliki/?RefactoringBoundary インタフェースの変更はリファクタリングか capsctrl.que.jp/kdmsnr/wiki/bliki/?IsChangingInterfacesRefactoring > 答えは簡単――インタフェースの変更はリファクタリングだ。 未知のバグフィックスはリファクタリングか? capsctrl.que.jp/kdmsnr/wiki/bliki/?IsFixingAnUnknownBugRefactoring > 私はリファクタリングと呼べると思う。 バグを含んだ振る舞いを知らなかった(あるいは気にしなかった)わけだから、 > これは「外部から見たときの振る舞い」ではないのだ。 たとえバグに気付いていたとしても、 > それが気にするようなバグでなければ、 リファクタリングと呼んでもよいと思う。 最適化はリファクタリングか? capsctrl.que.jp/kdmsnr/wiki/bliki/?IsOptimizationRefactoring > 最適化とリファクタリングはどちらも変化を伴うものだが(なかには最適化かつリファクタリングとなる変化もあるが)、 > 両者は別物だと私は考えている。なぜなら、両者の目的が異なるからである。リファクタリングは、 > コードを理解しやすくするためである。最適化は、プログラムを速くするためである。 宣言の順序変更はリファクタリングか? capsctrl.que.jp/kdmsnr/wiki/bliki/?IsDeclarationOrderingRefactoring > 宣言(Javaで言うメソッドやフィールド)の順序を変更することは、リファクタリングと呼べるのか? > リファクタリングの定義で、 「理解や修正が簡単になるように」というフレーズを使った。 > 宣言部分を変更すると、理解や修正が簡単になるのだろうか? 私は、そういう場合もあると思う。 > ソフトウェアの内部構造を変更しないという点が紛らわしいかもしれない。 リネームしても実行内容は変化しない。
614 名前:デフォルトの名無しさん mailto:sage [2014/09/22(月) 22:58:10.11 ID:BRLO2XpR.net] >>613 を見ればわかるけど、 リファクタリングを 汚いコードを綺麗なコードに直すこと とは書いてないんだよね。 なんでこんなふうに間違って解釈してるのかな? それって、汚いコードが(あなたの所に)多いってだけで、 リファクタリング以前の解決するべき問題だよね? リファクタリングとはソフトウェアの変化とともに、 あるべき設計に安全に変化させる方法のこと。
615 名前:デフォルトの名無しさん mailto:sage [2014/09/22(月) 23:03:19.25 ID:rMqlGcxC.net] >>612 あ?30年前だ? がきんちょがてきとーなことぬかしてんじゃねーぞ? 30年前のコードならgoto乱発が現役だ 汎用機に大量にその証拠があるわ どあほが。
616 名前:デフォルトの名無しさん mailto:sage [2014/09/22(月) 23:04:10.78 ID:rMqlGcxC.net] >>614 具体性がございません。 個人の感性次第でよろしいですか? なら退職時、全部アセンブラコードだけにしちゃいますがw
617 名前:デフォルトの名無しさん mailto:sage [2014/09/22(月) 23:24:14.03 ID:OvpzlkOF.net] >>614 (お前にとっての)あるべき設計だな
618 名前:デフォルトの名無しさん mailto:sage [2014/09/23(火) 07:26:06.78 ID:0ZBouPvA.net] このスレも ↓のスレも ソースコード品質検定試験が世の中には必要だ 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
619 名前:デフォルトの名無しさん mailto:sage [2014/09/23(火) 12:26:15.85 ID:aBTcR7ac.net] >>616 具体例はここに書いてあるよ。 > >>613 を見ればわかるけど、 > > リファクタリングを > 汚いコードを綺麗なコードに直すこと > とは書いてないんだよね。
620 名前:デフォルトの名無しさん mailto:sage [2014/09/23(火) 16:29:00.40 ID:wrw0I4Vi.net] まだ無職が語るの? 恥ずかしいからお前の社会的立場を恥ずかしくない位置にリファクタリングしてからプログラムのリファクタリングを語れよw
621 名前:デフォルトの名無しさん mailto:sage [2014/09/23(火) 16:45:57.11 ID:wrw0I4Vi.net] しかし、この超売り手市場なのに就職出来ないって、相当無能なんだな
622 名前:デフォルトの名無しさん mailto:sage [2014/09/24(水) 17:32:35.84 ID:iVFJW3Cg.net] いやぁ馬鹿スレを止めてくれてありがたい 完全に自爆だけどな(笑
623 名前:デフォルトの名無しさん mailto:sage [2014/09/25(木) 08:00:06.24 ID:2gwTj0ip.net] え? マジで!?いろいろ見て回ってきたけど ゲーム作りたくてプログラマになったけど、就職できず、Windowsしか扱えないので、派遣でコボルやるもクビになって無職 なの?!( ;´Д`) そんな身分で、現役のプロのプログラマにプログラム、プログラミングにたついて講釈たれてたの? ε-(´∀`; ) どんだけ、恥知らずというか、身の程知らずというか、小保方というか。 空いた口が塞がらないわ(^◇^;) マジでお前自信をリファクタしろよ(・Д・)ノ
624 名前:デフォルトの名無しさん mailto:sage [2014/09/25(木) 12:50:36.36 ID:fB0UYRRr.net] という妄想を書く人って、 実社会では自分が落ちこぼれなのかな。
625 名前:デフォルトの名無しさん mailto:sage [2014/09/25(木) 17:28:15.70 ID:oxMb9EZk.net] 不用意に自供しといて妄想とかw
626 名前:デフォルトの名無しさん mailto:sage [2014/10/05(日) 23:35:12.83 ID:gYmu4Dn/.net] リファクタリング良さそうなんだけど、いろいろ疑問点があります 上で内部的インターフェイスの変更もリファクタリングに含まれるという話がありましたが インターフェイスを作り変えたら対応するテストケースも作り変える必要がありますよね? その場合、リファクタリング内でテストケースに手を付けて インターフェイスとテストケースを同時に作ってしまっていいものでしょうか? 外部的インターフェイスに指定したテストケースのみパスすれば 問題ないと考えるのでしょうか?
627 名前:デフォルトの名無しさん mailto:sage [2014/10/07(火) 01:36:41.20 ID:0pCKu6Fp.net] テストケースは全部通さないと駄目だよ 人間の書くテストが全部網羅してるとも限らないから テストの穴を突いた部分が他所で影響してるかもしれない 原則としてよほどの事でもない限り一度リリースしたら手をつけないがベスト リファクタリングなんて幻想だからやめなさい
628 名前:デフォルトの名無しさん mailto:sage [2014/10/07(火) 09:53:16.20 ID:pP8u07NL.net] インタフェースを作り替えたらテストも必要 というかテストできない・しづらいインタフェースを作ったらあかん
629 名前:627 mailto:sage [2014/10/07(火) 20:19:23.95 ID:J1sG3mPW.net] >>627 > テストケースは全部通さないと駄目だよ 内部動作をリファクタリングする場合はそうだと思います。 > 人間の書くテストが全部網羅してるとも限らないから > テストの穴を突いた部分が他所で影響してるかもしれない 100%のテストはないけど、十分捕捉率の高いテストと 十分機能変更の余地が低いリファクタリング手法の組み合わせで 実用になるというのがリファクタリングの主張ですよね。 内部動作のリファクタリグだけならそれでいいんですけど、 ただやっぱりインターフェイスの拡張・取捨選択も やりたくて、そういう場合どうすればいいのかなと。 > 原則としてよほどの事でもない限り一度リリースしたら手をつけないがベスト 一度リリースしたっきりでソースのことを忘れ去っても 大丈夫なプロジェクトならそうかもしれませんが、 リファクタリングがターゲットにするプロジェクトは リリースした後に(リファクタリングするしないに関わらず) 何度も手を付けてメンテナンスすることが要求されるような 継続性のあるプロジェクトではないでしょうか? > リファクタリングなんて幻想だからやめなさい 上手くいくと言っている人も多いので、 安易に幻想だと断定もできないように思います。 幻想だとはっきり納得出来たらやめます。
630 名前:627 mailto:sage [2014/10/07(火) 20:20:02.46 ID:J1sG3mPW.net] >>628 > インタフェースを作り替えたらテストも必要 > というかテストできない・しづらいインタフェースを作ったらあかん テストしづらくはないのですが、 例えば1つ1つの public メソッドにテストを書いていたら とても作業が時間内に終わらないというような、 時間がかかってしまう的な問題です。 でも public メソッドはクラスの持つインターフェイスだから テストは必要ってことですか?
631 名前:デフォルトの名無しさん mailto:sage [2014/10/08(水) 15:43:43.04 ID:AP5j0Y8f.net] ただ、そのテストのメンテナンス、テストを減らしたり、改善したり、 そういう話はまだ多くないんですね。(例えば)テストが増えてくると、 全部のテスト通すのに 3 時間かかったりとか、 テストの量自体が問題になってくる。 またテストが実装に深く依存してて、リファクタリングしたらテストが ばーっと真っ赤*49になっちゃうからやめようみたいな話とか。 テストをたくさん書けば良いってものじゃないんですよ。 設計の改善を前後で担保するためのテストだったはずなのに、 設計改善の邪魔をしてるんじゃないか? と。 テストが変更のコストを一定にするという夢を俺たちは見てやってきたのに、 テストが増えると変更コストが上がっていないかい? という問題に対してどう戦うか、 それが今の TDD の主戦場だと思っています。 www.ogis-ri.co.jp/otc/hiroba/others/OORing/interview43.html
632 名前:デフォルトの名無しさん mailto:sage [2014/10/08(水) 17:47:03.08 ID:No3WRPQd.net] >>631 下手なテストを書くとそうなるって話ですね。
633 名前:デフォルトの名無しさん mailto:sage [2014/10/08(水) 23:56:17.82 ID:UFd7lKdk.net] よくわからんが何かの言い訳に使えそうな
634 名前:デフォルトの名無しさん mailto:sage [2014/10/09(木) 10:21:37.01 ID:IFg54I5e.net] テストできない・しづらいインタフェースを作ったらあかん
635 名前:デフォルトの名無しさん mailto:sage [2014/10/09(木) 20:44:29.80 ID:zf/NUEdS.net] ボタン一個一発こそ至高
636 名前:デフォルトの名無しさん mailto:sage [2014/10/12(日) 07:13:20.02 ID:jwvcB2bY.net] >>626 有能な人材だけで構成されているなら可能 でも有能な人材はそもそもそんなコードを書かない つまり、現実では実現不能ということ。 よく考えてよ。 ゲーム会社への就職も面接すらいけずに終わり、他の会社も全滅、登録派遣しかなく ようやく派遣されたCOBOLでクビになり、 自分は有能だと思い込んでいるケドWindowsしか使えない 無職の人の立てたスレだよ?
637 名前:デフォルトの名無しさん mailto:sage [2014/10/12(日) 13:23:31.01 ID:08qsWg0a.net] >>636 返信ありがとうございます > よく考えてよ。 誰が立てたかでなく、何を言っているかで判断しています > 有能な人材だけで構成されているなら可能 627 では可能かどうかという聞き方はしていないのですが、 627 のどの部分を指して可能と言われているのでしょうか? > でも有能な人材はそもそもそんなコードを書かない これも、627 ではどんなコードかに関して言及していないと 思うのですが、そんなコードというのは何を指しているのでしょうか?
638 名前:デフォルトの名無しさん mailto:sage [2014/10/12(日) 14:51:47.69 ID:jjrAIsW+.net] 世の中に汚いコードが溢れてるってことだなw リファクタリングは汚いコードを直すことじゃないよ。 コードは修正するたびに(≒機能追加) どんどんコードが増えていく。 素人集団は、コードの既存部分を直さずに追加するだけで終わらせる。 有能な人材はそもそも汚いコードを書かないというが、 それは、有能な人材は、リファクタリングをしながら機能追加していくから 汚いコードに"成長しない" ということを意味する。
639 名前:デフォルトの名無しさん mailto:sage [2014/10/12(日) 15:32:46.02 ID:08qsWg0a.net] 設計がまずかったり場当たり的に組んでしまったりして いったん汚いコードになってしまったらもう手遅れですか? 汚いコードをインターフェイスを変えつつ 改善していきたいと思っているのですが
640 名前:デフォルトの名無しさん mailto:sage [2014/10/12(日) 16:01:06.81 ID:jjrAIsW+.net] >>648 「汚いコード」のうちは未完成と考えるよ。 設計書だってレポートだって小説だって 書いた最初は下書きでそれから清書するもんだろ?
641 名前:デフォルトの名無しさん mailto:sage [2014/10/13(月) 12:31:48.66 ID:dRUWRUgv.net] コードが汚いとか騒ぐやつは総じて低スキル
642 名前:デフォルトの名無しさん mailto:sage [2014/10/13(月) 17:48:27.91 ID:qVWnI3+v.net] >>639 汚いのを綺麗にする行為をリファクタリングとは"呼ばない" これが原理主義者の主張するところである
643 名前:デフォルトの名無しさん mailto:sage [2014/10/13(月) 21:27:10.38 ID:mV3fqIh9.net] >>642 ではリファクタリグしたとしても汚いコードは汚いままなのですね
644 名前:デフォルトの名無しさん mailto:sage [2014/10/13(月) 22:25:07.42 ID:0J6BIdC+.net] >>643 汚いコードはリファクタリング前に綺麗にしてから リファクタリングするから、 リファクタリング後は当然綺麗になってるよ。
645 名前:デフォルトの名無しさん mailto:sage [2014/10/13(月) 22:41:00.86 ID:mV3fqIh9.net] >>644 リファクタリグとは別に、汚いコードを綺麗にする方法があるのですね どうやるんでしょう?
646 名前:デフォルトの名無しさん mailto:sage [2014/10/13(月) 22:43:13.35 ID:zulUt3IX.net] >>645 まず何が綺麗で何が汚いかを勉強することだね。 それを知らないことにはどうしようもない。 逆に知ってしまえば、具体的な質問ができるようになるよ 汚い××というコードを、綺麗な○○に変化させるには どうしたらいいでしょうか?って そういう質問なら答えがちゃんと言える。 君の今のレベルの質問は曖昧すぎて答えがない。
647 名前:デフォルトの名無しさん mailto:sage [2014/11/22(土) 11:07:28.63 ID:jhiCG8Ku.net] >>641 その高スキルに限って自分のソースが保守できずに早々に放棄する 書きなぐり続けるのはその繰り返しのため
648 名前:デフォルトの名無しさん mailto:sage [2014/11/22(土) 16:04:31.14 ID:6qlI/h48.net] >>641 俺様のコードは凡人には分からない 協調作業が出来ないタイプの典型 困ります、俺のプロジェクトから即刻リジェクト してほしいです 田中お前だよ
649 名前:デフォルトの名無しさん mailto:sage [2014/11/25(火) 12:34:50.30 ID:aVHf4ing.net] 世の中なんでも使い捨てで楽な方に向かってるのに プログラミングの世界は古いものを大事に使いたがる不思議 怠惰なフログラマこそ率先してコードを使い捨てにすべきじゃね?
650 名前:デフォルトの名無しさん mailto:sage [2014/11/25(火) 23:55:42.35 ID:n1duvf0w.net] >>649 使い捨てる理由の大半はどんなにうまく保存しようとしても劣化し続けるから。 ソフトウェアはそういう物理的制約から書いたものはずっと同じまま残り続ける。 うまくバックアップや環境が残りさえすれば半永久的に使い続けることが出来る わけだから、怠惰であればあるほどそういう資産を積み上げていくんだよ。
651 名前:デフォルトの名無しさん mailto:sage [2014/11/26(水) 12:34:55.88 ID:1UftDcOY.net] >>650 バカだな劣化するからリファクタリングとかいう下らない事が流行るんだぞ
652 名前:デフォルトの名無しさん mailto:sage [2014/11/26(水) 19:48:43.25 ID:0BkZoqqN.net] 再利用って考え方がそもそもコストが高いんだよ もんじゅとか例に挙げなくてもリサイクルって金掛かるだけで 利権で儲けるしかない仕組みだって判るよね
653 名前:デフォルトの名無しさん mailto:sage [2014/11/27(木) 00:55:26.29 ID:dibuY+0s.net] 再利用のコストに関しては単純に何回再利用するかで変わってくるから、 コストの高い再利用をしているお前が悪いんじゃないのとしか言えない。 リファクタリングも同じで、2度と手を入れないような部分や新規プロジェクトを 渡り歩くような人には不要なもの。 ただ昨今のアジャイル開発とか呼ばれている ものだと、ある程度の期間は修正や追加が必要になってくる。 無計画に接ぎ木を してわけの分からないキメラを作るより、ある程度剪定して理解できる範疇に 修める必要があるよねっていうのがリファクタリング。
654 名前:デフォルトの名無しさん mailto:sage [2014/11/27(木) 12:34:12.35 ID:jH/Xs+Kz.net] >>653 ソフトウェアの再利用もその都度コストがかかるんだが? 普通は回数に比例してコストが増加するぞ
655 名前:デフォルトの名無しさん mailto:sage [2014/11/27(木) 12:41:38.96 ID:r+bsdp9/.net] >>654 > ソフトウェアの再利用もその都度コストがかかるんだが? > 普通は回数に比例してコストが増加するぞ 再利用するために何らかの変更が必要なら、そのときだけコストがかかるが、 以降はコストかからんだろ。
656 名前:デフォルトの名無しさん mailto:sage [2014/11/27(木) 23:29:56.27 ID:kUiumU8R.net] 再利用前提で作ろうとしてる時点で余計なコトスがかかっとるわい
657 名前:デフォルトの名無しさん [2014/11/28(金) 02:38:41.57 ID:LrjKc3Ws.net] 古くなった原発の再利用
658 名前:デフォルトの名無しさん mailto:sage [2014/11/28(金) 04:18:59.87 ID:MN0ISYZx.net] 再利用性や拡張性というのは、将来のことだから仕様外。 仕様外だからプログラミングの対象外。 おわり。
659 名前:デフォルトの名無しさん mailto:sage [2014/11/28(金) 07:48:17.97 ID:IEXuWLi+.net] 再利用と考えるからいけない。 モジュール化。 適切なモジュール化は、再利用出来るだけじゃなく、 複雑度も減ってバグも少なくなる。 適切なモジュール化が出来ない奴が 再利用にコストがかかるとか コードが再利用できないとか言う。
660 名前:デフォルトの名無しさん mailto:sage [2014/11/28(金) 12:44:59.78 ID:X4M4SbHd.net] >>659 それは再利用じゃないよ 機能を小さく保つ事で、本来の目的である一次利用出来る範囲が広がるだけだ それを便宜的に「再利用しやすい」などと表現してる訳だ ソフトウェア本来の目的とは異なる本当の意味での再利用にはコストがかかるんだよ
661 名前:デフォルトの名無しさん mailto:sage [2014/11/28(金) 17:41:36.95 ID:03S1h8mH.net] 本当の意味での再利用? そんなもんに興味持つ必要はなさそうだが? >>659 それな。 本当にそれ。
662 名前:デフォルトの名無しさん mailto:sage [2014/11/29(土) 01:59:23.82 ID:TbFyYdBX.net] >>660 > 機能を小さく保つ事で、本来の目的である一次利用出来る範囲が広がるだけだ 一次利用が出来る範囲が広がる=再利用だろw
663 名前:デフォルトの名無しさん mailto:sage [2014/11/29(土) 13:13:20.77 ID:U5ivpV2C.net] 再利用じゃなくて流用と言えばいいのに
664 名前:デフォルトの名無しさん mailto:sage [2014/11/29(土) 14:17:24.97 ID:v2v5Wnkr.net] 全く修正しないで使うのが再利用。 コピーして修正して使うのが流用 流用をすると、AとA'というコードが生まれなんで二つに分かれてるの? 違いはなんんあの?と結局両方を読まないといけなくなる。 流用するたびに読むべきコードがどんどん増えていく。 はてに一つを修正するともう片方の修正を忘れるとか。 なので全く修正しないで使う「再利用」でないと意味が無い。 全く修正しないで使えるのだからコピーする必要はなくなる
665 名前:デフォルトの名無しさん mailto:sage [2014/11/29(土) 14:46:23.56 ID:A4nuaoXO.net] 流用元から流用先がどこにどれだけあるかは基本的に分からない。 流用元に何かバグがあって修正する必要があった場合に論理的に考えると 流用先も直しておいた方がいいor直す必要がある。 ただ流用先を全て特定 することは難しく、特に流用先で動くように変数名とか変えてあると確実に 漏れる。バグじゃなくても何か修正追加したいと思った時の事を考えると コピペをばらまくより関数で再利用するほうがいいよねってなる。 ただ人間は欲深いもので1つの関数にあれもこれも詰め込んで破綻させる 奴が出てきたりする。こういうのを見て、関数なんて作らなくてコピペでいい だろって奴が出てきて無限ループする。
666 名前:デフォルトの名無しさん mailto:sage [2014/11/29(土) 22:16:12.25 ID:UEas1JmU.net] 頑張って同じ機能がすでにあるか探して、 あったらあまりいいコードじゃなくても正しく仕様を満たすからそれ使って 散々気をつけてんのに誰かが変更しやがる
667 名前:デフォルトの名無しさん mailto:sage [2014/11/30(日) 12:24:33.02 ID:NxMP0P1A.net] リファクタリングと言う名の正義
668 名前:デフォルトの名無しさん mailto:sage [2014/12/05(金) 19:01:54.53 ID:cszTTiF/.net] >>667 同意、正義を振りかざす曲者
669 名前:デフォルトの名無しさん mailto:sage [2014/12/21(日) 11:54:37.04 ID:LOCxTeYe.net] >>660 ,660 >ソフトウェア本来の目的とは異なる本当の意味での再利用にはコストがかかるんだよ アプリ内でのモジュールの共通化(=アプリに特化したフレームワーク、ライブラリ の抽出)と、どんなプロジェクトでも使えるようにフレームワークやライブラリーを 汎用化するのは似て非なるものだと思う。
670 名前:デフォルトの名無しさん mailto:sage [2015/02/15(日) 22:12:39.01 ID:wyXhgSeE.net] >>1-100 0 テスト
671 名前:デフォルトの名無しさん mailto:sage [2016/03/27(日) 21:55:32.43 ID:N7IGtcj3.net] どのタイミングでやったら工数に影響を与えずにできるの?