15:00:17 @orumin@mstdn.maud.io
icon

警察学校教官 訓練に本物のナイフ 新人を誤って刺す 岡山 | NHKニュース
www3.nhk.or.jp/news/html/20190

14:48:40 @orumin@mstdn.maud.io
icon

yum が病む

14:48:09 @orumin@mstdn.maud.io
2019-07-17 14:39:53 ペンギン推進委員会の投稿 boronology@social.mikutter.hachune.net
icon

このアカウントは、notestockで公開設定になっていません。

14:45:41 @orumin@mstdn.maud.io
2019-07-17 14:36:20 Masanori Ogino 𓀁の投稿 omasanori@mstdn.maud.io
icon

これは単なる正論ですが、コストは文法や命名を介した暗黙の了解にするよりも文書化する方が望ましいです

14:25:13 @orumin@mstdn.maud.io
icon

Java の規約がああだから広まっただけな気がしなくもない

14:24:38 @orumin@mstdn.maud.io
icon

@charsiuCat ならないが?

14:24:34 @orumin@mstdn.maud.io
2019-07-17 14:22:49 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

後からアクセス制限をかけることが絶対にないと確信・断言できるメンバ変数なら外出ししてもいいと思うけど、ライブラリでそういうのってなかなかないのではと思う

14:22:20 @orumin@mstdn.maud.io
2019-07-17 14:22:15 あじょだよの投稿 azyobuzin@mstdn.maud.io
icon

public メンバーとして、あとでバリデーション追加しようみたいな案件に対応できないから最初から getter, setter にしておけ、が OOP 的隠蔽 way だと思ってる

14:20:28 @orumin@mstdn.maud.io
icon

ちゃーしゅーねこさんがラーメン食べたらチャーシュー共食いになるんじゃないの

14:18:36 @orumin@mstdn.maud.io
icon

そう,昔 Java で論争されてたときも,validation とかのために,あとカプセル化の観点から setter/getter は全てのメンバに付けるべきでメンバは全て private でやれという話があって,これに対して,絶対 setter/getter を付けるべきとかじゃなくて,フィールド外出しでいいやつは setter/getter つける必要ないし,setter/getter が本当に必要なときにはもうちょっと気の利いた命名できる場合がほとんどでしょ,という反論があって,私は後者の立場だった

14:15:24 @orumin@mstdn.maud.io
2019-07-17 14:13:55 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

フィールド外出しだと mutability の制御とか validation とかかけられないことがあるから、そのために getter と setter が用意されるものだと思っていた (C++er 並感)

14:13:52 @orumin@mstdn.maud.io
icon

たぶん私の認識が狭かったということですね

14:13:19 @orumin@mstdn.maud.io
icon

15 年ぐらい前に Java 界隈で不要かどうか論争されてた setter/getter のやつ

14:12:51 @orumin@mstdn.maud.io
icon

私がとらえてる setter/getter はまさしくそのフィールド外出しでいいじゃん,と言われる場合の謎のメソッドのことだと思ってた

14:11:49 @orumin@mstdn.maud.io
2019-07-17 14:11:39 あじょだよの投稿 azyobuzin@mstdn.maud.io
icon

僕の言う getter は GetHoge であり Hoge {get;} だよ、同義だよ

14:10:56 @orumin@mstdn.maud.io
2019-07-17 14:10:31 kb10uyの投稿 kb10uy@mstdn.maud.io
icon

ミズタマリコネクターが言ってるgetter/setterはC#でプロパティとは別に作るGet***/Set***であるという話っぽい?

14:09:41 @orumin@mstdn.maud.io
2019-07-17 14:08:35 kb10uyの投稿 kb10uy@mstdn.maud.io
icon

ただ getter が () => T で setter が (value: V) => void であるべきというのに基くとgetterではない

14:09:40 @orumin@mstdn.maud.io
2019-07-17 14:08:28 あじょだよの投稿 azyobuzin@mstdn.maud.io
icon

そういうのを含めてストレージの隠蔽をするために getter, setter を定義するのでしょう。じゃなかったらフィールド外出しでいい

14:09:39 @orumin@mstdn.maud.io
2019-07-17 14:07:44 あじょだよの投稿 azyobuzin@mstdn.maud.io
icon

あれはインデクサ、または引数付きプロパティ

14:07:33 @orumin@mstdn.maud.io
icon

プロパティとほぼ同等なのはそうだけどえーそれも getter って言うんですか……になってる

14:07:05 @orumin@mstdn.maud.io
2019-07-17 14:06:28 kb10uyの投稿 kb10uy@mstdn.maud.io
icon

厳密にはインデクサと呼ばれていますが記法がプロパティとほぼ同等なのでなあ

14:07:04 @orumin@mstdn.maud.io
2019-07-17 14:06:22 よみたそまるの投稿 yomi@mstdn.maud.io
icon

このアカウントは、notestockで公開設定になっていません。

