[過去ログ] Rust part16 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
801: 2022/09/25(日)11:42 ID:sQFmQmse(1) AAS
>>799
任せてください。符号ビット省略しておきますね
802: 2022/09/25(日)15:32 ID:F2Viqk5M(1) AAS
Microsoftがやりそうなことだけど、Rustに独自拡張を含めたりとかしてほしくない
803
(1): 2022/09/25(日)17:24 ID:xalR35FT(1/2) AAS
Linuxはカーネル開発の為に今まさにRustに独自拡張を含ませようとしてるのに
Microsoftはダメなの?
804: 2022/09/25(日)17:34 ID:4B3i10Bx(1) AAS
try_new()とかtry_reserve()とか元々ないのが不思議だったし導入の良いきっかけとなっただけ
805: 2022/09/25(日)17:57 ID:6lgwXJxi(1/3) AAS
言語自体forkして独自のエコシステムを構築しようとしなければ別に良いのでは
806
(1): 2022/09/25(日)18:09 ID:6wI0gbs/(1) AAS
正直LinuxにRustなんて辞めればいいのに・・・
807
(2): 2022/09/25(日)18:14 ID:Td47G6We(1/4) AAS
Rustに限った話じゃないんだけどそれなりに複雑なロジック(例えばデコーダやパーサ)の実践的なテストの
作り方の解説とかどっかにある?例えばJPEGやPNG、MP3、AVIとかを扱うようなコードを想定
関数単体のテストはともかく、結合した状態で全てのコードを動かそうとすると入力パターンがどんどん増えるし
パディングビットにゴミがあっても問題ないかなどを考慮しだすと更に膨れあがる
さらに歴史が長いフォーマットだと、そもそも仕様をどう定義するのかという点が問題になることもあるし
808: 2022/09/25(日)18:21 ID:xalR35FT(2/2) AAS
テストがすごいのはSQLite
809: 2022/09/25(日)19:04 ID:rVqFiGXV(1) AAS
>>803
別に独自拡張とか入れてないだろ
コンパイラへの機能追加は全部本体に入れていてnightlyで使える状態だし
Linuxカーネル向けのallocなんかは単にライブラリであって言語自体がforkしてるわけではない
810
(1): 2022/09/25(日)19:57 ID:6lgwXJxi(2/3) AAS
>>806
なんかまずいことでもあるの?
811
(1): 2022/09/25(日)19:59 ID:Rxhh3DJ9(1) AAS
>>810
迷走と凋落、そして黒歴史化。
812
(1): 2022/09/25(日)20:07 ID:58piYD8Z(1) AAS
>>807
メディアのエンコーディングのことはさっぱりしらんけど、一般的には結合テストじゃなくて、単体テストでパターンは網羅すべし
できるんならやればいいけど、結合テストで入力の網羅なんて普通はやらない
813
(1): 2022/09/25(日)20:26 ID:Td47G6We(2/4) AAS
>>812
条件分岐で関数Aを呼ぶべき所を間違えてA'を呼んでいて出力結果がちょっと変・・・というのをさっきやらかした
関数そのものに問題はないし処理内容がちょっと違うだけなので実行は出来てしまうのがいやらしい
で、テストを作ろうとしたけどどうしようか悩み中
814
(1): 2022/09/25(日)20:37 ID:lhW/fB5K(1) AAS
そういうのは呼び出し側の単体でええんちゃうの
815
(1): 2022/09/25(日)21:09 ID:j1+dHWho(1/2) AAS
>>807
歴史があり、曖昧さが残るフォーマットの再実装はできればやりたくない仕事だな。
対応する仕様を現代で最低限必要なものを取捨選択して決め打ちで実装しつつ、考慮漏れでクリティカルなものは取り入れていく方式でやるしかないよ。

歴史あるフォーマットの曖昧な対応を追体験する作業は、不毛だからできれば既存実装におまかせすべき。
816
(2): 2022/09/25(日)21:31 ID:Td47G6We(3/4) AAS
>>814
中間コンポーネントの単体テストって普通どうやるんだろ
後段のコンポーネントを切り離してテストするのか?繋げたままテストするのか?
切り離せるようにするとその部分にバグが入り込む余地が生まれるし

