リファクタリングすると全部テストしろと言ってくるやつの矛盾

■ このスレッドは過去ログ倉庫に格納されています
2018/04/15(日) 13:13:44.63
機能追加や変更した時に、全部テストしてるでしょ?
いつもやってることじゃん
2018/04/25(水) 23:55:28.95
まあJavaだしね。
2018/04/25(水) 23:57:50.39
Rubyは結構変な構文で圧縮してる
2018/04/26(木) 00:03:21.92
>>659
原点回帰が必要だよお前
人間が見てわかりやすい範囲を明らかに逸脱してるだろ
概算で役に立たない
2000行規模のコードでメソッド200個近く作るんだろ
どうやって表現すんの?お前
なんもドキュメント作らない前提じゃないと成り立たない

つっかえねーw
2018/04/26(木) 00:05:16.32
われながら途中で投げ出してわかるからと適当に書いた設計書がやばい
自分はわかるがテスターが
どうしよ
2018/04/26(木) 00:11:00.24
>>668
当たり前とはつまり自分の思い込みで根拠がないことを指す

このコードだって最初からきれいに書いてちゃっちゃと作ったのか
時間をかけてレビューして整頓したのかどうかなんてわかんないじゃん
2018/04/26(木) 00:17:32.88
>>674
> 2000行規模のコードでメソッド200個近く作るんだろ
> どうやって表現すんの?お前

でもさ、コードでは実際にそう表現されてるよ?
そこの矛盾に、君が気づかないといけない
2018/04/26(木) 00:20:48.44
面白いのを見つけてきた

【読者参加型企画】2,000行のJavaソースコードを読むのに何分かかりますか?
https://codezine.jp/article/detail/4388

コードレビュー速度 (1時間あたり)

IEEE: IEEE Standard for Software Reviews and Audits(1028-2008) によると
100〜200行(Technical reviews)らしい。

つまり2000行だと10〜20時間、1日〜3日、コードレビューにかかる

いいですか?
2000行にかかるコードレビューの時間です。
2018/04/26(木) 00:32:42.36
https://gigazine.net/news/20150918-google-2billion-code/

> 2015年1月時点で、総ファイル数は10億、ソースファイルの数は900万、
> コードは20億行あり、3500万回のコミットがあって、内容は86TBあるとのこと。
> そして、営業日1日に対してのコミット回数は4万5000回。

1ファイルの平均は20億÷900万=222行でした。
2000行規模なら10ファイル程度

俺は妥当なところだねと思うが、
そう思わない人がいる。

そこにレベルの差を感じる
2018/04/26(木) 00:34:49.47
トレードオフって言葉を覚えた方がいいよ
この機能を実現するために必要な処理は何?
って聞かれても何も答えられないっしょ?
さらにドキュメントを書かせる現場で君は役に立たない
たった2000行程度で200個もメソッド作るようなカスはどこ行っても
使えねーからオープンソースでも
組んでろよ
2018/04/26(木) 00:44:22.87
> この機能を実現するために必要な処理は何?
> って聞かれても何も答えられないっしょ?

「この機能」って?
この機能だけで見積もりできるの?設計できるの?
2018/04/26(木) 00:45:19.30
>>678
で、なにが言いたいの?
スレの流れは関数の長さとそのレビューにかかる時間だったけど、その引用のレビュー時間は
関数の長さとどう関係があんの?
まさか、2000行のコードっていうのを、2000行のひとつの関係って解釈した?
2018/04/26(木) 00:46:39.82
>>680
2000行なら100メソッドだろ?
何勝手に水増ししてんだw

普通に作れば100個のメソッドなんて普通にできる
1関数10〜20行にしないとテスト不可能
テスト可能にするとだいたいコレぐらいになる。

そこから逆算すれば100個のメソッドは
普通に作ればできる

トレードオフの話をするのであれば、
トレードオフした結果が100個だ


って、やっぱりマジ1関数10〜20なんてありえない
50行超えるのがザラなの? レベルに大きな差があるよ。
自覚だけはしておこう
2018/04/26(木) 00:49:24.26
トレードオフって何と何のトレードオフなんだろう?

