[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 11/04 03:18 / Filesize : 386 KB / Number-of Response : 1023
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

オブジェクト指向システムの設計 170



1 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 23:08:42.31 ID:pIEuB3Z3.net]
オブジェクト指向に限らず、理由もなく小さく細分化させるのはアホ
オブジェクト指向は役割でオブジェクトに分割するものであって
処理で分割するものではない。

2 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 23:09:37.69 ID:Usq7Wp/A.net]
要件定義を書け

3 名前:デフォルトの名無しさん [2016/05/30(月) 23:11:13.19 ID:8pkfhQuv.net]
170って何だよw
Aperyがクラスに分かれていたのがよっぽど悔しかったのか?

4 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 23:14:33.08 ID:pIEuB3Z3.net]
そりゃAperyは将棋ソフトであって思考ロジックじゃないんだから
将棋ソフトの部分は複数のクラスに分かれているだろうさw

5 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 23:15:27.06 ID:8pkfhQuv.net]
>>4
え?

6 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 23:16:07.45 ID:ILfmqIwk.net]
次スレ乙www
170!?

7 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 23:17:30.10 ID:ILfmqIwk.net]
ああなんか©ってスレタイについてて
次スレたてる専ブラの機能で170になったんね
理解した

8 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 23:52:44.45 ID:j9NktVXe.net]
要件定義

(必須機能)
第5条 参加ソフトは、次の各号に掲げる機能を持たなければならない。
一 任意の局面・手番・残り時間からの将棋の対局の開始と継続。
二 任意の時点での対局中断。
三 対局中の現在局面の表示。テキストでも良い。
四 第 19 条の規定による、1 手毎の消費時間の計測、及び累計消費時間の画面への表示。
五 1 手毎の指し手と消費時間の記録。対局中断時も、そこま

9 名前:でのすべての指し手と消費時間を取り出せなければならない。
六 CSA サーバプロトコル ver.1.1.3 に基づく、LAN による対局。
七 相手の指し手の手入力による対局。
[]
[ここ壊れてます]

10 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 23:53:11.34 ID:j9NktVXe.net]
(推奨機能)
第6条 参加ソフトは、次の各号に掲げる機能を持つことが推奨される。ただし、機能を持たないことによって不利になることはない。
一 千日手の検出。
二 LAN による通信で送受信した文字列の必要に応じた表示。
三 任意の局面・手番・残り時間からの LAN による通信での将棋の対局の開始と継続。

denou.jp/tournament2015/img/rule/denou_tournament_rule2015.pdf



11 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 23:56:25.79 ID:8pkfhQuv.net]
将棋ソフトはオブジェクト指向設計の例として適切だと確認されたけど
それを認められずに喚いてる連中がたくさんいるのが

12 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 00:26:54.61 ID:ZlkkiL++.net]
誰も説得できてないし納得してないのに勝利宣言とか恥ずかしいわ
将棋ソフトはオブジェクト指向で作る旨味も意義も薄すぎるって散々言われてるのに読んでないのか?
出てきた反論は「じゃあ他の例を出せよ」と「aperyはオブジェクト指向」だけ。
後者に対してソースがC++だからOOだと短絡的な勘違いをしてることも丁寧に説明してるのに反論しないの?

まあ他人を否定したいがために要件定義しろとか誰も前提にしてなかった電王戦のルール出すのも馬鹿なんだけどな

13 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 00:30:39.71 ID:HPDljpqn.net]
>>11
こいつも見苦しい
将棋ソフトをオブジェクト指向で作る意義が分からないとは…

14 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 00:36:09.45 ID:9fus3M7D.net]
前スレで出てきたFizzBuzzEnterpriseの将棋版を目指すって感じかしら?
性能度外視の練習的な意味で

15 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 01:12:39.02 ID:tMa64zwE.net]
あくまで大真面目にシュールまたはシニカルな面白さを追求する設計方針

16 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 01:13:54.56 ID:yByP5MuE.net]
>>12
意味ないよ
そもそもオブジェクト指向の利点って何なのさ
将棋を作ることで何か見えてくんの?

駒なんか絶対クラスにしないし
駒をクラスにしないならオブジェクト指向じゃないし(笑)

