のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:126,331,943人
昨日:no data人
今日:
最近の注目
人気の最安値情報

    私的良スレ書庫

    不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
    ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

    元スレ【PHP】フレームワーク CakePHP 17ホール目【v2.4】

    php スレッド一覧へ / php とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    501 : nobodyさん - 2014/05/14(水) 21:19:27.30 ID:???.net (+20,+27,+0)
    さっぱり意味が分からん
    502 : nobodyさん - 2014/05/14(水) 21:51:05.96 ID:???.net (+33,+30,-202)
    例えば「足し算」ていうメソッドを作成したとする。
    これは引数に例えば「1と2を入れると3が返る」というもの。

    1「テストを書かないやりかた」

    こんな簡単なメソッド、どうやってもミスるわけない。
    とりあえず作る。最初に動くか確認する。
    動いた・・・終わり

    2「テストを書くやりかた」

    「1と2を入力すると3が返る」というテストを書く。
    開発しながらテストを走らせて正常か確認する。
    テストが異常なら、異常がなくなるまでプログラムを修正する。
    これをずっと繰り返す。

    3「テストを先に書くやり方」

    2のテストを先に書く。メソッドは空からスタート。
    テストが通るまで開発を行う。
    503 : nobodyさん - 2014/05/14(水) 21:56:32.40 ID:???.net (-26,-29,-32)
    console.logは、phpでいえばvar_dumpとかになるなんだろうが、
    使うときにコメントイン/アウトしなきゃいけないし、消し忘れるとそれがそのまま出力されて大変なことになる(センシティブな情報だったら・・・)。
    504 : nobodyさん - 2014/05/14(水) 22:52:25.27 ID:???.net (+36,+30,-141)
    上司がテストケース書いて、部下にそれに合うようなコードを書かせるってのなら良いと思う。

    ただcakephp1が2になったりするとテストも書き直しだよね。
    結局テスト書いてもそれ以上にプログラムの進歩が速いような気もするんだよね。

    ちなみにヤフーとかって10年前くらいにcgiをphpに書き直したみたいなこと聞いたけど、あれ以来書き換えてないのかな。

    それとも地道に書き換えまくってるのかな?
    505 : nobodyさん - 2014/05/14(水) 23:08:58.07 ID:???.net (+32,+29,-71)
    >ただcakephp1が2になったりするとテストも書き直しだよね。

    いきなりスパン長い話になってね?

    ビジネスロジックまで全部変わるわけじゃないんだからテストコードも一部はそのまま使えるでしょ
    テストコードまったくなしに書きなおすよりはいくらか書きやすいと思う
    506 : nobodyさん - 2014/05/14(水) 23:36:50.08 ID:???.net (+39,+29,-18)
    >>500の説明で合ってるんだが、何がわからないのかわからない
    507 : nobodyさん - 2014/05/14(水) 23:52:50.14 ID:???.net (+39,+29,-35)
    >>506
    ありがとう。そういうメリットもあるんですね。

    >>506
    わからない人にとっては全くわからないんだよね。テストケースのメリット。


    俺、gitもテストケースも使ったことないというか使えないので勉強します。
    508 : nobodyさん - 2014/05/15(木) 00:48:57.49 ID:???.net (+22,+29,+0)
    なんだかんだ言って教えるのなw
    509 : nobodyさん - 2014/05/15(木) 01:04:25.59 ID:???.net (+27,+29,-32)
    経験ないとわからないかもしれんね
    愚者は経験に学ぶと言うけど人間なんて全員愚者だから、がんばって経験を積もう
    510 : nobodyさん - 2014/05/15(木) 02:16:19.81 ID:???.net (+48,+29,-133)
    >>496
    こういう >>493 時に必要になるんだよ。

    例えば1日の区切りが0時じゃなく4時なサービスがあるとしよう。
    DateTimeオブジェクトや日時の文字列を受けて、何日かを返すメソッドがあるんだけど、
    中身を見たらこりゃひどい実装だなという時、
    テストがあれば、中身を書き換えても同じ結果を返す実装にできたとわかりやすい。
    511 : nobodyさん - 2014/05/15(木) 03:48:38.98 ID:???.net (+33,+29,-10)
    お前ら俺が以前テストの質問した時はスルーしたくせに
    テストの話題で盛り上がりやがって
    512 : nobodyさん - 2014/05/15(木) 04:08:36.66 ID:???.net (+32,+29,-12)
    >>511
    たぶんそれから必死で勉強したんだよ
    513 : nobodyさん - 2014/05/15(木) 10:33:38.61 ID:???.net (+45,+30,-127)
    >>510
    >中身を見たらこりゃひどい実装だなという時、
    >テストがあれば、中身を書き換えても同じ結果を返す実装にできたとわかりやすい。

    ここが想像できないんだよ。中身(モデル?)が酷い実装っていうけど、
    前は動いてたんだよな?それを変更する時に「酷い」が分かるんだろ?

    なら、テストも書き直しだと思うんだよ。俺も>>504と同じ疑問を持ってる。
    Cakeのバージョンアップではなくとも、仕様が変わればテストも変わるでしょ。
    514 : nobodyさん - 2014/05/15(木) 10:45:22.44 ID:???.net (+38,+29,-59)
    0か1で考えてんな
    少なくとも単体テストしやすいように設計してれば
    仕様を変えた部分の他に影響がないことを保証しやすいんじゃないか


    テストが書いてない誰かが作ったソフトウェアを改修する時に
    あっち変えたらこっち動かなくなったよみたいな経験ない?
    515 : nobodyさん - 2014/05/15(木) 10:52:06.00 ID:???.net (+27,+29,-12)
    んじゃあ次はgitってなんなのよ?
    516 : nobodyさん - 2014/05/15(木) 11:08:32.04 ID:???.net (+42,+30,-51)
    >>515
    俺も思うな。
    一人で開発したことしかないからか、
    前に戻したくなることなんてまず無い。

    毎回、add、commitする手間の方が面倒な気がするけど。

    ただ、いつでも何処にでも戻せる安心感ってのは大きいのかもしれない。
    dropboxでも戻せるけどどこに戻せば良いのかすらわからない。
    517 : nobodyさん - 2014/05/15(木) 11:14:00.56 ID:???.net (+39,+29,-126)
    >>513
    別人だけど、中身ってコードのこと言ってるんだろ。
    テストが完璧な仕様を表したものだと仮定すると、
    テスト通りに動く限りは、実装コードはいくら変えても構わない、という理屈。
    テストコードの方も変える必要がない(というか、変えたら同一の保証ができなくなる)。

    もっとも、リファクタリングの過程で、新しいクラスやインターフェースを追加、とかなることが多いから、
    その場合は、テストも変えていく必要はあるけど。
    518 : nobodyさん - 2014/05/15(木) 11:25:10.47 ID:???.net (+33,+29,-8)
    バージョン管理してないとかマジか
    まあ趣味で小規模のものならそれでもいいのかな…
    519 : nobodyさん - 2014/05/15(木) 11:31:50.75 ID:???.net (+38,+29,-134)
    >>516
    一人で開発を数年やってるが仕事でも個人サービスでもgitは重宝してる

    過去ログとして何をやったかが残ること。
    複数同時に機能開発ができること。
    gitなしにはもう生きられない。

    テストはControllerのテストは書かない。
    それより下位層は書いてる。
    自分が書いたコードを忘れたころに重宝してる。
    他の機能実装のために、さらに下位層を変更したときに重宝してる。

    デプロイツールもなしには生きられんな。
    520 : nobodyさん - 2014/05/15(木) 11:48:03.50 ID:???.net (+37,+29,-129)
    >>518
    残念ながら商用で10以上の製品を扱ってるんだ・・。

    gitの前にSubversionを勉強したこともあったけど、
    バージョン管理の利点があまり思いつかないんだよな。バックアップ以外で。

    マイナーアップデートしてそれをgitで管理する程度ならいいだろうけど、
    開発してたら頻繁に更新するわけだろ?コード間違えも多々ある。
    なのに、どのタイミングでadd、commitするか分からんし、
    毎回してたら515が言うように面倒だ。
    521 : nobodyさん - 2014/05/15(木) 11:52:50.01 ID:???.net (+47,+29,-83)
    >>514
    例えばこの2ちゃんの掲示板。
    名前とメールアドレスと本文入れて投稿すれば掲載される。
    この一連の処理が正しく行われるかのテストを書くわけだろ?

    で、そこに「画像を追加できる」という機能が加わったとする。
    コントローラーとモデルとビューにコードを追加し、テストも書き直すよな?
    なら、またテストのやり直しだ。
    522 : nobodyさん - 2014/05/15(木) 12:25:34.42 ID:???.net (+39,+30,-114)
    >>521
    テストにもいろいろ種類があるが、ここで書け書け言われてるのは、
    単体テストと呼ばれるやつな。

    で、単体テストの場合、一連の処理をテストするんじゃなくて、
    機能単位でテストする。
    俺も理解は甘いから、機能単位と言い切って良いのかわからないけど。

    なので >>510 のようなメソッドは、戻り値だけに着目すればよくて、テストが書きやすいんだけど、
    コントローラーのテストはちょっと書きにくい。
    コントローラーのメソッドはアクションで、実行されたあとの結果がいろいろあるからな。
    523 : nobodyさん - 2014/05/15(木) 12:37:38.37 ID:???.net (+47,+29,-246)
    >>521
    あえて掲示板ということで、CommentsControllerのaddメソッドのテストで考えてみると

    1 必須項目を省いてPOSTしたら、書けてない事
    2 書き込み成功していいPOSTなら、書けてる事
    3 名前を省略したら「nobodyさん」になる事

    もっとあるとは思うけど、addメソッドのテストとして、こんなのを確認するテストを書いたとする。

    「画像を追加できる」機能が必須項目じゃなければ、「画像を追加できる」を実装した後も、
    このテストは3つの部分は期待通りに動いてることを確認できると思う。
    で、画像を追加する投稿についてのテストをいくつか追記して、機能追加が完成できる。
    この場合あくまでテストは追記だから、テストは書き直しとは言わないと思う。

    画像が必須項目だったとしたら、1と2は書き直しになっちゃうだろうけど、これも微修正って範疇じゃないかと。
    525 : nobodyさん - 2014/05/15(木) 13:33:34.19 ID:???.net (+41,+29,-46)
    >>523
    物凄く分かりやすい!参考になった。
    つまり、その1~3をこれまではブラウザでいちいち実行してたのを
    テストコードさえ用意しておけば、自動で成否を出してくれるって事だよね?

    それならテストを追加する意味もあるし、すごく便利だと思う。
    526 : nobodyさん - 2014/05/15(木) 16:23:27.92 ID:???.net (+50,+30,-261)
    >>525
    伝わったようで何よりだけど、あげておとすようで悪いが、
    質問してた人が言ってたようなデメリットもやっぱりあるよ。

    実装が大きく変われば、さすがにテストも修正というより書き直しになるし、
    あとさっきも書いたけどコントローラーはテスト書きにくい。
    仕様変更で実装が大きく変わりやすい箇所でもある。

    あと >>523 この例でいうと、「画像を追加できる」機能を追加した際、
    ぶっちゃけテストなんてなくても1~3は壊れないような実装になりそうな気がすごいする。

    俺としては >>510 のような、ユーティリティ的なライブラリが、テストも書きやすいし恩恵も多いと思う。
    実際困ったから書いたんだけど、時間というテストがめんどくさいデータで、
    結局動作確認するには、4時丁度とその前後や、逆に0時丁度やその前後を引数に、呼んでみるしかないから、それってテストコードだしな。
    で、ユーティリティだからサービスのいろんな箇所で呼ばれてて、ミスったときの影響範囲も広い。
    なので、テストコードがないと、修正に及び腰になってしまう。
    527 : nobodyさん - 2014/05/15(木) 16:45:41.71 ID:???.net (+34,+29,-22)
    >>526
    なんかよく分からなくなってきたな・・・。
    コード書いて「こういうイメージ?」って聞こうとしたんだけど、
    どう聞けばいいからすら分からず、固まってしまったよw
    528 : nobodyさん - 2014/05/15(木) 19:50:47.49 ID:???.net (+22,+29,-1)
    ここはなんのスレですか?
    529 : nobodyさん - 2014/05/15(木) 19:53:03.77 ID:???.net (+32,+29,-49)
    スレタイ読めないの?CakePHPのスレですよ?
    ちなみにCakePHPにテストという機能がちゃんと用意されてますよ?
    だからその事について話し合っているんですよ?
    530 : nobodyさん - 2014/05/15(木) 20:27:14.89 ID:???.net (+28,+27,+1)
    >>529
    くわしく
    531 : nobodyさん - 2014/05/15(木) 20:53:28.94 ID:???.net (+21,+30,+0)
    532 : nobodyさん - 2014/05/15(木) 23:34:57.49 ID:???.net (+34,+29,-7)
    >>526
    テストコードがないと及び腰ってのすごくわかる。
    自分が作ったコードですら触りたくないもん。
    533 : nobodyさん - 2014/05/16(金) 13:54:12.18 ID:???.net (+25,+27,-2)
    では、先生方次は最近よく聞く
    composerについて教えて下さい。
    534 : nobodyさん - 2014/05/16(金) 14:02:22.96 ID:???.net (+27,+29,-6)
    あとで知ったかで話すから、ちょっと勉強する時間をくれ
    535 : nobodyさん - 2014/05/16(金) 14:26:46.96 ID:???.net (-26,-29,-136)
    composerは依存する外部のライブラリ等を管理して
    autoload処理までしてくれるもの

    packgistに登録されているものの他に
    gitやsvnとかで管理されているもの
    zip等で落としてくるもの、PEARとかも管理できる

    依存関係の解決や、バージョンアップの追従とかが簡単にできるのがいいね

    更新時にスクリプト動かしたりもできるから、さらにいろいろ使えるよ
    539 : nobodyさん - 2014/05/16(金) 22:12:07.93 ID:???.net (+18,+29,+1)
    >>538
    なるほど、さんきゅー
    542 : nobodyさん - 2014/05/17(土) 03:39:32.10 ID:???.net (-9,-7,-3)
    Model使わずに直接SQL叩けば宜し
    545 : nobodyさん - 2014/05/17(土) 11:54:40.61 ID:???.net (-27,-30,-97)
    すまん、言葉足らずだった。
    ルータのクラスを変更することは
    ここでは問題になってないってことを言いたかっただけ。

    で、今 routes.php で App::uses('ClassRegistry', 'Utility');
    して Model のインスタンス取得したら問題なく動いたわ。
    副作用は知らん。

    1.3系は ClassRegistry ってないんだっけ?
    途中から出来た?
    その辺はよく分からん。
    546 : nobodyさん - 2014/05/17(土) 12:16:13.55 ID:???.net (+26,+28,-14)
    WordPressが記事URLのルーティングを管理画面から変えられるけど、
    あんな感じにできれば便利だなとは思う
    547 : nobodyさん - 2014/05/17(土) 12:21:13.08 ID:???.net (+33,+29,-44)
    確かにそうだよな。
    もっと初期段階でモデルにアクセスできる仕組みのほうがいい気がする。
    他のFWとかのプロセスってこの辺りどうなってんのかな。
    俺はCakeしか知らないから。
    548 : nobodyさん - 2014/05/17(土) 12:58:47.14 ID:???.net (+32,+29,-56)
    >>547
    全体のローダーとルーティングで制限がかかるローダーはタイミングが別なものが多いよ
    前者でモデルの読み出しができれば使える感じ
    549 : nobodyさん - 2014/05/17(土) 13:17:23.08 ID:???.net (-21,-30,-52)
    で、結局何が問題なの?

    App::uses('ClassRegistry', 'Utility'); で初期段階でモデルにアクセスも出来たし、
    あとはカスタムルートクラスで好きなようにパースして返せば、
    良い書き方かはおいといて、動きそうな感じはしてるんだけど。
    550 : nobodyさん - 2014/05/17(土) 13:46:47.18 ID:???.net (+30,+29,-10)
    うん、行ける気がする

    で、>>549 こそ何が問題なの?
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / php スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について