最初から短い関数で書けばいいと思うけど、
関数を長くすることで、何のメリットがあるの?
2018/04/26(木) 00:49:29.64
>>678
そもそもテクニカルレビューってなに?
どういう目的でどういうレビューをしてるかによってかかる時間はいくらでも変わると思うけど、
テクニカルレビューがなんなのかわからないから10〜20時間が長いのか短いのか評価できないんだけど
2018/04/26(木) 00:51:12.51
ふつうだのレベルだの漠然としたことしか言わんやっちゃ
2018/04/26(木) 00:51:43.19
例えばプロだと間違えずにキーを打つことが高速にできる。

だけど素人だと間違えずにキーを打たなければいけないという
条件をつけると途端にタイプするのが遅くなる。

それと一緒でプロだと普通に作っても関数は10〜20行にできるが
そうでない素人だと頑張らないと達成できない

そう、素人
2018/04/26(木) 00:52:05.80
>>685
リンク先読めば?
2018/04/26(木) 00:57:05.65
>>688
わかんないままドヤ顔で引用しちゃったんだな
2018/04/26(木) 01:00:43.49
技術的難易度が低いただのCRUDアプリみたいなものしか作れない人は、いかに綺麗にコードを書くかとか
そういう話題でしか技術っぽい話ができないから、ここぞとばかりに語るよな
2018/04/26(木) 01:00:54.12
>>683
それって20行換算じゃん
最大行で見積もるなんて心苦しいから10行にしてやったんじゃん

2000行でメソッドが200個できて
20000行で2000個だ
100000行で10000個じゃん

この間やったプロジェクトのコードがそんなもんだったけど
メソッド10000個とか明らかに
茶碗が小さすぎる
おちょこに飯もってるみたいにアンバランスだろ
2018/04/26(木) 01:04:35.27
>>689
> わかんないままドヤ顔で引用しちゃったんだな
いや、普通にリンク貼ってるじゃん?
2018/04/26(木) 01:06:27.50
>>691
> この間やったプロジェクトのコードがそんなもんだったけど

お? ちょうどいいやん。
何ファイルで何クラスで何行ぐらい?
2018/04/26(木) 01:10:21.07
>>693
いいや、コードは100000行でメソッド数は2000ってとこだね
10000とかドキュメント工数単純に5倍になんじゃねーか?
2018/04/26(木) 01:14:29.41
そもそも設計書からしてそんなに大量のメソッド作成するように書いてるのか?
設計書に書いた処理とソースの処理を一致させないと説明が面倒だろ
2018/04/26(木) 01:15:20.39
>>691
> 100000行で10000個じゃん
数を大きくして、多く見せたいようだけど無駄w

10万行だろ? 1ファイル(=1クラス相当)が200行ぐらいなので
500個もファイルがある。メソッド1万個は1ファイル(クラス)20個のメソッド
これは普通の規模だ

そもそもお前、ちゃんとモジュール化できてないだろ?
役割ごとにちゃんとファイル(クラス)分けろ
2018/04/26(木) 01:17:14.11
>>695
> そもそも設計書からしてそんなに大量のメソッド作成するように書いてるのか?

実際にコードはそれぐらいになるんだから、
それに相当するメソッドは誰が作り出してるかってことだよ。

設計書にこの程度の数のメソッドが書いてないなら、
その設計書通りに作ると破綻するということを意味する

きちんとレビューしてテストするためには、
実際にそれだけの小ささのメソッドでなければいけないのだからね
2018/04/26(木) 01:25:34.92
実際にコードを書いてる人は、これぐらいの数の関数は作ってるんだよね。

それにたいして、こんなに大量の関数なんて設計できない。
予め想定することなんてできない

っていうのなら、そういうことだよ。
お前らがやってる設計とやらの仕事は、
現場には通用しない仕事だということ

Sヨとか言われてバカにされてるじゃん。
それが事実だってことだよ。
2018/04/26(木) 01:39:49.55
さてリファクタリングの話に戻すぞ?

これが実際の優れた開発の現場だから、最初に全部設計して
最初に考えた関数だけで作るなんて不可能なわけさ
関数の数が多すぎる!って叫んでるアイツ見りゃわかるだろ?

でも実際のコードはそれだけの数の関数がある
この差をどうやって埋めるよ?

最初は設計に書いたとおりの形から始める
実装が進んで次第にコードが膨れ上がっていく
テストできなくなってしまうから、再設計が必要
といっても大きなものじゃない。こまめにやる。