17 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 01:27:56.86 ID:BenfpwXE.net]
UIとネットワークまわりはとりあえず分けよう
棋譜ファイル読み書きもわけよう

18 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 03:35:29.23 ID:9wsPGZ+1.net]
駒はクラスにするだろ

switch 王: 飛車: 角:
など、駒の種類数だけの、分岐を書くことがなくなる

if・switch が消えるから、バグが減る。
これがオブジェクト指向の利点の一つ

RPGなんて、キャラクター・モンスター・魔法・アイテムなど、
オブジェクト指向の宝庫

19 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 03:55:32.81 ID:/+1mPN+r.net]
>>17
激しく同意
駒はクラスにするよな

20 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 06:08:49.98 ID:Q6hYp8jt.net]
初心者は必ずそこにハマるよな



21 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 07:10:00.11 ID:pY1i4wnE.net]
将棋の思考ルーチンなんて素人のオレでも出来るぞ
全部乱数によるランダム挙動
ただコマが動くだけ、人工無知能ww
>>17
たぶん、プログラムを記述する上でどの様に整理整頓するかって事ちゃう
ここら辺の記述スタイルは宗教論争っぽくなっている
私は記述からの読解力が高いので短く記述させろ〜から
他人が保守することを考えろ〜で物凄いタイプ量を伴うスタイルと長い名前を要請するタイプ
C++は長い方だね
class 歩
bool と金=false;
int 移動歩[9]={0,1,0, 0,0,0, 0,0,0};
int 移動と金[9]={1,1,1, 1,0,1, 0,1,0};

22 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 07:30:54.26 ID:DWw0UGY/.net]
>>17
は?ifとswitchはてめーが隠したから見えねーだけで実際には分岐はあるだろ

単にコードから見えにくいだけでテストは思いっきり漏れてる

そして設計書には絶対記述しなければならないないようなのにコードでは見つからないようにする
その利点が俺には全くわからない
不具合が増えるだけちゃうの?
それこそ知らん奴が見た時それが設計書のそれであることはソース中を追い回さないといけないんだろ?

23 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 08:30:44.01 ID:BenfpwXE.net]
分岐はあるけど
どこに分岐を書くかが重要なんじゃないの?

メソッド毎に10個の分岐をそれぞれ書くよりも
最初にサブクラスを決める分岐を1つ書いたほうが楽じゃん

24 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 08:35:46.53 ID:QN5Mj7aA.net]
>>22
switchで並んでたほうが一目瞭然だよね

25 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 08:40:38.99 ID:BenfpwXE.net]
>>23
抽象化とか理解できない人?

26 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 08:51:13.02 ID:QN5Mj7aA.net]
>>24
抽象化のために一目瞭然でわかるコードをわざわざ改悪しない人

27 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 08:56:25.89 ID:BenfpwXE.net]
>>25
どこまでが一目瞭然?
一つのswitch文にcaseが10個あったら?20個だったら?100個だったら?

28 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 09:01:48.42 ID:QN5Mj7aA.net]
>>26
1000でも10000でも仕様である限り
チェックは必要
だったら並んでたほうがいい
逆になんで抽象化したらそのチェックをしなくていいと思ってるのか?
頭悪いんじゃないのお前

29 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 09:08:23.90 ID:BenfpwXE.net]
>>27
チェックって何を指していってるの?
switch文レベルでチェックが必要な状況を知りたい

サブクラスのユニットテストじゃ駄目なの?

30 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 09:11:20.37 ID:GPXTRY73.net]
俺も駒はクラスにするわ。
で、moveメソッドを定義してその中にそれぞれの動きや制限を書くわ。

その方がソースコード内で各駒に付随する情報や手続きがコンパクトにまとまると思う。



31 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 09:12:07.95 ID:QN5Mj7aA.net]
>>28
設計書にこの時はこの処理をしますって書いたからそれがソースにも
わかる形であったほうが
後から読む人がわかりやすいでしょ?
俺は設計書とソースを一致させることに全力を尽くす

32 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 09:14:05.76 ID:QN5Mj7aA.net]
逆に抽象化してる奴は設計書にも書いてるの?

33 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 09:18:40.51 ID:QN5Mj7aA.net]
>>28
ユニットテストでいいわけねーじゃん
5種類処理が通るのに1つしかチェックしませんって言ってるんだろ?
食わせるパラメータが変わったら死ぬかもしんねーじゃん

