[過去ログ] Rust part16 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
661(1): 2022/09/09(金)08:31 ID:WeF8ASv0(1) AAS
#[allow(non_snake_case)]
しかしフィールド名だけ小文字にすれば不要
struct ARGB32 {a: u8, r: u8, g: u8, b: u8,}
そして可読性が落ちると思わない
662: 2022/09/09(金)09:24 ID:4b4Wyf25(2/4) AAS
構造体名もCamelCaseでArgb32とすべきかな
663(1): 2022/09/09(金)12:29 ID:6YdHvwwi(1) AAS
識別子を極端に省略するのは良くないという現代のプログラミングの流儀と業界の略語でコンフリクトしてるよね。
略語を使わずに書くとこうかね?
Color<T>{alpha: T, red: T, green: T, blue: T}
CMYはどうなるとか言い出すやつがいると面倒そうだけど。
664: 2022/09/09(金)12:42 ID:VsTRsG1f(1) AAS
enum Color {
Red,
Blue,
Green,
RGB(u32, u32, u32),
HSV(u32, u32, u32),
HSL(u32, u32, u32),
CMY(u32, u32, u32),
CMYK(u32, u32, u32, u32),
}
665: 2022/09/09(金)13:41 ID:4b4Wyf25(3/4) AAS
最低限ガイドには従った方が良いと思う
外部リンク[html]:rust-lang.github.io
acronymはひとつ単語として扱うとあるから Rgb とか Argb とすべき
あとは適当なグラフィック系ライブラリの実装を見て真似してみたら良いのでは
規約に従ってないライブラリも多いけど
そもそも既存crate使えば独自にArgb型定義する必要もなくなるかもしれない
666(1): はちみつ餃子 ◆8X2XSCHEME 2022/09/09(金)14:02 ID:gp9Eay33(1) AAS
API ガイドラインってことは、 API として公開しない (内部的な) 名前は雑でいいってことだよね。
667: 2022/09/09(金)14:15 ID:+r9uXbjm(1) AAS
>>661
個人的にはこっちの方が好きだけど
規約的にダメなら仕方ない
668: 2022/09/09(金)14:42 ID:4b4Wyf25(4/4) AAS
>>666
非公開部分を将来公開APIにする可能性や、自分以外の誰かがソース読んでパッチ作ってくれる可能性考えると、
最初から内部も規約に従ったものにしておいた方が良いと思う
そもそもひとつのプロジェクトの中で公開部分と非公開部分で異なる規約混在するのも嫌では
669(1): 2022/09/09(金)15:18 ID:QLGZdL8Z(1) AAS
mozillaは公開できない関数名を使ってオープンソース化が数年遅れた過去があったなぁ。
670: 2022/09/09(金)15:35 ID:7NqN1r1N(1) AAS
gameraとか?
671: 2022/09/09(金)16:00 ID:wraz5iEP(1) AAS
>>669
94年初リリースで98年ソース公開で
数年遅れるとは?
672: 2022/09/09(金)17:53 ID:rfSAUeXI(1) AAS
CreateFileW in windows::Win32::Storage::FileSystem - Rust
外部リンク[html]:microsoft.github.io
とかAPIガイドラインもクソもないけど名前だけRustに寄せたところでリファレンスドキュメント(MSDN)との差異が
拡大するだけでメリットはほとんど無いような
673(1): 2022/09/09(金)21:16 ID:pyHRaXAz(1) AAS
JPEG、MPEG、PNG、HEVC・・・すでに略されている物をありがちな命名規則で書くと判りにくくなる
674: 2022/09/09(金)22:46 ID:B0h43lqZ(1) AAS
>>673
同意
675(3): 2022/09/10(土)00:32 ID:qBfKxAEz(1/4) AAS
>>663
その方向でやってみます
というかこの構造体をArrayに沢山詰めようとすると初期化が難しいのか。どうしようか悩んだ結果こうしてみた
#![no_std]
const LEN: u32 = 640*480;
let mut bitmap:[u32; LEN] = [0; LEN];
let mut bitmap:[ARGB32; LEN] = unsafe {core::intrinsics::transmute::<_, [ARGB32; LEN]>(bitmap)};
bitmap[0].red = 0xFF;
アセンブラリストを見る限りは問題なさそう
676(2): 2022/09/10(土)01:19 ID:BhJh8aSd(1/5) AAS
acronymを全部大文字にするか先頭だけ大文字にするかってそんなに大きな問題かな
一貫性のあるルールに従っていれば書き手や読み手として混乱することもないと思うんだが
677: 2022/09/10(土)03:00 ID:Rsh0NV07(1) AAS
Ipv4なんて一瞬なんのことか分からんかったな
結局慣れで、一貫性以上に価値のある好みなんてのはない
678: 2022/09/10(土)07:09 ID:2MfL7Eat(1/2) AAS
>>676
その一貫性が崩れるのがいやなんだろ。
ドキュメント・コメントでは全部大文字なのにコードでは先頭だけ大文字とか。
慣れの問題だが、今まで/一般的 に全部大文字で慣れてるものをこの時だけ先頭大文字に慣らせというのは抵抗感あって当たり前。
679: 2022/09/10(土)07:12 ID:2MfL7Eat(2/2) AAS
>>676
問題の大小なんて誰も言ってない。
今までの慣れ/一般的な表記 を置き換えるのは抵抗感あるって話。
680: 2022/09/10(土)12:37 ID:GXRB1/O5(1) AAS
命名規則を利用する目的は可読性や開発効率の向上などのはず
一般的な表記から外れるのであればそれなりの理由が必要であろう
「命名規則に従ったから」では「目的より手段を優先している、合理性がない」などと
突っ込まれてもしょうがない
681: 2022/09/10(土)13:03 ID:jQKLnU5m(1) AAS
JavaScriptのアイツは
XmlHttpRequestと命名されるべきだったのか?
XMLHTTPRequestと命名されるべきだったのか?
682: 2022/09/10(土)13:20 ID:AMhmGX9g(1) AAS
eXtend Markup Language Hyper Text Transfer Protocol Request
683: 2022/09/10(土)13:38 ID:D1Nb21qC(1) AAS
完全に好みの問題と思うから何らかのルールで統一されてればどっちでも良いと思うけど、
LCD TV、nVidia、iOS IoT Hubなんかをどう表記するかとか変数名ならどうしようとか考えるのめんどいから
表記の慣例とか無視して全部キャメルケースにしちゃうな
684: 2022/09/10(土)13:50 ID:TnGNUz3W(1) AAS
ルールから逸脱させるかどうか悩むならルールに合わせておくおじさんになった
685: 2022/09/10(土)14:31 ID:/uHulLcW(1) AAS
Rustすれのレベルの低さにガッカリ
Python質問すれとかみたいに和気あいあいとしてない殺伐にドッキリ
686(1): 2022/09/10(土)14:56 ID:qBfKxAEz(2/4) AAS
>>675みたいに書いた場合
>let mut bitmap:[u32; LEN] = [0; LEN];
のmutが余計だと警告が出る。この場合実際に確保されるメモリ領域は書き込みも出来るスタックフレームだろうし
mutを取っても動作上は問題ないと思うけど、mutがない領域に書き込むことになりプログラムの意味としては誤っている
参照先を強制的に書き換えるようなコードを書くと、とコードと警告と動作のミスマッチが起きる気がするけど
なんか上手い書き方はないのだろうか
この辺の低レイヤーの用途で参照先を書き換える話ってBookのReferenceやUnsafeあたりにもそれっぽい事書いてないし
どこを見たらいいのか判らない
687(2): 2022/09/10(土)15:47 ID:BhJh8aSd(2/5) AAS
>>675
ARGB32にDefault実装して
let mut bitmap : [ARGB32; LEN] = Default::default();
とするのが良いかと
repr(C)がついてない構造体のメモリ上での表現がどうなるかは保証されてないから元のコードが意図通り動作する保証はないと思う
688(1): 2022/09/10(土)15:48 ID:vDnMZIxl(1) AAS
>>675
初期化難しいかな。こうとか
外部リンク:play.rust-lang.org
689: 2022/09/10(土)15:54 ID:BhJh8aSd(3/5) AAS
>>687
[T; N] は N <= 27 までしかDefault実装されてなかったからこのコードじゃダメだった
こっちならOK
let mut bitmap: [ARGB32; LEN] = std::array::from_fn(|_i| Default::default());
690: 2022/09/10(土)16:11 ID:sOVkY8n5(1) AAS
最後の手段のtransmuteは安易に使うものじゃないと思う
上下前次1-新書関写板覧索設栞歴
あと 312 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.023s