これが開発の中に自然に含まれているリファクタリングだ。
リファクタリングは開発に含まれるもので
別の作業として分離してやるもんじゃない。
2018/04/26(木) 02:27:16.80
糞コードいつか破綻するのはわかってるのに
そのまま売りまっくて最終的には極悪に肥大したクソコードのリファクタリングしろという
まずその事実を知っていて売り続けた開発部長やら上層の誰かに責任取らせろやハゲが
2018/04/26(木) 03:03:40.58
>>699
リファクタリングは「改修」に含まれるものっていう主張はやめたんだねw
視野が狭かったことに気づいてくれて嬉しいよ
2018/04/26(木) 03:26:26.13
ん?やめてないよ。開発の中に改修は含まれている
改修をしない開発会社なんてないんだから
2018/04/26(木) 03:26:52.94
はいはいw
2018/04/26(木) 05:13:46.24
>>695
ソースレベルの設計書なんて書くわけないやろ
2018/04/26(木) 09:34:52.67
ソースレベルの設計書とか言ってる奴はまだマ歴1ヶ月なんだから優しくしてやれ
2018/04/26(木) 09:51:20.89
つまり

1. テスト可能なメソッドは十分短いものである
2. 設計でそれらを全て洗い出すのは無理

ってことなんだよね

これは重要な大前提では?
2018/04/26(木) 09:52:44.36
>>705
世の中には、設計で洗い出した関数しか作らない
作れないプロジェクトがあるらしい

そういうプロジェクトが破綻するのは目に見えてる
2018/04/26(木) 10:30:15.01
ソースレベルの設計書ってなに?詳細設計よりもっと細かいやつ?
アセンブラ時代のフローチャートはほぼソースとイコールだったけど
2018/04/26(木) 12:27:07.55
>>707
それくらいで破綻しないよ、昔の人の多くはそれでやってたんだから
破綻するなんてのは、誰にでもできるがゆえに参入障壁が低く競争過多な世界で納期に追われてる奴の発想笑
2018/04/26(木) 12:31:16.98
破綻はしないが非効率的すぎるわな
2018/04/26(木) 12:57:21.34
設計で関数を洗い出すのはいいんじゃねーの?
ソースは完全にプログラマに任せるスタイルなのか、ある程度は監視するスタイルなのかの差だと思うよ
個人の技量に任せたら関数の切り出しするやつとしないやつで差がですぎてソースが混乱する
2018/04/26(木) 15:10:37.16
そこまで細かく詰めるならその場でコードまで書いてコンパイルと簡単なユニットテスト通しちゃえよ
少なくともインターフェースとスタブは書けるだろ
2018/04/26(木) 17:56:23.04
>>712
それをやることになんの意味が?
2018/04/26(木) 18:26:57.92
>>713
無駄な工数を省いた上に戻りも減らせる
715KAC
垢版 |
2018/04/26(木) 20:18:39.67
>>712
コードを書かなきゃ必要な関数を洗い出すこともできないのは最近の風潮だよな

大規模なチームで設計するときにも、
各自が関数洗い出したのを持ちよって全体最適化とかしてないだろ?

