新しいものを表示

「書き方によって速度が変わる」べきでは無いのであれば、プロパティでもメソッドでもメソッドのなんか名前の付け方がどう(?)でも変わるべきではないんだから、つまり「プロパティは軽くなければならない(?)けどメソッドは重くてもいい」みたいに考えることもおかしくない・・・?><

賢くないからこその戒めであり枷かも><
「(メンテめんどくさい;; こんな目先しか考えなてない仕様にするんじゃなかった;; 次に何か作る時はちゃんと作ろう;;)」って><

orange さんがブースト

一理あると思うけど人間はそんなに賢くない

内向きと外への約束ってきっぱり分けて考えていれば自然にそうなるはず><
動的型付け環境が「そんなもの好む人が本当にいるなんて信じられない!!!><」って思うのも、「外への約束がそんな曖昧でいいの!?><; ていうか何も約束してないじゃん!?><;」って所かも><

将来を見越してというか、「公開してしまった約束は死ぬまで守れ!!!!!><# 」ってオレンジが普段いろんな話題で言いまくってることそのまんまかも><
約束を死ぬまで守るために隠蔽して、あとでなにかあってもエミュレートして互換性を保てるようにする><
互換性を保てなくなったら「私は目先のことしか考えていませんでした」って札を下げて土下座して謝る><

orange さんがブースト

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

スレッドを表示
orange さんがブースト

まあ、どこまで将来を見越して設計できるかの勝負みたいなところはあるけど

スレッドを表示
orange さんがブースト

mstdn.maud.io/@orumin/10245509
私は15年前に自我がなかったのでよく知らないけど、構文の一貫性とか、後から値のセットで validation を付けたくなった場合などのことを考えると、その可能性のあるものは最初から関数の getter / setter を用意しておくべきだろうという立場

orange さんがブースト

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

Java嫌いな点もう一個あった!><; 符号無し整数型が無い事><

ていうか、プロパティでは無い単なる習慣でしかないgetter setterって、存在意義謎だし、プロパティが無かった事がオレンジがストレスすぎてJavaを本格的には使えなかった2大理由のひとつ><
(もうひとつの理由は演算子のオーバーロードが無くてBigIntegerみたいなのが愉快な事になってしまうこと><)

Delphi / C# 方式プロパティが好きな人、呼ばれる側が賢くあってほしいみたいな発想があるのかもしれない><(サンプル数1)

オレンジの場合で、(Delphi / C# での)プロパティが返すものを予め準備するか否かはケースバイケースで、例えば最初に呼ばれた時に用意して、次回からはキャッシュしたやつを返す、再計算が必要な時にも用意したり用意しなかったりする
みたいに、呼ばれる側が自動でいい感じにいろいろしたい時は、むしろプロパティじゃなきゃ気持ち悪い><
手動でそういうの制御できるようにもしたい時には設定用のプロパティを作ったり、明示的に準備させるメソッドを用意したりする><

オレンジ的には隠蔽するんだから、重いかもしれない可能性も含めて隠蔽される(隠蔽されてしまうけどそういうもの)みたいな考えだった><

orange さんがブースト

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

orange さんがブースト

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

orange さんがブースト

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

スレッドを表示
orange さんがブースト

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

古いものを表示
:realtek:

思考の /dev/null