+ JavaScript の質問用スレッド vol.120 + [無断転載禁止]©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2016/05/22(日) 19:51:33.37ID:WwOYSBmy>>2-4のテンプレを読んだ上で質問してください。次スレは>>950が>>2のテンプレ案(本スレで改善案があれば考慮)を元に立ててください
■質問を書く上で
(1) 煽り、コード制作依頼等、人を不快にさせる投稿はご遠慮下さい。公序良俗を守った応対を心がけてください。
(2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください。
(ブラクラ、[戻る], [閉じる], [クリック] の妨害、画面占有など)
(3) 質問者及び議論を行う人はメール欄を空欄にし、名前にレス番を入れることを強く推奨します。回答者はなりすましを判断できませんので、なりすましが現れても自己責任となります。
(4) 常に自発的に調べる心構えを持ってください。
具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。
わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
(5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。
(6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。
※必ず「問題の事象が再現されること」を確認してください。
必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。
(7) サンプルコードに HTML が含まれる場合は http://validator.w3.org/ で [Check] してみてください。
(8) 質問を具体的かつ詳細に書くと回答を得られやすいです。>>2の質問テンプレートを活用してみてください。
(9) 時にはあなたが望む「答え」だけでなく、「意見」などが寄せられる場合もあります。
0153デフォルトの名無しさん
2016/05/27(金) 21:14:25.30ID:fXm66YRc控えめに見てもundefinedの計算結果がNaNという部分は
「未定義値」という値を明確に容認してるよ
少なくともhasOwnPropertyだけで済むと言ってるのとは相容れないし
って…もう最初から何も問題なかったってことでいいや
面倒くせえわ
0154デフォルトの名無しさん
2016/05/27(金) 21:18:25.17ID:Dt+fFMyqよくわからない
プロパティが存在しないことを判断する方法は大きく分けて3つある
1. obj.prop === undefined
2. !('prop' in obj)
3. !(obj.hasOwnPropery('prop'))
1. はあなたが推奨する方法だけど、obj.prop = undefined にも反応する
2. や 3. でも問題ないし、そっちの方が厳密
ここで 1. でなければマージできない理由は?
0155デフォルトの名無しさん
2016/05/27(金) 21:24:59.90ID:fXm66YRcいやお前自分で
>そのまま列挙して設定したものを、
>未定義と判定して「未検査」と表示する話をしてるんだが。
>頭おかしいの?
と言ってるし
本来この未検査ってのはリクエストに対して、ちゃんと定義されたデータを返す物だろ、
適当なWeb環境じゃないんだから、ビュー側で判別して表示とかありえないだろ
つか取得時のコンテキストどうなってんだよ
0156デフォルトの名無しさん
2016/05/27(金) 21:26:20.32ID:Dt+fFMyqPolyfill も当然、Object#hasOwnPropery を使う
条件別マージだから Object.assign を流用できないとしても根幹となるマージ処理は同じで問題ないと思うんだよね
http://www.ecma-international.org/ecma-262/6.0/#sec-object.assign
0157デフォルトの名無しさん
2016/05/27(金) 21:30:34.70ID:5O2HSGrs未定義じゃないんだって。さっきの例みたら分かるだろうけど、数値に変換できない検査結果はNaNにしてるの。
0/1で持ってて、インフルエンザの検査結果を何を血迷ったかグラフで見て、陰性と陽性がピコピコ蠢くグラフ見て楽しいか?
>>154
単に、「である」を否定を使って比較しない、ってコーディングルールの問題。
0158デフォルトの名無しさん
2016/05/27(金) 21:32:08.16ID:fXm66YRcいやお前は最初の方で undefined との四則演算を容認してただろ
つまり値としての undefined が必要と説いてる
こっちはその値としてのundefinedがいらんとさんざんそれを否定してるわけ
0159デフォルトの名無しさん
2016/05/27(金) 21:34:19.11ID:5O2HSGrs未定義は未検査、検査したけど何らかの結果で…って話だよ。
ある検体検査の中で、結果無しと返してるものに対して、電カル側が持ってる項目リストをピンポイントで開いてきたりするんだよ。
適当なWebじゃねえからいちいち処理してんじゃねえか。
0160デフォルトの名無しさん
2016/05/27(金) 21:35:39.58ID:5O2HSGrsしてないから。
四則演算するとこうなるから、四則演算が成り立たないものは正しく判定しなきゃね、そのためには、null,0,undefined,NaN全部扱い違うよねって言ってんじゃん。
0161デフォルトの名無しさん
2016/05/27(金) 21:44:03.54ID:h7QAH+sV0162デフォルトの名無しさん
2016/05/27(金) 21:44:10.18ID:Dt+fFMyq> 単に、「である」を否定を使って比較しない、ってコーディングルールの問題。
そのコーディングルールの話を初めからいっておけばここまでこじれなかったんじゃないの?
端的に言ってあなたは説明が下手だと思う
自分の主張が伝わらなくて憤慨している様子は伝わってくるけど、原因のほとんどはあなたの中で当然と思うコーディングルールが皆に伝わってないことにあるんじゃないかな
>>10 で ! (否定)を使っているのが気になるけど、何かしらのあなたなりのコーディングルールがあるんだろうね
自分のコーディングルールが万人受けするとは限らないことは気に留めておくといいと思う
0163デフォルトの名無しさん
2016/05/27(金) 21:46:10.68ID:fXm66YRcそれって本来は未検査、結果待ち、結果無しって
別の値を定義して分けるべき内容でしょ?
悪いけど普通にクソ仕様だと思います
>>160
四則演算できると言ってる時点で値として認めてる事になるよね、違う?
0164デフォルトの名無しさん
2016/05/27(金) 21:48:08.24ID:UggnfNpm構文書いているんじゃないよ
はっきり言ってゴミだ
0165デフォルトの名無しさん
2016/05/27(金) 21:48:48.08ID:fXm66YRcもうちょっと待ってくれ
0166デフォルトの名無しさん
2016/05/27(金) 21:52:05.84ID:OuviwO3+0167デフォルトの名無しさん
2016/05/27(金) 21:53:49.64ID:7C5pluWz0168デフォルトの名無しさん
2016/05/27(金) 21:54:15.57ID:Y3oSSTyA0169デフォルトの名無しさん
2016/05/27(金) 21:59:59.70ID:/K+aNa26所詮その程度のカス
0170デフォルトの名無しさん
2016/05/27(金) 22:00:29.40ID:fXm66YRc>nullも、undefinedも、NaNもある理由があってあるんだから。
>nullだけで良かったはずなんてアホみたいな事言われても困る。
これで適切に処理しましょうって事は、undefinedは使用禁止にしても良いでしょ?
別にhasOwnPropertyとかinで検査する事になるんだから
その事には同意してるの?
0171デフォルトの名無しさん
2016/05/27(金) 23:20:18.13ID:Ajerz5wWおっと?ちょっと見立てが狂った。まあそれはさておき、回答ありがとう。
ちなみにリクエストある?
見立てが狂っていたので、俺が勝手に「君にとって有益」だと思っているのもゴミでしかないかもしれんし。
君はこの一連の会話には参加してないと思うけど、こいつらが駄目な点を指摘しろと言われればできるけど。
放置しておけば収まるかと思いきや、そういう感じでもないし。
ただ一番カスなのは、単発で煽っている奴だと思うが。
俺個人のスタンスは、この手の技術的応報は「気が済むまでやれ」だからね。
0172デフォルトの名無しさん
2016/05/27(金) 23:21:03.48ID:Dt+fFMyqobj.prop = undefined とか、NaN の比較とか、定義順の列挙とか、諸々の問題は new Map で解消される
ID:5O2HSGrs が作る医療システムは構造が複雑なので単純なオブジェクトマップで対応するよりも、独自のインターフェースを作る方がいい
https://jsfiddle.net/oo1777o0/
0173デフォルトの名無しさん
2016/05/27(金) 23:51:31.16ID:64E4c/Qqundefined はプログラムのバグじゃないの?
それは、アカン
DBでも、null, undefined を加えて、4値論理だと、SQLが複雑化して、バグが増える
0174デフォルトの名無しさん
2016/05/27(金) 23:56:13.71ID:10EzBfKpたとえば、obj.data('name') だと getter、
obj.data('name', 'hoge') だとsetter。
nullだけいいかと思うかもしれないけど、
obj.data('name', null)という風にnullを代入するsetterがあるかもしれないので
nullとundefinedは区別がついたほうがいい。
0175デフォルトの名無しさん
2016/05/28(土) 00:01:17.19ID:2CcTCqQn一番のカスは質問でも回答でもねえ話を続ける場違いなカスに対し
「俺個人のスタンスは〜」とかドヤ顔で言ってしまう脳味噌馬糞野郎だから安心して
0176デフォルトの名無しさん
2016/05/28(土) 00:03:07.76ID:lIlkJ1vanull と undefined は区別すべきだと思うけど、その場合はarguments.lengthで判定するのが普通
0177デフォルトの名無しさん
2016/05/28(土) 00:15:41.95ID:Q7pM0tvA0178デフォルトの名無しさん
2016/05/28(土) 00:17:23.16ID:U+yYkFDLrubyでa = [0, 1, 2]
def f(a, b, c); endに対して
f(*a)できるようなやつある?
もしくは
g = funciton () {/*arguments使う処理*/};
f = function () {/*g()にargumentsを渡す何らかの手段*/};
gを変更せずにf側の工夫だけで何とかなればいいんだけど
0179デフォルトの名無しさん
2016/05/28(土) 00:23:14.01ID:UVJrtMwg次の開く前に前のcloseするとか
0180デフォルトの名無しさん
2016/05/28(土) 00:24:56.37ID:6huP5UCXそうでなければここまで粘着する意味が分からん。
こいつらは質問にも答えた上で「技術的に」やり合ってるんだから、
文句言う必要も筋もないと思うが。
このスレがこの調子なのはいつものことだし。(少なくとも1年以上前からこう)
単発キチガイが「人格的な」批判だけをしている方がうざいし、
気に入らないのなら出ていけばいいだけだろ。
0181178
2016/05/28(土) 00:28:43.02ID:U+yYkFDL自己レス
var g = function () {alert(arguments.length);};
//var f = function () {g(arguments);}; // ダメ
var f = function () {g.apply(this, arguments);}; // これでいい
f(0, 1, 2, 3);
0182デフォルトの名無しさん
2016/05/28(土) 00:45:35.77ID:F7SYakCjああーいい感じに簡潔にまとまってていいね
自分もMapと専用型派だから、そのまま便乗させてもらいたい
0183デフォルトの名無しさん
2016/05/28(土) 00:48:21.69ID:lIlkJ1vaRubyは知らんが、Function#apply の事か?
0184デフォルトの名無しさん
2016/05/28(土) 00:50:15.08ID:F7SYakCj俺なら考えるの面倒だからpostMessageでリサイズしちゃう
0185デフォルトの名無しさん
2016/05/28(土) 01:21:36.93ID:4RY8P4hk10は、評価した結果falseでなければ、だよ。
undefinedである、もしくは、nullであれば、とはちと違う。
当然と思うコーディングルールというか、xxx==null、と書いておいて、実はnull以外にもundefinedも判定されます、という理屈の方が明らかに間違ってる。
>>163
だから、それは状態として持ってるの。
結果の話なんだよ。
状態と結果をごっちゃにしてはいかん。
結果がある見込みすら無い、少なくとも現時点ではまだ無いか有意では無い、有意な結果がある、のたった3つの、結果の値なの。
クソ仕様はお前の頭。
>>163
だから、してはいけないって言ってるんじゃん。
undefinedは状態で、nullは値なんだよ。
>>170
使用禁止って何だ?お前何言ってるか全く理解してないのか?
代入してないから、undefinedで、別にundefinedを突っ込んでる訳ではない。
>>178
apply
0186デフォルトの名無しさん
2016/05/28(土) 01:30:01.42ID:4RY8P4hk確かに綺麗だと思う。
進捗と結果は分けた方が良いね。
進捗は、同じ検体でも検査によって異なるフェーズを辿るし、ひとつの検査で2つ以上の結果が帰ってきたり、2つ以上の検査でひとつの結果が帰ってくるので、そいつらは分割する必要がかる
0187デフォルトの名無しさん
2016/05/28(土) 02:00:19.58ID:F7SYakCj未定義という概念だけが必要だから、jsのundefinedはいらないよね
言ってる意味わかる?
というか
>当然と思うコーディングルールというか、xxx==null、と書いておいて、実はnull以外にもundefinedも判定されます、という理屈の方が明らかに間違ってる。
ってfalsy判定するって言ってる人がそれ言う?酷すぎでしょ
>状態と結果をごっちゃにしてはいかん。
>結果がある見込みすら無い、少なくとも現時点ではまだ無いか有意では無い、有意な結果がある、のたった3つの、結果の値なの。
>クソ仕様はお前の頭。
いや糞仕様だよ普通に
つかなんでいちいち煽りを入れてくるかね…
俺は散々その未検査とかの状態をundefinedじゃなくて、
サービスの値として別で定義するべきと言ってるわけ
電カル云々ってのは結合って意味でしょ?
その結合するにしても、「undefinedを判定に使う」なんてのはやるべきじゃないでしょ?
アプリケーションレベルの話なのだから、きちんと「未検査」「なし」という値を定義すべきでしょ?
きちんとここまで理解できてる?
0188デフォルトの名無しさん
2016/05/28(土) 02:08:55.19ID:F7SYakCj説明聞く限りだと、明らかにまともなシステムじゃないよ?
そんなのをお手本として語っちゃうのは駄目だと思うよ
0189デフォルトの名無しさん
2016/05/28(土) 02:42:07.52ID:F7SYakCjすみませんでした
0190デフォルトの名無しさん
2016/05/28(土) 03:04:53.76ID:4RY8P4hkらちがあかないおつむでご苦労なこった。
おつかれさん。
0191デフォルトの名無しさん
2016/05/28(土) 03:09:13.25ID:4RY8P4hk全部、有意な「何もない」という情報なんだけどな。
0を発明する前の、指で数を数える原始人みたい。滑稽よね。
0192デフォルトの名無しさん
2016/05/28(土) 03:22:22.32ID:4RY8P4hkそれとも、概念が必要ないんだろうか。
phpのissetも、perlのexistsも、Mの$Dも、はたまたcのプリプロセッサマクロのifdefも要らんというか、使いこなせないんだろうな。
0193デフォルトの名無しさん
2016/05/28(土) 03:43:50.37ID:/MxDZHtX「何もない」ものと区別する必要があるだろ。
0194デフォルトの名無しさん
2016/05/28(土) 04:51:05.16ID:BWGRJTprJS界では有意義に使い分けられてるのだからあってもいいと思う。
無い言語では別の機能で代替してそれは成り立ってるのだからなくてもいいと思う。
ただそれだけの無意味な議論。
0195デフォルトの名無しさん
2016/05/28(土) 05:52:30.30ID:/MxDZHtX-1で代用したりでなんとかなってるしなw
ないならないで工夫次第で何とかなるが、
あれば楽になるっていうものなのだろう。
0196デフォルトの名無しさん
2016/05/28(土) 09:38:09.38ID:PPUGo99f専門家でない自分が検査の詳細を知る由もないんだけど、必要であれば Interface を拡張するか、上位 Interface を作ればいい
例えば、検査フェーズ毎に結果が欲しかったら、上位に Interface MedicalCheckPhase を作る
https://jsfiddle.net/oo1777o0/1/
患者毎に管理したければ更に上位に Interface を作ればいい
---
あなたの管理法が否定されているのは「調査予定の有無」「調査の実施状況」を一つのプロパティにまとめているから
switch (obj.prop) {
case undefined:
console.log('本件は調査予定がありません'); // プロパティが存在しない === 調査予定そのものがない
break;
case null:
console.log('本件は調査予定ですが、未調査です'); // プロパティが存在する === 調査予定がある / null === 未調査
break;
default:
// なにがしかの処理
}
これは「調査予定の有無」「調査の進捗状況」の2つを別々のプロパティで管理した方がいい
MedicalCheck でいう implement, progress がそれにあたる
0197デフォルトの名無しさん
2016/05/28(土) 09:48:10.32ID:UVJrtMwgまったく同意ではあるんだけど
>>127で
> 病院の回線ってそんなに贅沢に使えないんよ。
ってあるから
やむをえずそうしたってことがあるのかねって思ってた
0198デフォルトの名無しさん
2016/05/28(土) 10:07:17.12ID:oSugN8gYundefined 処理のロジックを入れておけば、新たなフィールドが追加されても
プログラムの修正はそのフィールドを直接扱う所だけで済む。
ゆえに、決して拡張されない領域内では undefined も不要になる
(null と undefined はむしろ全然関係ない話)
という理解でok?
0199デフォルトの名無しさん
2016/05/28(土) 10:17:45.97ID:PPUGo99f> 10は、評価した結果falseでなければ、だよ。
>>10が>>157の "「である」を否定を使って比較しない" のコーディングルールと接触しないのか、って事
「hoge.a が truthy である」の否定を使って比較しているよね?
if 文は内部的に ToBoolean を通して true と比較するから「肯定の否定で比較」してる
if 文に限っては ! を使ってもいいルールなら if (!obj.hasOwnProperty('prop')) も許可しなければおかしい
あと、改めて考えると if (obj.hasOwnProperty('prop') === false) で肯定式のみのコーディングが成立するから hasOwnProperty を敬遠する理由がなくなるね
0200196
2016/05/28(土) 11:11:02.33ID:PPUGo99f「実施の有無」はInterfaceの内部処理として隠れるから実際のところはそれ程コード量は増えないと思うんだよね
Interfaceを作ればその後のコード量が少なくなるから相殺されるか、逆にコード量が少なくなる場合もあると思う
このぐらいのコード量ならzlib圧縮してminifiedしたら十分に小さくなるし
0201デフォルトの名無しさん
2016/05/28(土) 11:20:22.38ID:6huP5UCXそれから>>189、お前は概ね間違ったことは言っていない。
お前ら、設計が出来るつもりなのなら、OPPのスレでも見てこい。
お前らにはいい教材になるかもしれん。
http://echo.2ch.net/test/read.cgi/tech/1463663267/
0202デフォルトの名無しさん
2016/05/28(土) 12:01:27.82ID:oFxbpGnEスレタイも読めない阿呆は出て行ってくれ
0203デフォルトの名無しさん
2016/05/28(土) 12:12:29.14ID:8NhNw/7cしょーもない宣伝するな
しかもOPPて
0204デフォルトの名無しさん
2016/05/28(土) 13:07:01.36ID:6huP5UCXお前の回答はどれなのさ?
こいつらは回答してるし、質問は掃けているのだから、回答もしていない奴が口を挟む筋はないよ。
最近、お前みたいな「筋をわきまえないキチガイ」は2ch一般に増えたけどね。
0205デフォルトの名無しさん
2016/05/28(土) 13:29:38.68ID:GZb66p/J0206デフォルトの名無しさん
2016/05/28(土) 15:14:44.57ID:h5j9D0+lすまんが、否定派は結局何が主張したいのかがわけわからん。
true/falseはいらない、1と0でいいと言ってるのと同じでしょ。
無くてもどうにかなるからという論を散々されても、
無いほうがいいということにはならないからね。
でも最初の話はそうじゃなかったでしょ?
JSにおいてnullとundefinedの関係及び立ち位置がやや難しいという話だったでしょ。
undefinedが要るか要らないかのような単純な話じゃないし、
今からJS2を作ろうというのでもないのだからそんな話をしても全く意味が無い。
それよりも関係及び立ち位置をここで、またこれから振り返って整理していこうというのが
正しい論議だと思うよ。
0207デフォルトの名無しさん
2016/05/28(土) 15:34:39.73ID:7z0JA/T2age: 1,
f: () => {
console.log(this.age);
}
};
obj.f();
functionじゃなくて() =>で関数を書いた時にf()の中からageの値を取得する方法を教えてください
0208デフォルトの名無しさん
2016/05/28(土) 16:01:02.90ID:jKO2qa04自己満足で解決
0209デフォルトの名無しさん
2016/05/28(土) 16:28:58.11ID:6huP5UCXその場合はfunctionと書く方が正解
0210196
2016/05/28(土) 16:47:58.29ID:PPUGo99f一緒くたにされてるけど、別に undefined 不要は唱えていない
自分が主張したのはプロパティが存在しない事を確認する為に obj.prop === undefined を使うべきではない、という事と
ID:5O2HSGrs が考える医療システムコードの問題点だけ
null, undefined の違いは>>102で説明したことが全て
undefined 比較はほとんどの場合において不要
0211デフォルトの名無しさん
2016/05/28(土) 16:53:14.43ID:F7SYakCjレスしないと行ったけどむかついたから言わせて
>>192
なぜそう煽るの?しかもそのレスってこっちの内容まともに読めてないよね?
まず未定義の判定操作がいらないとは言ってないよ
未定義を値として扱う事全般が駄目と言ってる
まず大前提として、こっちは端的にBoolean、Number、文字列やユーザー定義の列挙型と、
Nullable、Undefinable(?)な型はそれぞれ直交した概念ときちんと分けて考えてるわけ
(NaNはNumber型の値の一つとして見てるから、その点でそちらとは考えが違う)
で君の言ってるシステムは本来アプリケーションの1つの型(もちろん値が直交した型なら複数)として実装する物を
変数の未定義状態を表す型(Undefineable)に対し、
なぜかアプリケーション側の定義値の一つをぶっこんでいるでしょ?
それ普通に糞仕様だよねって話
理解できてる?
違うと言うならズレた煽りを入れずに、何が違うか具体的に言ってね?
0212196
2016/05/28(土) 17:01:36.87ID:PPUGo99fobj.age で可能だけど、そこでアロー関数を使う意図が疑問
アロー関数はthis値を変化させないときに使うもの
0213196
2016/05/28(土) 17:22:13.49ID:PPUGo99fお疲れ様
多分、彼( ID:4RY8P4hk )はあなたの意見を誤読してるだけだと思う
あなたの主張「>>196の状況でundefinedと比較する仕様(設計)がNG」
彼が解釈したあなたの主張「JSにundefinedは必要ない」
0214デフォルトの名無しさん
2016/05/28(土) 17:31:05.73ID:B2G67qElでもってアプリレベルでは共通するシンボルを使えばいいとも考えられる。
但し、1つ理由のためnullは存在価値がある。
それは偽性だということ。
では偽性のシンボルを自由に作れれば良いのかというとそれは微妙。
偽性な値というのは各型に1つくらいしかなく限られてるからこそ、
その性質を活用しやすいと言うこともある。
nullはだいたいオブジェクト型の唯一な犠牲の値としての立場を振るう。
よって、nullという存在を用意しておくのは、
シンプルや汎用的にし過ぎて利便性を犠牲にすることがない
良いバランスを狙えていると思う。
0215デフォルトの名無しさん
2016/05/28(土) 17:37:37.39ID:F7SYakCjすまないありがとう、落ち着いたよ
まさにおっしゃるとおりなので、>>196に便乗させてもらいます
よく考えたらコードに一切落としてないから、人に強く言える立場でもないなあ…
0216デフォルトの名無しさん
2016/05/28(土) 18:51:22.49ID:bfGuDmoK0217デフォルトの名無しさん
2016/05/28(土) 19:13:15.00ID:B2G67qEl0218デフォルトの名無しさん
2016/05/28(土) 19:21:59.51ID:4RY8P4hkぶっこんでないから、undefinedなんだけど、まぁいいや。
定義されていない、を定義してるっておかしいと思わないのかな。
クソ仕様は、undefinedを代入してる、って誤解してるババロアと取り替えても支障のないレベルの脳ミソだと思うけどね。
0219デフォルトの名無しさん
2016/05/28(土) 19:59:16.01ID:1ecGmLwKてめえのあたま埃でも入ってんじゃねえの
0220デフォルトの名無しさん
2016/05/28(土) 20:06:57.74ID:6huP5UCXいや違うぞ。
>>211の主張は、「undefinedを代入するな」ではなく、「undefinedを有効値(意味のあるもの)として使うな」だ。
プログラミング言語上のundefinedに対し、アプリケーション上の意味をオーバーロードしていることを問題視している。
といってもこの表現では君には伝わらないだろう。そこでさらに平易に言い換えると、
例えば、Ruby等、undefinedがない言語で組んだ時、
アプリ上で「未実施」「成功」「失敗」「情報無し」の4値状態が必要であれば、
当然 true/false/nil では足りないから何らかの対策をするだろ。
それをJavaScript(4値状態可能)であったとしてもやれと言っている。
まあ君はNaNも導入しているので5値状態まで行けるのかもしれんが、どこまでそれやるの?という話になる。
0221デフォルトの名無しさん
2016/05/28(土) 20:14:47.49ID:19MLvfJY0222デフォルトの名無しさん
2016/05/28(土) 21:13:45.88ID:/MxDZHtXhttp://bleis-tift.hatenablog.com/entry/scala-null-none-nothing-nil
似たような意味でも違う概念なら違うものに割り当てるべきだよ。
0223デフォルトの名無しさん
2016/05/28(土) 21:22:05.08ID:ynWa4gys変数の初期化をしたいけど、いれる物がない時はnullを入れるべき
undefinedを入れるのは間違っている
0224デフォルトの名無しさん
2016/05/28(土) 21:34:27.07ID:ubVCvz+aお願いだから書き込むのをもうやめてくれ
何いきなり「cのdelete」とか言い出しちゃってるの?
0225デフォルトの名無しさん
2016/05/28(土) 21:42:53.12ID:ynWa4gysまだ一回しか書き込んでいない
0226デフォルトの名無しさん
2016/05/28(土) 21:43:39.30ID:LvedKHwv俺c/c++メインだが、その例えは意味がわからん
0227デフォルトの名無しさん
2016/05/28(土) 21:44:56.20ID:ynWa4gysc言語で、フラグの為にnullを代入することはあっても、deleteで消すことはないだろ?
0228デフォルトの名無しさん
2016/05/28(土) 21:50:45.87ID:LvedKHwv言いたいことはわかったけど、それと例えが全くマッチしてない気が…
0229デフォルトの名無しさん
2016/05/28(土) 21:51:00.22ID:ubVCvz+a0230デフォルトの名無しさん
2016/05/28(土) 21:52:08.66ID:UVJrtMwg0231デフォルトの名無しさん
2016/05/28(土) 22:55:04.19ID:4RY8P4hk何もない事を現すものに、何かを使うと、それは、「何もない事を現すもの」という実体になっちゃうでしょ。
1つ2つの欠けうるフィールドにであれば意味はあるだろうけど、
数千の項目のうち必要なものだけが帰ってくるというものに対して、
この項目は今回入ってません、って通信する意味はあるのかな。
0232デフォルトの名無しさん
2016/05/28(土) 23:20:30.96ID:6huP5UCXとりあえずデータ取得はJSONでサーバからもらって、フォーマットは>>135みたいなのなんだろ?
つまりネットワークバンド幅をケチるためにundefinedは最初から抜けていると。
そこまではその実装で正しいと思うぞ。問題はその先だ。
あとついでに答えも言っておくと、どっちの実装でも一長一短あるんだよ。
だからそれぞれの利害得失を分かった上でその実装にしているのならそれでいいんだよ。(これを設計という)
ただ、お前らどちらも「俺の方が正しい」と思っているだけで、
相手側の実装も含めての利害得失をさらっと言えないだろ。
それじゃ駄目なんだな。
なお、俺ならお前らの中間の実装にする。でも君達はこれも想像できないだろ?
君達には実装時のオプションが足りてない。
まあ、でもこういう風に議論することは多分お互いのためになるだろうから、頑張れ。
0233デフォルトの名無しさん
2016/05/28(土) 23:31:47.42ID:viYscYES滑稽やなこいつw
0234デフォルトの名無しさん
2016/05/29(日) 00:46:26.74ID:0W+JhSU+ネットワークからもらうのは通信電文だよ。
通信電文自体イメージできてないかもしれないけど。
意味のない中間の実装とか要らないの。
相手側の実装、結果の値の入っていないものに、わざわざ結果が入ってませんと入れていく、に文句つけるとすればただ一つで、
結果が入っていないことが問題になるのは、その結果を使用しようとするときで、電文をパースしてオブジェクトに乗せた段階では、
どれに結果が入っていて欲しいか、なんて事は把握してないんだよ。
だから、足回りが結果が入ってなかったと設定する事はできないし、
「知りうるすべてのフィールドに対して、これは入っていなかった」って設定する事も無駄すぎるの。
知りうるすべてのフィールド、も保守管理していくとなると、永遠に保守を続ける必要が発生するよね。
そうなると、話はシンプルで、貰っていない≒入っていない、の構造を維持するのが一番よね。
あと、検査結果に対して、(今のところ)結果無しを何か定数(文字列でも)で持つのはよろしくない。
その後、新しい検査結果として、同じ、またはとてもよく似たものが入ってきた時に、それと鑑別するのが不可能だったり後からデータコンバートが必要だったり、エスケープしていく必要があるよね。
であれば、データを解釈した結果未来永劫に渡って帰ってくる可能性の無い、かつどこにでもある定数としてのnullを使うべきでだよね。
進捗自体は、別のデータが貰えてるので、そいつでフィルタすれば良い。
0235デフォルトの名無しさん
2016/05/29(日) 02:13:36.39ID:JYpYJI9w0236デフォルトの名無しさん
2016/05/29(日) 02:33:08.25ID:qvzR6wN9おいおい俺にレスを付けるかw
やり合ってるのは俺じゃないぜ。まあ、安価自体には大して意味がないかもしれんが。
> 無駄すぎる
> 貰っていない≒入っていない、の構造を維持するのが一番よね。
これらについては正解。相手側の欠点と、自分側の利点は言えた。
では相手側の利点と自分側の欠点は言えるか?つまり相手側が何故相手側の主張をするかだ。
まあこれは言えなければ相手側に言ってもらえばいいんだが。
そうすればお前らお互いに知恵を出し合ってブレスト出来て前に進めるだろ。
そうやって自分の中の実装オプションを増やしていけば、
仕様を聞いた瞬間に複数の実装が思い浮かんで選択できるようになる。
下らない文法争いからはいい加減に卒業した方がいい。あんな事をやっていても全く上達しない。
0237デフォルトの名無しさん
2016/05/29(日) 02:33:34.96ID:qvzR6wN9というか正直、こじつけただけのように見える。ただ、それはそれでいいんだよ。
君の実装は軽量高速動作向きだ。
だからプリミティブで対応するというポリシーなら、それはありなんだよ。
問題はそれを分かってやっているのか?ということなんだよ。
あと、話を大きく考えすぎだ。身近な成功例があるのだから、それを参考にすればいい。例えば、
000: 未実施
100: 実施中、結果待ち
200: 結果良好、終了
303: 再検査中
304: 再検査終了、問題なし
404: 結果不良
とかな。何の事かは分かるだろ?それを参考に決めうちしたとして、ほぼ全部設定できるはずだ。
どうしても駄目なら 600: その他、で直接stringを指定すれば済むが、
まあこれは分かると思うが避けられれば避けた方がいいだろう。
いずれにしても、この方式は拡張するにしても容易だ。
0238デフォルトの名無しさん
2016/05/29(日) 02:34:17.67ID:qvzR6wN9http://echo.2ch.net/test/read.cgi/tech/1449440793/
お前らが延々と文法の話しかできない事に辟易していた。
この手のプログラミングの本質についての話なら、当然歓迎する。
だからあっちで勝手にやってくれても構わないし、今回みたいに収拾つかない場合には助け船も出す。
とはいえ、今回は君らだけでもっと走れるはずだ。
上記のように、反対側サイドは相手側に出してもらってもいいのだから。一人で走りきる必要はない。
だからまあ、今話している連中で行けるところまで行ってみるべきだね。
場所は上記の通り、移動したければどうぞだが、個人的にはここでやって構わないと思うけどね。
役に立たないレスしかしないゴミは無視でいい。
君らがガンガン回答しているのだから、君らが牛耳るべきなんだよ。
回答者のレベルが分かるのは質問者にとっても有益だ。
質問も全部掃けている。
質問と混線してやりにくいということになったら、その時にスレ分割を考えればいいだけのことだ。
なお、ここは質問スレなのだから、質問者は議論の空気を読まずにいきなり質問を落としていい。
それで議論がぶった切られるのが嫌なら、議論は別の場所でやれってことでしかない。
0239デフォルトの名無しさん
2016/05/29(日) 04:35:50.01ID:qTFaTssRもうお前が型の基本も読解力もなく煽ってるだけの存在ってのは理解したから良いよ
結局何も答えられずに煽るだけだったね
0240デフォルトの名無しさん
2016/05/29(日) 04:45:22.18ID:qTFaTssR設計がUndefined許容になる事を秤にかけたら遥かに前者のがいいっしょ
利得がって言ってる拡張は、プロトコル上は1レスポンス1バイト〜高々数十バイト(項目数)程度の差で済む
ISDN相手じゃあるまいし、中は同軸使ってた頃のシステムでも1Mぐらいはあるから、そんなの問題にならないよ
単に古いからなし崩し的に使ってるだけだと思うよ
で、それをかの人はなぜか良設計だと思い込んでると
まあもうどうでも良いけどね、本人最後まで理解しなかったし
0241デフォルトの名無しさん
2016/05/29(日) 04:47:37.88ID:qTFaTssR正しくは、プロトコルを拡張するのと、設計がUndefined許容になる事を秤にかけたら
0242デフォルトの名無しさん
2016/05/29(日) 05:02:06.30ID:9ISBvfBu0243デフォルトの名無しさん
2016/05/29(日) 05:07:22.44ID:qTFaTssR>知りうるすべてのフィールド、も保守管理していくとなると、永遠に保守を続ける必要が発生するよね。
全部フィールドを保守するのが無駄と言ってるけど、
ビュー側で分けてるんだから同じ事だよ?
なぜか保守してないことになってるけど
0244デフォルトの名無しさん
2016/05/29(日) 05:22:17.03ID:qTFaTssR末端でそれぞれ対応してるモジュール同士が理解できればそれで良いっていう体の
オブジェクト送信と保存のための汎用ミドルウェア扱いしかしてないって事だよね
そして結果と言う名の値にごちゃごちゃデータ入れてるから、
各値を読めない末端は何のメタ情報も取得できない
それで保守しにくいって当たり前じゃんよ、何も考えずに末端で適当に実装してるんだから
どういう体系なのかは知らんが、正直関わりたくない案件です
0245デフォルトの名無しさん
2016/05/29(日) 05:24:34.66ID:uH1/jPAHバイナリのプロトコルがいいよ。
たとえばJSONをgzip圧縮するとかNE!
0246デフォルトの名無しさん
2016/05/29(日) 05:32:26.63ID:9ISBvfBu貰った明示的な空値と貰ってない暗黙的な空値を区別するために
両方の存在が必要ということだな
0247デフォルトの名無しさん
2016/05/29(日) 06:24:18.47ID:0W+JhSU+空論だらけで笑えるわ。
undefined許容と言うか、お前らの見識狭すぎるだろ。
ざっくり白本から引用すると
http://shirobon.net/22/ika_2_3/i_m_2_3.htm
こうあるわけだ。
中見るとわかるけど、ひとつの検体でも、凄まじく別れるわけ。
0248デフォルトの名無しさん
2016/05/29(日) 08:06:23.01ID:7TpVCW1+JavaScriptスレの住人に医療知識を求める方がおかしいと思うけど、あなたは ID:4RY8P4hk ?
多態性が必要ならオブジェクト指向をすればいい
一つのオブジェクトでプロパティチェックを一つ一つやって確認していく方法は極めて無駄
0249デフォルトの名無しさん
2016/05/29(日) 09:08:45.76ID:0W+JhSU+だから、知らないなら知らないで良いんだよ。
しったかぶって、この設計で大丈夫、クラスやら、インターフェイスでガッチガチに固めれば良い、なんて発想されても、それじゃ不便なんだよねえ、って話するしか無いじゃん。
DBにも実際にスキーマフリーなkvsのような物に入ってるんだし。
何を持っているかは、もの次第。
その上で、持っていないものに関しては、定義しない、
持っているけど、中身の入っていないものは、定義して中身にnullを入れる。
そんなけ。
0250デフォルトの名無しさん
2016/05/29(日) 09:18:33.91ID:cJcPZgXw> 中身の入っていないものは、定義して中身にnullを入れる
お前は雑巾で顔を拭くのか?
0251デフォルトの名無しさん
2016/05/29(日) 09:43:12.25ID:BS/+K0m3iPhoneのtextwellで使用したいです。
0252デフォルトの名無しさん
2016/05/29(日) 10:11:38.70ID:pBCN0dYY■ このスレッドは過去ログ倉庫に格納されています