34 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 09:21:30.75 ID:BenfpwXE.net]
>>30
この「時」はこの処理をします
この「サブクラス」はこの処理をします
普通に一対一の対応だけど

35 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 09:23:07.14 ID:BenfpwXE.net]
>>32
食わせるパラメータっていうのはつまりサブクラスが変わったらだよね
ユニットテストでカバーしてるよ

36 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 09:39:19.63 ID:aqblqKlU.net]
て…テストって…目視じゃあ…ないの?

37 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 09:57:36.10 ID:GPXTRY73.net]
何となくだけど>>32はオブジェクト指向の利点やプログラミングの仕方そのものを
理解してない気がする。

まずはオープンソースのライブラリを眺めてくれば良いんじゃないかな?
たとえばGUI関連とかだと駒=Widgetの対応で分かりやすいと思うよ。

38 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 09:58:36.80 ID:HPDljpqn.net]
>>15
そもそもオブジェクト指向の意義を分かってないだろ?
自分が理解していないだけなのに価値がないって言っちゃう奴

39 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 10:03:35.71 ID:HPDljpqn.net]
>>20
設計なんてしないでも構築できちゃうと言っちゃう奴っぽいな
前スレで3行の疑似コード書いて設計が完了したとのたまって失笑された君w

40 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 10:04:52.49 ID:HPDljpqn.net]
>>21
こいつもオブジェクト指向の意義が分かってない



41 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 10:11:20.80 ID:HPDljpqn.net]
>>32
それぞれのクラスについてテストするに決まってるだろ…
自分の技術力が低いだけなのに技術が悪いって言っちゃう奴の典型だな

42 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 10:16:39.60 ID:HPDljpqn.net]
全然分かってないやつがswitchについてあれこれ語ってるのがうざいから教えてやると
switchが一箇所しかないって思い込みが間違ってんだわ
それとオブジェクト指向の意義について勉強してから書き込めよ
デザインパターンの最初の何章か読めば分かるだろ
デザインパターンは初心者が読んでも理解できないから理解できてないだけかもしれんが

43 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 11:30:30.06 ID:QN5Mj7aA.net]
>>34
できてないよ
タイミングもA処理とB処理とで違うじゃん

記述の仕方によるテストの数は変わらないよね?
したら違いはswitchで明示的に処理の種類がわかるか否かじゃないの?

44 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 11:44:47.87 ID:BenfpwXE.net]
>>42
明示的に処理の種類がわからなくても済むというのが抽象化のいいところなんだよ

45 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 11:46:26.65 ID:QN5Mj7aA.net]
>>43
読み手にとってなんのメリットもないじゃん
知らん人がそこいじったときにわからないのはメリットなの?

46 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 11:55:41.59 ID:BenfpwXE.net]
>>44
メリットだよ
車を運転するときにアクセル踏めばスピードあがるってのに
エンジンやギアがどう動いてるかを理解する必要ないでしょ

47 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 11:57:05.52 ID:QN5Mj7aA.net]
>>45
いや、バグったのお前が組んだところみたいだけど

48 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 11:57:58.21 ID:BenfpwXE.net]
>>46
バグった条件教えてくれれば
ユニットテスト追加して検証するよ

49 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 11:58:25.34 ID:QN5Mj7aA.net]
お前にしかわかんないようにしてあるのね
なんのためか知らんけど
設計書には書いてあるの?

50 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 11:59:53.24 ID:BenfpwXE.net]
>>48
>>33



51 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 12:03:15.69 ID:BenfpwXE.net]
デザパタの典型だから
ちょっとでも勉強すれば理解できると思うよ

52 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 12:12:14.38 ID:QN5Mj7aA.net]
>>50
でも理解する必要ないんでしょ?
さっきそう言ったよね?

53 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 12:17:00.42 ID:BenfpwXE.net]
>>51
抽象化されたのはそうだね
抽象化のデザイン自体は理解しないといけないよ
switch文の使い方を学ぶようなもん

54 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 12:19:33.48 ID:NDGHRGCl.net]
駒のインスタンスを生成するときに一回だけファクトリクラス内でswitch通すだけ。駒種別による動きの違いは各クラスが持ってる。あとはインターフェイス越しに操作する