普及している手法にはメリットやデメリットがあるのは当たり前
色々な開発手法知らないと最善策見つけられんだろ
2018/04/26(木) 21:06:08.65
昔に比べりゃ関数作るのはアホみたいに簡単になった
CollectionやらThreadやらStringやら
大体コアになるもんはありものが揃ってるし
2018/04/26(木) 21:57:25.51
設計書ってパンチカード時代の名残だぞ
そんなものを未だに盲信してるなんて滑稽だ
718仕様書無しさん
垢版 |
2018/04/26(木) 22:34:16.48
デシジョンテーブルは書くやろ?
2018/04/26(木) 22:43:24.25
>>718
そうやってすぐコード以外のなにかに逃げようとすんなよSEさんよ
2018/04/26(木) 22:52:07.11
そらDBからデータを取り出してブラウザに返すだけのアプリに設計書なんていらんわな
2018/04/26(木) 22:59:08.51
二人以上で作業するなら電卓アプリでも設計書いるわ
2018/04/26(木) 23:20:45.92
>>720
メモリからデータを取り出して画面に表示するだけのアプリばかりでは?
2018/04/26(木) 23:44:04.93
DBからデータを取り出してブラウザに返す仕事なんて、専門教育を受けてない文系でもこなしてるという事実
2018/04/26(木) 23:45:51.71
リファクタリングの話が盛り上がるのは、文系でも参加できるから
2018/04/26(木) 23:52:49.47
文系が参加って、技術的な話での参加じゃないじゃんw
2018/04/26(木) 23:57:54.18
>>723
宇宙ロケットのネジだって高卒が締めてるにちがいない
そんな理屈で仕事の難しさがわかるものか
2018/04/27(金) 06:18:08.07
設計書なんてコードから生成するもんだろが
2018/04/27(金) 07:15:01.31
>>727
そのコードを最初に、どうやって書く訳?
2018/04/27(金) 07:24:26.55
エディタ開いてタイプしろよ
そんなことも言われなきゃわからん?
2018/04/27(金) 12:13:18.45
>>729
お子ちゃま?
2018/04/27(金) 21:44:36.77
>>728
それ辿るとBIOSまで行くぞいいのか
2018/04/27(金) 21:54:27.71
すでに存在するものまで遡らなくていい
2018/04/27(金) 21:57:24.49
リファクタできない無能には9連休なんてないんだろうなww
2018/04/27(金) 22:13:06.31
明日からリファクタリングのために9連勤です
この工数がなければ休めたのに
2018/04/27(金) 22:20:26.31
ほらな。なんどもリファクタリング単体の作業は間違ってる。
ふつうの開発(改修含む)に含まれているものだ。
と言ってるのに、やっぱり理解できていない
完全に間違いが身にしみてるんだろうな
2018/04/27(金) 22:50:04.81
すでに運用中のシステムの保守開発に途中参画して、リファクタリング単体の仕事をやることもありますね。
視野が狭い方には思いもよらないでしょうけど。
2018/04/28(土) 00:55:26.89
>>731
howだけじゃなく、why for why考えれるかが分岐点。
2018/04/28(土) 01:04:45.94
なんで?
739KAC
垢版 |
2018/04/28(土) 01:49:53.92
>>735
お前さん、純粋なリファクタリングやったこと無いのな。
どおりで作業量とかリスクとか全く理解していない訳だ。
2018/04/28(土) 02:04:59.74
純粋なリファクタリング(笑)

どこ出典ですかねそれ
お前の最強の純粋なリファクタリングみしてみろよw
741KAC
垢版 |
2018/04/28(土) 02:37:47.95
>>740
お前は「リファクタリングを改修と併せてやる」事しか知らないんだろ?
「リファクタリングのみ」の評価知らないのに正しく評価できないだろ。
2018/04/28(土) 02:41:55.96
だからどんなもんか試しにみしてみろって言われてんじゃん
2018/04/28(土) 04:13:15.29
>>731
宇宙誕生まで調べるだろフツー
2018/04/28(土) 07:14:45.24
改修準備
調査分析
自動テスト作成
負債返済
利便性向上

少なくともこの5種のリファクタリングを日常的に行う
改修前のリファクタリングしか知らないならまだまだだね
2018/04/28(土) 07:16:05.03
改修前のリファクタリングは純粋なリファクタリングなんだが爺さんにはわからないかな
2018/04/28(土) 13:16:55.76
機能追加とかデバッグの時に
リファクタリングしちゃだめよ
2018/04/28(土) 13:25:13.25
帽子をかぶりなおす
2018/04/28(土) 13:27:23.72
ヅラ
2018/04/28(土) 16:36:26.14
事実の再構築、それが本来の純粋なリファクタ

たとえばガス室はなかったとか
強制連行でなく移民だとか
そういうことを言うとリファクタだと侮蔑的レッテルを張られ非難された

あんまり面倒なのでえらい人が別の意味で単語を上書きすることにした

そのあおりをくらってIT従事者は楽しいが不毛な作業に邁進している
2018/04/28(土) 16:41:21.19
KAIZAN活動やってたぜ
2018/04/30(月) 00:19:13.47
少し話が変わるが、実装と単体テス
ト(自動化)って同時に行って、工数も含めるよな?
自動化するのに別途工数くださいって言われるんだが・・・
こっちとしてはバッファ含んでも余裕ある日数でお願いしているのに
工数が無いって言うくせに遅刻は半分くらいするし、たばこプカプカで手を動かさない
首切りたい。
2018/04/30(月) 00:29:57.65
現場のマネジメント次第でしょ
それどうするか決めるのおまえの仕事じゃねーか