14:06:48 @orumin@mstdn.maud.io
2019-07-17 14:06:31 あじょだよの投稿 azyobuzin@mstdn.maud.io
icon

@orumin {"a":1} に対して、 GetA を提供するという意味で、 Find("a") を提供するという意味ではありません

14:06:20 @orumin@mstdn.maud.io
icon

で,私はそれの話をしてたので,さっき言うたとおり C# での話と私が言ってる話が文脈ズレてそう

14:06:00 @orumin@mstdn.maud.io
icon

Java とかで言う getter のことがたぶん C# のプロパティだと思うんだけど

14:05:27 @orumin@mstdn.maud.io
14:05:20 @orumin@mstdn.maud.io
2019-07-17 14:05:11 よみたそまるの投稿 yomi@mstdn.maud.io
icon

このアカウントは、notestockで公開設定になっていません。

14:05:19 @orumin@mstdn.maud.io
2019-07-17 14:04:21 あじょだよの投稿 azyobuzin@mstdn.maud.io
icon

もちろん、その処理自体は O(1) であることが期待されるし、そうでない構造をバックに持つべきではないですが

14:05:18 @orumin@mstdn.maud.io
2019-07-17 14:03:51 kb10uyの投稿 kb10uy@mstdn.maud.io
icon

例えば BTreeDictionary<K, V> を作ったとして、 btdict["Foo"] とするのは自然じゃない? みたいな (書いてて話がズレてる気がしてきました)

14:05:17 @orumin@mstdn.maud.io
2019-07-17 14:03:47 あじょだよの投稿 azyobuzin@mstdn.maud.io
icon

Dictionary をストレージとする getter はあります。例えば JSON を辞書に変換したものをバックに持ち、それが持っているであろうフィールドをメソッドとして提供するなどが考えられます。裏側を動的なデータ構造にしつつ、メソッドとして提供することはあるかと

14:02:18 @orumin@mstdn.maud.io
icon

なんか OOP 一般で言われる setter/getter の話と C# で言われる setter/getter の話は微妙に文脈が違っててそれが混ざってるのかもしれない

14:01:28 @orumin@mstdn.maud.io
2019-07-17 14:00:55 kb10uyの投稿 kb10uy@mstdn.maud.io
icon

C# の文脈だと
public string this[string key] {
return this.dict[key];
}
が存在するので別名を付けたくないモチベーションはある

13:58:36 @orumin@mstdn.maud.io
icon

さっきも書いたけどそういうのは lookup とかそういう別名がちゃんと付けられるはずで,基本的に setter/getter ってただのフィールドアクセスだと思ってたのだけれども

13:58:09 @orumin@mstdn.maud.io
icon

それ getter ではなくない

13:58:04 @orumin@mstdn.maud.io
2019-07-17 13:55:54 あじょだよの投稿 azyobuzin@mstdn.maud.io
icon

100倍遅いのはデータ構造が悪いけど、でも getter の中身がフィールドアクセスとは限らない、例えば Dictionary のルックアップなこともあるでしょ?

13:52:35 @orumin@mstdn.maud.io
icon

@akahana そんなん自分で決めりゃいいんだよ。自分が動いてる方向を前ってことにしちまえば後退も前向きな逃避ってことでいいじゃん

13:51:52 @orumin@mstdn.maud.io
icon

そろでか(そろそろ出掛けるか)

13:51:07 @orumin@mstdn.maud.io
icon

@akahana 別に目的地を決める必要なんてないでしょ。好きにやりたいことやってけばいいじゃん

13:49:57 @orumin@mstdn.maud.io
2019-07-17 13:49:04 よみたそまるの投稿 yomi@mstdn.maud.io
icon

このアカウントは、notestockで公開設定になっていません。

13:49:48 @orumin@mstdn.maud.io
icon

@akahana それは前進しようとする意志の問題では

13:49:23 @orumin@mstdn.maud.io
icon

kernel って単一のクソデカいクラスみたいなもんだな,と思いながら kernel の内部状態を増やしたり消したりいじったりしてブッ壊してる

13:48:10 @orumin@mstdn.maud.io
icon

public readonly なメンバつくりたくなる気持ちはわかる

13:44:23 @orumin@mstdn.maud.io
icon

そういうユーティリティメソッドは良いけど,getter が getter としてしか命名できないようなメソッドをわざわざ手動で実装するようになったらちょっと考えたほうがいいんじゃないかなという気持ち

13:43:45 @orumin@mstdn.maud.io
icon

そういうのは普通クラスが持つデータの中から特定のデータを検索したりするメソッドとしてたとえば find() とかみたいな名前になるはずだから getter になはらんのでは

13:43:08 @orumin@mstdn.maud.io
2019-07-17 13:42:21 金木犀 :kusa:の投稿 kinmokusei@mstdn.maud.io
icon

getterはきちんと実装したら便利だ。
クラスの中にある何かのArrayListから必要なものを引っ張ってくるとかを想定した時、a=b.mottekoi("hoge")みたいな実装ができたら見た目にも良いしオブジェクト指向的にも分かりよい