歩は歩の動きをするし桂馬は桂馬の動きをする。動きがおかしい駒が有るなら対応するクラスを直せばいいんだよ

別に隠れて無いと思うけどね

55 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 13:16:21.12 ID:QN5Mj7aA.net]
>>53
最悪だよ
結局そこの処理って何種類あるの?
ってクラス生成してる箇所全部探すんだよね?
ヘタしたらソース全域じゃん
だったらswitchでまさにそこに一覧を置いておいてもらったほうが絶対読みやすいよ

56 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 13:37:41.62 ID:BenfpwXE.net]
>>54
そんなことにならないためのモジュール化だよ
クラス間の依存を局所化するんだよ

57 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 13:46:17.91 ID:QN5Mj7aA.net]
>>55
だからswitchでいいじゃん(笑)
すべてにおいてベターな方法があるのに脳ミソ腐ってるの?

58 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 13:54:42.25 ID:BenfpwXE.net]
>>56
あなたの言い方だとクラスの生成=switch文はソース全域にあるんだよね?
caseが一つ増えることになったらどうするの?
全部のswitch文を探してcase一つづつ足してくの?そっちのが最悪じゃん
サブクラスにしとけば>>53のファクトリー内のswitch一つの修正でいいんだよ

59 名前:デフォルトの名無しさん [2016/05/31(火) 13:56:27.56 ID:HPDljpqn.net]
ID:QN5Mj7aAのやり方じゃあちこちにswitchがあるくそコードになるのが欠点
指摘されても理解できない奴って…

60 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 14:10:04.79 ID:QN5Mj7aA.net]
>>57
お前も理解が足りんな
処理やチェックが増えることも減ることも無いよね
ってさっき確認したよね?
君のは俺と同じことやっててテスト項目が減るの?



61 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 14:14:19.90 ID:HPDljpqn.net]
>>59
コードの話だろ
コードの変更箇所が減ればテストが必要な箇所も減る
よってテストも減る
こんな常識も知らんとは

62 名前:デフォルトの名無しさん [2016/05/31(火) 14:28:31.17 ID:wvPr5zWv.net]
駒を分岐をvtable使うなんてしないだろ

63 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 14:28:53.26 ID:QN5Mj7aA.net]
>>60
残念ながら減りません
影響範囲のテストをサボってるだけ

64 名前:デフォルトの名無しさん [2016/05/31(火) 14:31:45.60 ID:HPDljpqn.net]
>>62
え?何言ってんのw

オブジェクト指向について何も分かってないのに語るなよ…
間抜け過ぎてまともな会話にならない

65 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 14:33:15.42 ID:HPDljpqn.net]
>>61
AIが書き込みをする時代になったのか

66 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 14:40:25.73 ID:BenfpwXE.net]
>>62
サブクラスに局所化されるから影響範囲は小さくなるよ

67 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 14:40:48.35 ID:LdI3VN67.net]
>>62
開放/閉鎖原則 (Open-Closed Principle(OCP))って知ってる?
知らないなら調べて見ると良いよ。

https://ja.wikipedia.org/wiki/%E9%96%8B%E6%94%BE/%E9%96%89%E9%8E%96%E5%8E%9F%E5%89%87
> 開放/閉鎖原則に従ったソフトウェアは、既存のソースコードを変更することなく、振る舞いを
> 変更することができる。

> 開放/閉鎖原則に沿ったソフトウェアは、既存のソースコードを変更せずに機能修正や機能追加を
> 行うことができる。そのため、品質検査を再実行する必要がない。

つまり、既存のコードに一切影響を与えることなく、新規に機能追加ができる。既存コードには
影響がないので、再テストも不要。
(自動テストがあるなら、実行するのはおおいに結構)

一方、switch-caseで処理を振り分けていたりする場合、新規に追加した機能のcaseが増え、
原理的には、その変更されたswitch-caseを含むメソッド/クラスを再テストする必要がある。

68 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 14:47:50.86 ID:QN5Mj7aA.net]
>>63
は?
ていうか同じ仕様のもん作っててなんでテスト項目変わるの?
だから少なくなってるとしたらn種類のうちの1種類しかチェックしてない箇所が大量にあるだけ
呼ばれるタイミングや状況の変化を考慮できてない
単にコードがいっしょだからテストも同じと誤魔化してるだけ
実際は起動直後に死ぬ
1秒待つと上手く行く