そいつは工数が必要だって言ってるんだからいるんだろ
いくらコーディングだけなら余裕のある日数っつったって
最初お前の頭になかったんなら、全体的な工数がどうなるかは見直すしかない

行けるはずだから頑張れっていうかちょっと工数伸ばすか管理見直すか決断しろ
おまえがやるべきことだ
2018/04/30(月) 00:30:23.53
>>751
契約ではどうなっているの?
請負の成果物になければんなもんつくんねーよ
2018/04/30(月) 00:45:24.35
ちなみに自分とこの現場の経験でいうと
単体テスト仕様書はコーディングの1.5倍、
ユニットテストは3倍ぐらい工数かかります

ご愁傷様
2018/04/30(月) 06:17:53.95
そんな3倍もかからんよ
せいぜい5割り増し程度
自動テスト書くとエビ撮りはもちろん実験やデバッグが爆速になるから総合するとむしろ工数が減る
2018/04/30(月) 07:27:48.52
でもな
その仕様じゃ動かんのよ
757仕様書無しさん
垢版 |
2018/04/30(月) 08:34:15.52
>>755
まあキチンとやってればそんなもんだね。
ただし、禄に設計されてない(抜け漏れ、重複、矛盾多数)プロジェクトだと、テスト時に発覚ーーー>設計修正工数認めない!ーーー>テストケースが歪なのを何とかしようと無駄な作業、で数倍に膨らんだりするが。
2018/04/30(月) 08:38:37.95
>>757
それテストじゃなくて別の問題だよね
2018/04/30(月) 08:42:49.78
>>757
テストしっかり書いたから抜け漏れに気が付いた
気がついてよかったじゃん
悪いのは静的解析もテストもしないで設計して抜け漏れ発生させた設計チームだろ?
だから設計書は役立たずのゴミなんだよな
2018/04/30(月) 09:32:29.73
>こっちとしてはバッファ含んでも余裕ある日数でお願いしているのに

この言い草にやばいSEのにおいがしてトラウマが刺激された

自分の作業の考慮抜けを無視したり、いらない仕事山ほど詰め込んだ挙句に結果工期伸びてるのに
この認識を修正できずに
「案だけ余裕あったのに何で間に合わないの?」みたいなこと言ってくる奴の多いこと…
2018/04/30(月) 10:28:50.80
まだ人月とか信じてる奴いるんだね
2018/04/30(月) 11:12:10.98
バカ10人の首切ってスーパープログラマを1人雇ったほうが生産性高い
2018/04/30(月) 11:17:42.25
バカ10人集めたらできるような仕事の生産性をちょぴりあげるために
スーパープログラマを投入されてたまるか
2018/04/30(月) 11:29:56.67
カスみたいなCRUDを高速で量産するスーパープログラマとはw
2018/04/30(月) 11:31:28.59
スーパープログラマにカスPGの仕事をやらせたらめんどくさがって自動化しちゃうから実質10倍どころじゃない
万倍以上の差が出る
2018/04/30(月) 12:05:57.16
>>765
500人月を1人日か
そんな事例知らないくせに、ぼくのかんがえたさいちょうのすーぱーぷろぐらま語ってドヤるとかリアル中学生かよ
767仕様書無しさん
垢版 |
2018/04/30(月) 12:10:21.19
まあでも俺がクソプログラムを100量産してる間に10リファクタリングしたとこで意味をなさないんだがなw
2018/04/30(月) 12:17:18.95
そのクソプログラム100個相当のものを
プログラム10個で作り上げるのがスーパープログラマ
当然リファクタリングした結果もこうなる
769仕様書無しさん
垢版 |
2018/04/30(月) 12:18:09.57
そして文の意味を理解できないアホが俺様リファクタリングしてむちゃくちゃにして動かなくするとw
2018/04/30(月) 12:20:25.30
お前らが100000人いてもlinuxは作れなかった
つまりそういうこと
2018/04/30(月) 12:23:04.24
作れるのでは?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況