>>815
歴史が長いと仕様上○○であるがこれに準拠しないアプリやデータが少なからず存在するため
△△のような実装がベターだみたいなのが沢山あるからねぇ
そしてこの手の情報はググっても網羅するのが難しい
817: 2022/09/25(日)21:51 ID:6lgwXJxi(3/3) AAS
>>811
Linux側にメリットがないと言ってる?
818
(1): 2022/09/25(日)21:51 ID:PDKGWlWe(1) AAS
>>816
> 中間コンポーネントの単体テストって普通どうやるんだろ
中間の意味がよく分からんけど>>813みたいな話なら関数A、関数A'をモックにしてテストする
たいていのテストツールではモックの呼び出し回数のテストができる
819
(1): 2022/09/25(日)21:53 ID:j1+dHWho(2/2) AAS
>>816
JavaみたいにDIが発展しているタイプの言語だと中間コンポーネントが呼び出すコンポーネントはモックをインジェクトしてやって、適切なメソッドが呼び出されたかのテストとかよく書くね。

けど、正直Rustを含む他の言語で中間のレイヤだけ独立してテスト書くようなこだわりはあまり見たことも書いたこともないなぁ。
モジュール設計の考え方が変わるからかな?
820
(2): 2022/09/25(日)22:41 ID:Td47G6We(4/4) AAS
今作っているのだとこんな感じかな?
関数C(データの前処理、処理単位への分割)

関数B(処理全体の制御)→関数A'(処理1-2)

関数A(処理1-1)

>>818,819
その場合モックへ切り替える機構はどうするんだろ
そのためにコードを書き換えていてはミスが入り込む可能性が高くなるし、条件付きコンパイルも同様のリスクがある

てかThe Rustのテストの所を見ても関数の呼び出し状況をテストする方法とかは書いていないんだよな
省1
821: 2022/09/26(月)00:07 ID:h/WE7ZWH(1/3) AAS
>>820
すまん rust だと cargo test で単体テストを実施するみたいだけど mook/stub をどうやって使うかはよくわからんかったわ
C++ とかだと googlemook とか使ってテスト用のモッククラスを作って入れ替えるかたちだね
822: 2022/09/26(月)00:33 ID:TCGzsvbI(1) AAS
mockall使うとか
823
(1): 2022/09/26(月)06:28 ID:p/pWEmYs(1) AAS
cargo testで関数テスト、モジュールテスト、モジュール間テストなどあらゆるテストをやっているけどダメなの?
824: 2022/09/26(月)06:47 ID:h/WE7ZWH(2/3) AAS
>>823
>>820 > その場合モックへ切り替える機構はどうするんだろ
に答えてやってくれ
825: 2022/09/26(月)19:21 ID:kI3cAlPQ(1) AAS
モックやスタブは別モジュール化しておいて
mod tests内では本物モジュールをuseする代わりにそれをuseするだけじゃないの?
826: 2022/09/26(月)19:31 ID:V9yeC/LF(1/2) AAS
あと#[cfg(test)]でそれをuse
そして#[cfg(not(test))]で本物use
827
(1): 2022/09/26(月)19:31 ID:i/jndsoD(1) AAS
他の言語でもユーティリティを使わずに、DIやモックを自分でやったことがないんだろうな
説明が面倒だ
828: 2022/09/26(月)19:38 ID:V9yeC/LF(2/2) AAS
>>827
テスト以外の開発の話でも
フレームワークに依存してやってる人は
単純なこと含めて本質的なことを理解してない人が多く
フレームワークなしでは何も分からず何も出来なくなってしまう例を時々見かける
829
(2): 2022/09/26(月)21:10 ID:qW/k82Qg(1) AAS
cfg使えば良いじゃないって人は#ifまみれで一見しただけじゃ
何がどう動くんだか判らないCのコードを正当化するつもりなのだろうか
Rustは人間が注意すれば問題ないみたいな考えはレガシーで時代遅れだ
という思想の言語だと思っているんだが違うのかな
830: 2022/09/26(月)21:41 ID:w5YNQb64(1) AAS
>>829
#ifは使わないし
cfg(test)はテスト分離のため必須でしょ
どんな環境でも魔法は無いよ
1-
あと 172 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.028s