13:40:16 @orumin@mstdn.maud.io
icon

あれは便利な気がする

13:40:08 @orumin@mstdn.maud.io
2019-07-17 13:39:23 あじょだよの投稿 azyobuzin@mstdn.maud.io
icon

getter, setter が必要か、わからないから必要なのであって、そういう意味で自動実装プロパティというのは正解

13:38:12 @orumin@mstdn.maud.io
icon

@akahana そんな常日頃から自己と対話してるのか?

13:37:11 @orumin@mstdn.maud.io
icon

単純に代入するだけの挙動の setter や単純に値を読み取るだけの getter はむしろ不要だろと思っています(Java のように言語だったり,あるいはプロジェクトでコーディングルールが決まってるのならその限りではない

13:35:48 @orumin@mstdn.maud.io
icon

setter 以前に,a.b = f() とかしたければ a.f() になるように実装すべきでは,という話ですね

13:35:21 @orumin@mstdn.maud.io
2019-07-17 13:35:00 金木犀 :kusa:の投稿 kinmokusei@mstdn.maud.io
icon

確かに、Kotlinならsetterでも定義しろになるのは分かる。
しかしこんなことのためにsetter付けるべきなのか迷うところだ

13:35:17 @orumin@mstdn.maud.io
icon

こういうとき wandbox で PoC とか書くと伝わりやすくて便利だけど Swift あるのに Kotlin ないのか

13:33:14 @orumin@mstdn.maud.io
icon

クラスのメンバを変更する挙動ならメンバ関数とかとして実装されるべきで設計がアレになってるのではという気がしなくもないけど,まあ個人の一存でクラスを変えられるかはしらないし,具体的なコード見ないと断言もできないので無責任な意見です

13:32:20 @orumin@mstdn.maud.io
2019-07-17 13:30:56 金木犀 :kusa:の投稿 kinmokusei@mstdn.maud.io
icon

既に確保されているクラスのメンバー変数に入れないと使えないから、val (a, b) = func() という選択肢はないかな。
というか、確保済みの変数a.bに対して、(a,b)=0みたいなことやってみたけど当然ながらダメだった。

13:31:28 @orumin@mstdn.maud.io
icon

いやまあ面倒になって条件式にまとめて書くことはありますがね

13:31:12 @orumin@mstdn.maud.io
icon

C 言語で POSIX な API を叩くときやりがちなヤツだけど,代入と条件判定は分けたほうがいいようにしか思えない

13:30:34 @orumin@mstdn.maud.io
2019-07-17 13:30:26 kb10uyの投稿 kb10uy@mstdn.maud.io
icon

if ((result = hoge()) != -1) {
// ...
}
みたいな

13:29:11 @orumin@mstdn.maud.io
icon

それならなおさら
val (a, b) = func()
みたいなやりかたのほうがよい気がする

13:28:29 @orumin@mstdn.maud.io
2019-07-17 13:28:06 金木犀 :kusa:の投稿 kinmokusei@mstdn.maud.io
icon

実際は0じゃなくて関数の返却値で複数の変数に入れる必要があるから困りもの

13:27:42 @orumin@mstdn.maud.io
icon

あきさんの語彙がどんどん崩壊しているのでインターネットはよくないことがわかる

13:26:44 @orumin@mstdn.maud.io
icon

多重代入はまあ便利

13:26:31 @orumin@mstdn.maud.io
2019-07-17 13:26:13 kb10uyの投稿 kb10uy@mstdn.maud.io
icon

fooX = fooY = 0;
ぐらいなら書きたくならなくもないけど無くても大して困らないなあ

13:24:32 @orumin@mstdn.maud.io
icon

a=b=0 みたいな書き方,同時代入ではなく代入文を nest してるだけだし評価順で誤解を招いてバグを生む元凶にもなる気がする

13:21:43 @orumin@mstdn.maud.io
2019-07-17 13:14:53 金木犀 :kusa:の投稿 kinmokusei@mstdn.maud.io
icon

マジヤバくね
同じ事何度も書くのはややこしいことこの上ないんやが

13:21:42 @orumin@mstdn.maud.io
2019-07-17 13:14:07 金木犀 :kusa:の投稿 kinmokusei@mstdn.maud.io
icon

悲報 Kotlinでは複数の変数に同時代入できない
a = b = 0
みたいなことができない。
ついでにSwiftも同じらしい。

13:10:47 @orumin@mstdn.maud.io
icon

D言語におけるライフタイムと所有権と借用 - Qiita qiita.com/lempiji/items/e114dc

Web site image
D言語におけるライフタイムと所有権と借用 - Qiita
13:07:49 @orumin@mstdn.maud.io
icon

そういえばわたし黄前久美子だったわ

13:06:52 @orumin@mstdn.maud.io
icon

黄前久美子「なんですか,これ?」