×
Copy
Open
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Rustで オブジェクト指向エクササイズ やってみた Roadagain
Slide 2
Slide 2 text
自己紹介 Roadagain (@ringoh72) メインの言語は特になし 最近だったら多分JS系? Rustはかじった程度です
Slide 3
Slide 3 text
オブジェクト指向エクササイズ オブジェクト指向できていますか? という 発表(の資料)で知りました 必然的にオブジェクト指向になる極度(Extreme)な コーディング規約 原著に当たろうとしたらAmazonに在庫なし
Slide 4
Slide 4 text
オブジェクト指向エクササイズ 1. 1つのメソッドにつきインデントは1段階まで 2. else句を使用しないこと 3. すべてのプリミティブ型をラップする 4. 1行につきドットは1つまで 5. 名前を省略しない 6. すべてのエンティティを小さくする 7. 1つのクラスにつきインスタンス変数は2つまで 8. ファーストクラスコレクションを使用する 9. Getter Setterを使用しない
Slide 5
Slide 5 text
blackjack.rs ロジックが簡単 大きなオブジェクトが少ない ○ プレイヤー ○ ディーラー ○ 山札 いけるやろ!
Slide 6
Slide 6 text
blackjack.rs ロジックが簡単 大きなオブジェクトが少ない ○ プレイヤー ○ ディーラー ○ 山札 いけるやろ! (いけませんでした)
Slide 7
Slide 7 text
進捗 Work In Progress
Slide 8
Slide 8 text
リポジトリ https://github.com/Roadagain/blackjack.rs 山札とスコア計算までは完成
Slide 9
Slide 9 text
感想 オブジェクト指向わからん Rustわからん Rustで完遂厳しい気がする
Slide 10
Slide 10 text
感想 代表例をピックアップ
Slide 11
Slide 11 text
オブジェクト指向わからん編
Slide 12
Slide 12 text
モジュール分解 「大きいモジュールを分割しよう!」 「これは分けられない、これも分けられない」 「無理じゃん…」
Slide 13
Slide 13 text
Getter禁止...? 手札からスコア計算しよう→Getterができる
Slide 14
Slide 14 text
Getter禁止...? ドローできるかどうかの判断をしよう→Getterができる
Slide 15
Slide 15 text
Getter禁止...? むり
Slide 16
Slide 16 text
Rustわからん編
Slide 17
Slide 17 text
extern crate 外部モジュールを使うにはextern crateが必要←わかる モジュール内でやるとhoge::fugaみたいにできない←え? rootでextern crateするとhoge::fugaできる←マジか…
Slide 18
Slide 18 text
Score大迷走 Aは1点としても11点としても振る舞うことができる Aが入る特殊なスコア計算のために試行錯誤
Slide 19
Slide 19 text
Score大迷走 enumが直和型らしいしそれ使おう→場合分けが面倒 trait化しよう→合算のときに循環参照してしまう… 特殊なケースってAだけじゃん→has_aceで判断する
Slide 20
Slide 20 text
詰んだ
Slide 21
Slide 21 text
Rustで完遂厳しい編
Slide 22
Slide 22 text
1行1ドット制限との戦い self.hoge ← これで1ドット →キリがないしいちいち代入すると読みにくくなる、許容 標準入力のメソッドチェーン 例: buf.split_whitespace().map(|n| u32::from_str(n).unwrap()) →無理に分割する方が読みにくい、諦める
Slide 23
Slide 23 text
else句厳禁 C++: ifは文 Rust: ifは式
Slide 24
Slide 24 text
else句厳禁 clippy「elseを書け」
Slide 25
Slide 25 text
注意点 あくまで「コーディング規約を守ることが難しい」 というだけ オブジェクト指向できないわけではない むしろC++よりやりやすいのでは?
Slide 26
Slide 26 text
次やること
Slide 27
Slide 27 text
次やること 頭をRustにする
Slide 28
Slide 28 text
次やること Rustっぽい書き方を知る Rustっぽい書き方に慣れる RustっぽいRustコードを書く