69 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 14:47:52.46 ID:LdI3VN67.net]
OCPの例:
objectclub.jp/community/memorial/homepage3.nifty.com/masarl/article/dp-ocp-2.html

class Note, Quater, Half, Staffがあり、Staff::Play()で演奏するが、ここに8分音符や16分音符
クラスを追加しても、class Staffを含め既存クラスの変更・テストは不要。

70 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 14:50:42.43 ID:NDGHRGCl.net]
>>54
そこの処理ってどこのこと?



71 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 14:51:48.20 ID:HPDljpqn.net]
>>67
だからさ、基礎くらい勉強してから書き込もうね
お前の知識レベルが低過ぎて会話にならない
テストが減る理由については他の人の書き込み含めてよく読もう
それでも分からないならお手上げ

72 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 15:27:02.55 ID:QN5Mj7aA.net]
>>70
お前こそいっぺんでも設計書書いたことあるの?
記述の違いでテスト項目が減るわけないだろ
ちゃんとテストやれ

73 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 15:32:23.92 ID:Q6hYp8jt.net]
>>30
に同意できるやつは少数派

74 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 15:36:36.68 ID:QN5Mj7aA.net]
俺コーディングの仕方でテスト項目が変わる現場いたことないわ
仕様書や設計書から起こすだろ常考

75 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 15:41:46.58 ID:LdI3VN67.net]
>>73
その設計書がコードと1:1でないなら、プログラマは普通コードを元にテストを書く。

>>68の例で言えば、8分音符を追加するという変更の時、どのコードがテスト対象になるのかを
知っているのは、実装したプログラマだけ。
設計書がコードと1:1なら設計書からテストを起こせるが、そんな現場はないだろう。

76 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 15:52:32.77 ID:rtPt6hUE.net]
>>74
>プログラマは普通コードを元にテストを書く

そんなマー見た事いよ。先にテスト書いちゃうじゃん。
テストに合わせて実装が現場だと普通だよ。
分るでしょう?

77 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 15:53:45.05 ID:LdI3VN67.net]
>>75
> そんなマー見た事いよ。先にテスト書いちゃうじゃん。
> テストに合わせて実装が現場だと普通だよ。
sine

78 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 16:19:39.18 ID:HPDljpqn.net]
ID:QN5Mj7aAは自分が知らないものは間違っていると思う性質だから始末が悪い
お前がなっとくできるように説明してやるにはお前に理解させてやる必要があるという…

順番に理解させてやるからまずはオブジェクト指向の主要な目的を述べよ
まともな本なら書かれていることだからちゃんと読んで書くように

どうせ知らないから答えられなくてスルーするんだろ?
知識がない上に向上心がない情けない奴

79 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 17:10:12.18 ID:QN5Mj7aA.net]
コードからテスト起こしたら全部○だよな(笑)

80 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 17:19:55.49 ID:GPXTRY73.net]
>>77
面倒見良いなw



81 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 17:26:36.18 ID:NDGHRGCl.net]
>>78
粒度でかいテストしかしないの?
関数増やせば普通に単体テスト増えるよ

>コードからテスト
ホワイトボックステストとかカバレッジとか聞いたこと無い?

82 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 18:00:45.49 ID:z0ZguSAo.net]
オブジェクト指向言語を採用していながら
設計がオブジェクト指向を活かしてないプロジェクトは山ほどあるからなあ

83 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 18:27:58.89 ID:HPDljpqn.net]
>>79
確かにw

おまけにオブジェクト指向の主要な目的についてすら答えないという…
知識がないくせに自信満々で書き込みする連中って何なんだろうな

84 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 20:33:09.19 ID:+XfJxtAA.net]
オブジェクト指向しか眼中にないバカは洗脳されていていくら言っても無駄だから諦めろ
ソースコードを読んでもわからない仮想関数による潜在的な分岐が恐ろしいと感じるのは当たり前
それでもそうするだけのメリットがあった場合は仮想関数も使うというだけ
欠点も理解できていないようでは道具は使えないよね、まったく

85 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 20:50:11.93 ID:S7oA8kB+.net]
>>80
それっぽい言葉並べただけで
全然関係無いよね?(笑)

ソースからテスト起こしたとして各メソッドの入力に対する出力は何でチェックするつもりなの?
君、ソースコードからテスト起こしたんだよ
チェックできないよね?
っていうかまともに会社でテストしたことあるの?

86 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 20:55:39.47 ID:HPDljpqn.net]
>>83
そりゃお前の設計がおかしいだけだろ
メソッドの目的が明らかでないとは終わってる

87 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 21:13:59.06 ID:BenfpwXE.net]
>>84
テストって入力に対して出力をチェックするものじゃん
単体テストも然りだよ

88 名前:80 mailto:sage [2016/05/31(火) 21:30:14.57 ID:tiFC9Nv1.net]
>>84
議論の最中に知らない言葉が出てきたのにググらずレス出来ちゃう所は素直にスゴいと思うけどもうちょっと調べた方が良いと思うよ

関数内にIfなりswitchなりがあってどのルートを通っても想定通りの動きをしてるか確認したい場合どうやって試験するの?コード見てテストケース作るよね?

君の会社ではシステムテストしかしないみたいだけど普通はもうちょっと粒度の小さいテストもやるからね

89 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 21:50:02.34 ID:+XfJxtAA.net]
このように、オブジェクト指向から抜け出せなくなります
オブジェクト指向に凝るのは麻疹みたいなものっていうけど
万年麻疹では仕方がない

90 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 21:53:42.78 ID:HPDljpqn.net]
>>88
いやお前の設計がアホなだけだって
体験談がアホなんだもんw



91 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 21:58:58.52 ID:tiFC9Nv1.net]
>>88
内心オブジェクト指向と全然関係無い話で申し訳ないと思ってたけどお楽しみ頂けたようで何よりです

92 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 22:08:54.95 ID:BenfpwXE.net]
別にオブジェクト至上主義じゃないし、たった数十行くらいのプログラムでOOD()とか思うけど
複数のswitchにcaseが1000やら10000ぶら下がってても並んでたほうが一目瞭然とかいう>>27の物言いに
ついカッとなってしまった。今は反省している

93 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 22:40:38.43 ID:/+1mPN+r.net]
switchおじさん登場
「わしのcaseは1080まであるぞ」

94 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 23:07:32.14 ID:bQbJ8LGw.net]
>>87
ううん
コードからテストなんて絶対作らない
ってか作れない
正しい出力って何?
仕様書か設計書にしか俺には見当たらないけど?
ソースコードからどうやって正しい出力なんてわかるの?
そんなトンチンカンな仕事してて恥ずかしくないの?

95 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 23:16:01.35 ID:bQbJ8LGw.net]
そもそもユニットテストとか出してるけど
お前ユニットテストやったことあるのかよ
あれさメソッド毎に
入力値とそれに対する出力値を求められるわけじゃん
入力値に対する正しい出力値ってソースコードから生成してくれんの?
それともお前のやってるユニットテストってただ通して死ななきゃOKみたいな感じなの?

96 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 23:21:08.77 ID:HPDljpqn.net]
>>93
コードを書いてから、あるいはコードを見ながらテストを書く場合もあると言ってるだけだろ
言葉尻をとらえたら確かにおかしいけど、普通に考えてコードだけを見てテストを作る訳ないじゃん…

97 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 23:38:05.03 ID:4qIp1aFV.net]
まあコードからテストが自動生成できるならそれはそれでリファクタリングの際には
役立つけどな。
とくにレガシーコードをいじる場合。

98 名前:デフォルトの名無しさん [2016/05/31(火) 23:41:19.77 ID:KvOshn77.net]
>>93
テスターなの?

99 名前:デフォルトの名無しさん [2016/05/31(火) 23:42:12.84 ID:KvOshn77.net]
ソースコードみれば意図する出力はわかりそうなもんだけど
わからないところならコメントで補ってあるはずだよ

100 名前:デフォルトの名無しさん [2016/05/31(火) 23:42:46.24 ID:KvOshn77.net]
いまどき詳細設計書なんて書かないでしょ
コードとペアでテスト作ってるはずだよ








[ 続きを読む ] / [ 携帯版 ]

次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<386KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef