16/05/22 19:51:33.37 WwOYSBmy.net
JavaScript を自ら学ぶ人のための質問スレッドです。
>>2-4のテンプレを読んだ上で質問してください。次スレは>>950が>>2のテンプレ案(本スレで改善案があれば考慮)を元に立ててください
■質問を書く上で
(1) 煽り、コード制作依頼等、人を不快にさせる投稿はご遠慮下さい。公序良俗を守った応対を心がけてください。
(2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください。
(ブラクラ、[戻る], [閉じる], [クリック] の妨害、画面占有など)
(3) 質問者及び議論を行う人はメール欄を空欄にし、名前にレス番を入れることを強く推奨します。回答者はなりすましを判断できませんので、なりすましが現れても自己責任となります。
(4) 常に自発的に調べる心構えを持ってください。
具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。
わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
(5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。
(6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。
※必ず「問題の事象が再現されること」を確認してください。
必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。
(7) サンプルコードに HTML が含まれる場合は URLリンク(validator.w3.org) で [Check] してみてください。
(8) 質問を具体的かつ詳細に書くと回答を得られやすいです。>>2の質問テンプレートを活用してみてください。
(9) 時にはあなたが望む「答え」だけでなく、「意見」などが寄せられる場合もあります。
2:デフォルトの名無しさん
16/05/22 19:57:06.35 Jbe/yyc4.net
荒 ら し が 立 て た ス レ で す。
ス ル ー 推 奨 。
3:デフォルトの名無しさん
16/05/22 20:14:45.33 FTGg1fS8.net
荒らしってか三日間騒ぎ続けてるキチガイ
4:デフォルトの名無しさん
16/05/22 21:13:57.23 5X2RDQPH.net
未だにお前らが何をやりたいのかさっぱり分からないが。
まず、次立てずに埋めた馬鹿は荒らしだろ。IDコロコロだし。 >>2
次に、このテンプレでいいのなら124を再利用すべきだろ。
そしてこのスレで行くつもりなら続きのテンプレも落とせよ。 >>1
ライブラリ禁止ならテンプレが異なるので立て直すべき。
個人的にはワッチョイの方がいいと思う。IDない頃よりはだいぶマシになってるし。
IDコロコロ埋め立て放置荒らしはWeb板に戻ってきて欲しいのかもしれないが、
どっちかというとお前らは議論したがっているし、(と言うよりは蘊蓄を披露したいだけか?)
正直今のお前らの日本語力でID無しでの議論は無理だから、この板が妥当だろう。
議論内容は正直どうでもいいものだけど、それでも議論したければするがいいさ。
ただ、あの内容については、500行程度のコードを書くようになれば自然に納得いくから、
もやもやしている奴は、こんな所で時間を消費するのではなく、コードを書いた方がいい。
お前らは本当に「50行のコードしか書いてないんだな」と思える展開が多すぎる。
5:デフォルトの名無しさん
16/05/22 21:26:22.79 FTGg1fS8.net
長い3字で済ませろ
6:デフォルトの名無しさん
16/05/23 00:01:13.45 nh4t1HCu.net
前スレの ID:WwOYSBmy を見てきたが、酷いな
7:デフォルトの名無しさん
16/05/23 09:44:02.18 09f5J8xU.net
ワードサラダっぷりも誰かにそっくり
8:デフォルトの名無しさん
16/05/23 19:52:15.88 aItG7/va.net
>>2->>8
いきなりかよw
9:デフォルトの名無しさん
16/05/24 01:18:13.42 1wjjU4Dv.net
プロパティを持っていないときに代入をしたいんですが
var foo = {};
foo.bar = foo.bar || "value";
こういう書き方意外になにかありますか?
もしくは、rubyのHash.new("value")みたいにデフォルト値を与える方法はありますか?
初心者なのでどうすべきなのかさっぱりわかりません
10:デフォルトの名無しさん
16/05/24 02:37:42.45 wmKZ/4EE.net
>>9
if(!hoge.a) hoge.a='aaa';
がわかりやすくてよく使う。
オブジェクトなら、mergeObjって関数作ってて、デフォルト値のオブジェクトにマージする関数も作ってる。
11:デフォルトの名無しさん
16/05/24 11:09:37.02 57joSblr.net
>>9
foo.bar || "value" は foo.bar に falsy な値が入っていた場合に上書きされる
プロパティチェックには in 演算子か hasOwnProperty を使う
if (!('bar' in foo)) {
foo.bar = 'value';
}
デフォルト値はプロトタイプで指定する
function Foo (bar) {
if (arguments.length > 0) {
this.bar = bar;
}
}
Foo.prototype.bar = 'value';
console.log(new Foo);
console.log(new Foo(1));
12:デフォルトの名無しさん
16/05/24 11:43:05.72 Fup9czqT.net
>>9
foo.barがどのような過程で生成されるかで違ってくるよ
13:デフォルトの名無しさん
16/05/24 12:18:09.22 fTRdDZnU.net
すみません、質問です。
サイトで時間で表示非表示のスクリプトを入れているのですが
非表示でもリロード時に一瞬表示されてしまいます。
このちらつきを防止する策はありませんでしょうか?
コードははこんな感じです↓
<script type=
14:デフォルトの名無しさん
16/05/24 12:23:18.22 iG1UUWT4.net
>>13
www
ごめんでも笑えた
15:デフォルトの名無しさん
16/05/24 12:24:06.53 c4cnVHPj.net
茶碗の中みたいだな
16:13
16/05/24 12:35:17.27 fTRdDZnU.net
ごめんなさい 途中で切れてしまいました
<script type="text/javascript">
<!--
window.onload = changeDisplay;
function changeDisplay(){
var objDate = new Date();
var now = (new Date()).getTime();//現在のタイムスタンプ(ミリ秒)を取得
var changeTime = (new Date("2016/05/25 20:00:00")).getTime();//切り替える日時のタイムスタンプ(ミリ秒)を取得
//切り替え前
if (now < changeTime) {
document.getElementById('hoge1').style.display = "block";
document.getElementById('hoge2').style.display = "none";
setTimeout("changeDisplay()", 1000);//1秒ごとに実行(◯秒ごとの場合は、第2引数に 「◯ * 1000」 と記述)
//切り替え後
} else {
document.getElementById('hoge1').style.display = "none";
document.getElementById('hoge2').style.display = "block";
}
}
// -->
</script>
17:デフォルトの名無しさん
16/05/24 13:16:31.22 iG1UUWT4.net
>>16
window.onloadじゃなくてDOMContentLoadedで処理するとか
18:デフォルトの名無しさん
16/05/24 13:21:28.18 57joSblr.net
>>16s
document.styleSheets で
#hoge1 { display: block; }
#hoge2 { display: none; }
を宣言する
19:デフォルトの名無しさん
16/05/24 13:47:40.17 Fup9czqT.net
>>16
var timer = 0;
function changeDisplay(){
clearTimeout(timer);
...
if (now < changeTime) {
...
timer = setTimeout("changeDisplay()", 1000);
} else {
...
timer = setTimeout("changeDisplay()", 1000);
}
方法は色々あるけどこれで良いんじゃない?
20:デフォルトの名無しさん
16/05/24 19:32:47.77 cROy8nMz.net
>>12
手元にある変数をhashtableとして使って
var model = {};
model[a][b][c] = value; // ←これができるような準備をしたい
みたいにして実行時に受け取ったkeyを使ってモデルを構築したいんですね
それをするためにデフォルト値の設定か、key所持の有無を知りたかったんです
>>11
> プロパティチェックには in 演算子か hasOwnProperty を使う
ありがとうございます。さっそくそれらをぐぐって学びました。
まさにそれです。hasOwnPropertyでピッタリのようです。
>>10
> if(!hoge.a) hoge.a='aaa';
ありがとうございます。タイピング量的にはこれがいいですね。
今回、厳密にプロパティ所持の有無だけをチェックする必要も実は無いですし。
21:デフォルトの名無しさん
16/05/24 21:04:07.49 TKpsNxtt.net
>>13 >>16
> すみません、質問です。
> サイトで時間で表示非表示のスクリプトを入れているのですが
<html class="ng">
<script>
if (new Date() < new Date("2016/05/25 20:00:00")) {
document.documentElement.className = 'ok';
}
</script>
<style>
.ng #hoge1 { display: none }
.ok #hoge2 { display: none }
<style>
<body>
<div id="hoge1">hoge1</div>
<div id="hoge2">hoge2</div>
</body>
</html>
22:デフォルトの名無しさん
16/05/24 21:08:36.04 TKpsNxtt.net
一つ言っておきたいのは、ブラウザのJavaScriptでシンプルなコードを書こうと思ったら、
CSSの知識が必要不可欠ってこと。(もちろんHTML自体の知識も必要)
CSSを使ううちに不満が出てきて、SASS(SCSS)に乗り換えることだろう。
見た目に関する多くの処理をCSSでやることで
JavaScriptは驚くほどシンプルになる。
23:デフォルトの名無しさん
16/05/24 22:57:09.14 fFhHkZMI.net
JSDocで、JSONを返すAPIなどのオブジェクトを定義出来ますか?
24:デフォルトの名無しさん
16/05/25 00:22:00.09 oaeRtxYk.net
>>23
JSON はただの String 型
25:デフォルトの名無しさん
16/05/25 00:38:42.00 Jdaj3qLb.net
>>20
それは、なんか関数用意したほうがいいんじゃないの?
model={}
keys=[a,b,c]
setModel(model,keys,value){
var k=keys.pop();
model[k]=keys.length==0?value:setModel(!model[k]?{}:model[k],value);
return model;
}
みたいな感じで。
26:デフォルトの名無しさん
16/05/25 01:02:30.80 e2/1A4Vq.net
お疲れさまです
板TOPに書かれているルール
>JSはweb管理板で
現行スレ
+ JavaScript の質問用スレッド vol.130 +
スレリンク(hp板:50番)
27:デフォルトの名無しさん
16/05/25 01:49:09.77 VNiDmyVP.net
Web板って自演がウザイだけじゃん
28:デフォルトの名無しさん
16/05/25 07:14:03.46 cVBZ9i9Y.net
それができた経緯と現状を顧みずにルールに縛られるのはドアホのすること。
ルールのために我々があるのではない。
29:デフォルトの名無しさん
16/05/25 07:23:06.88 hMNMImmN.net
>>24
JSONをパースしたオブジェクトの構造を定義しておけば、IDEの支援受けられるやろ?
だからソース上にはないクラスの定義できるかって聞いた
JSONが文字列って事くらい誰でもわかる
30:デフォルトの名無しさん
16/05/25 09:26:14.89 Yyi7LTu7.net
お前の使ってるIDEの仕様なんか知らねえw
31:デフォルトの名無しさん
16/05/25 09:59:51.34 oaeRtxYk.net
>>29
JSON は String 型なのでオブジェクトとしての補完機能は必要ない
String.prototype 系の補完機能が働けばそれでいい
まさかとは思うが、JSON をパースしたオブジェクトを JSON と誤解してないだろうな...
32:デフォルトの名無しさん
16/05/25 14:33:22.24 Jdaj3qLb.net
>>26
その頃のjsは、Webだけのためのものだったからなぁ
33:デフォルトの名無しさん
16/05/25 17:16:25.85 hMNMImmN.net
>>31
そうなんだ
例えば、TwitterAPIで返ってくるJSONをパースしたオブジェクトの構造をJSDcoコメントで定義しておけば、オートコンプリートの支援が受けられるやろ?
それみたいに、APIで返ってくる形式をDocで定義したい
34:デフォルトの名無しさん
16/05/25 18:20:50.93 6lXHJSGu.net
>>33
JSON.parse したオブジェクトは new Object か new Array のどちらかしかない
JSON Interface のオブジェクトというものは存在しない
35:デフォルトの名無しさん
16/05/25 18:30:33.44 Rwgeje6L.net
>>33
JSONデータにまで、インテリセンスを効かせたいの?
36:デフォルトの名無しさん
16/05/25 18:50:53.98 hMNMImmN.net
>>35
うん
37:デフォルトの名無しさん
16/05/25 20:50:05.00 RmI4sgQT.net
あきらめろん
38:デフォルトの名無しさん
16/05/25 23:00:15.35 cOSJO7dH.net
>>33
それなら、Object 型を指定するだけで済むはずだが(>>34)
39:デフォルトの名無しさん
16/05/26 00:59:59.52 xmgEeB9V.net
>>32
実質的に今も大して変わらず、9割以上ブラウザだろ。
それよりは、XHRがでかい。
あれで単なるブラウザ専用DSLからプログラミング言語へと脱皮した。
>>25
脱線するが、君はあいかわらずのコードを書いてるな。
指摘は正しいし、そのコードも悪くはないが、良くはない。8/10だ。
普通はshiftだろうし、keysが抜けているが、俺が言っているのはそういう文法的なことではない。
それはさておき、君はC++出身ということでいいのかな?
これをちょっと聞きたかった。
あと、君は ID:WwOYSBmy か?
これについては荒れるリスクがあるから、答えたくなければ無視でいい。
その代わり、回答があれば、そちらに有益な情報(と俺が思っているだけだが)を一つ出すことにする。
40:デフォルトの名無しさん
16/05/26 01:22:55.48 cAjDmLh7.net
>>25のコードに素人臭さを感じるのは
当たり前に入れるべきスペースすら無いからかな。
経験の低さがにじみ出てる
41:デフォルトの名無しさん
16/05/26 01:48:29.92 xw9RGDuQ.net
質問です
初めてnodejsのexpress?というのでwebアプリ作成してみたのですが
非同期が難しすぎるし、IDEの補完がきかないのでメソッドもいちいち調べるの面倒です(以下コードです)
URLリンク(github.com)
受け取ったJSONの型チェックとかバリデーション簡単にできる方法ってないんですか?
そもそもnodejs自体やめたほうがいいんでしょうか?
やめるとしたら今流行りのサーバーサイドのフレームワークってどれがいいんでしょうか?
42:デフォルトの名無しさん
16/05/26 02:21:24.67 dKizvVLh.net
>>41
>>34
43:デフォルトの名無しさん
16/05/26 02:55:58.29 Zah1U3qm.net
>>39,40
すまんな。スマホで書いてるから。
普段はそういう瑣末な事は、beautifyで綺麗にしてるよ。
俺はperlとgauche。
1ではないよ。
44:デフォルトの名無しさん
16/05/26 03:07:20.77 cAjDmLh7.net
なるほど。経験者はつい入れてしまうから
それができないってのはやはり初心者のようだね。
45:デフォルトの名無しさん
16/05/26 07:33:19.93 QBGIcNJU.net
>>42
?
46:デフォルトの名無しさん
16/05/26 07:40:08.69 CRvI10Ce.net
補完がどうとか型チェックがどうとか言ってるやつはtypescript使ったらいんじゃない
47:デフォルトの名無しさん
16/05/26 07:55:50.23 clpr93dz.net
>>46
ビルドしたらjsになるし開発時だけの機能じゃないんですか?
48:デフォルトの名無しさん
16/05/26 08:40:29.43 Zah1U3qm.net
>>44
つい入れてしまうが分からん。
どのみち機械が解決してくれる内容は手で修正なんかしないだろ。
瑣末な所を気にしすぎて納期的に死ぬ自称中級者みたいなこと言ってないでさ。
popじゃなくてshiftじゃね?ってのは凄く恥ずかしいが。
49:デフォルトの名無しさん
16/05/26 08:42:44.53 wYXEPUUA.net
>>41
JSON は String 型固定だから型チェックする必要はないよね
50:デフォルトの名無しさん
16/05/26 12:08:35.93 z6iFNo2h.net
>>41
JSON-Schemaで検索
51:デフォルトの名無しさん
16/05/26 12:12:08.35 grnWiB9o.net
補完は好みによるので自分で構築しろよ
52:デフォルトの名無しさん
16/05/26 12:54:37.58 z6iFNo2h.net
>>48
スマホじゃ仕方ないと思うが、その結論はどうなんだ
beautifierや規約強制系のツールは、必要最低限で人が意識して書くほどには綺麗にならないし
つかそもそも作業中に自分でも見づらいし、コード書いてたら普通は入れるだろうよ
53:デフォルトの名無しさん
16/05/26 13:13:53.91 z6iFNo2h.net
あとコードに補足するが !obj.prop の判定はfalsy値も含むから、
(obj.prop == null) のが良い
54:デフォルトの名無しさん
16/05/26 13:15:55.40 Zah1U3qm.net
>>52
うーん。タイプ数がとにかく減ってくれれば。
ショートカットもバインドしてあるから、2・3行書いて叩いて、って普段はしてるよ。
人の意識なんかそれぞれだから、規約で縛っちゃったほうが後から来る人に引き継ぎやすいし、rcファイルを撒いてる。
規約は真面目に決める。
55:デフォルトの名無しさん
16/05/26 13:19:24.85 Zah1U3qm.net
>>53
それは微妙では?
やるなら、
((typeof obj.prop === "undefined") || obj.pro===null)
で見てやったほうがいいと思う。
56:デフォルトの名無しさん
16/05/26 13:29:07.06 z6iFNo2h.net
>>55
それは初心者がやること
undefined == nullだからやらんでよろしい
少しは他人に突っ込む前に考えろって
57:デフォルトの名無しさん
16/05/26 13:31:26.42 z6iFNo2h.net
>>54
スタイル強制ツールも完全じゃないんだってば
それも本当に使ってりゃわかるだろ
58:デフォルトの名無しさん
16/05/26 13:44:38.38 Z4ePso6q.net
>>53
falsy な値を考慮するなら null, undefined だけ特別扱いするコードも微妙
in 演算子か hasOwnProperty を使う方がよい
59:デフォルトの名無しさん
16/05/26 13:47:14.61 azrLOfn9.net
処理の内容から想像するに
in演算子よりhasOwnPropertyメソッドのほうが処理が軽かったりもするのかな?
60:デフォルトの名無しさん
16/05/26 14:14:23.15 z6iFNo2h.net
>>58
一般にはデフォルト値を与える場合はnullを置き換える事が多いから、こうしてる
nullが入る事も考慮する場合ならそれに同意する
ただ、JSON相手ならinよりhasOwnPropertyのが良いぞ
61:デフォルトの名無しさん
16/05/26 14:16:43.93 z6iFNo2h.net
しまったJSONは別の人か
まあどちらにしろ in 使う場合はモンキーパッチとかしてる場合でも無い限りまず無いと思う
62:デフォルトの名無しさん
16/05/26 14:25:27.17 tAENBh2t.net
素朴な疑問なんだけどfor文の条件部の区切りってなんでセミコロンなの?
中でカンマ使うから?
63:デフォルトの名無しさん
16/05/26 15:08:38.61 iU2f12RA.net
誰に聞くべきだ
デニスリッチーとかブライアンカーニハンとかケントンプソンに聞くべきじゃねえのか
64:デフォルトの名無しさん
16/05/26 15:25:45.42 7MaZAWY8.net
>>56
==での比較とか、もう!の誤爆と発想のレベルが変わらなさすぎてなんと言うかだなぁ。
>>57
まぁ、完全じゃないってか少し冗長になる事は多いが、完全じゃない、ってのはどんなとき?
>>62
文だから。
65:デフォルトの名無しさん
16/05/26 15:34:27.62 e0xtAfbK.net
論理演算で不可能なケースが発生するのは
論理的なコードを書いていない証
パーフォーマンスが悪くなるよ
66:デフォルトの名無しさん
16/05/26 15:35:50.71 DQmxlFQb.net
なるほど
頭がパーだからパーフォーマンスか
ははは
67:デフォルトの名無しさん
16/05/26 15:38:36.64 uxvxPhHy.net
そもそもなんでfor文なの?
forってどういう意味なの?
なんでふんどしなの?
68:デフォルトの名無しさん
16/05/26 15:50:42.51 z6iFNo2h.net
>>64
>==での比較とか、もう!の誤爆と発想のレベルが変わらなさすぎてなんと言うかだなぁ。
俺から言わせればお前さんが同レベルだよ
そうやって仕様をまるで把握していないから、そういう事を平気で言えるんだろうけどね
69:デフォルトの名無しさん
16/05/26 15:57:13.56 VNKitGFp.net
いつまでもうるせえな
どうでもいいだろこんな初心者がひっかかるような話
俺ら上級者様には一切関係ねえ話だろうが
undefinedなんて出すバカなんてほっとけや
70:デフォルトの名無しさん
16/05/26 16:03:05.34 z6iFNo2h.net
>>63
リッチー先生はもうこの世におらん…
71:デフォルトの名無しさん
16/05/26 16:09:23.69 CcMPN8b7.net
リッチのくせに不死じゃないだと?
そんなバカな
72:デフォルトの名無しさん
16/05/26 16:14:10.74 z6iFNo2h.net
リッチーにジョブズ、リーナスにゲイツ
最近は本当に惜しまれる人ばかりがいなくなってるな
73:デフォルトの名無しさん
16/05/26 16:36:33.73 UN7L7nZy.net
>>72
>リーナスにゲイツ最近は本当に惜しまれる人ばかりがいなくなってるな
2人とも生きているのでは?
74:デフォルトの名無しさん
16/05/26 16:39:58.63 z6iFNo2h.net
まさかこんなすべったレスにマジレスで突っ込まれるとは思わなかったぞ!
75:デフォルトの名無しさん
16/05/26 16:42:16.87 rGVMPRNj.net
名誉毀損
76:デフォルトの名無しさん
16/05/26 16:51:40.48 7MaZAWY8.net
>>68
あーあー、お前のコードでもういいよ。
obj.propがnullで初期化されてればそれで良くなったら、改修がめんどくさいとかほっとくよ。
77:デフォルトの名無しさん
16/05/26 17:01:57.05 TSvbJ/YB.net
伝説の呂布はあかん
78:デフォルトの名無しさん
16/05/26 17:22:20.13 99YjRWAc.net
2ちゃんでしか威張れないなんてなんてかわいそうな人たちなんだろう
79:デフォルトの名無しさん
16/05/26 18:50:41.26 ZS10B00B.net
nullとundefinedは違うの?
80:デフォルトの名無しさん
16/05/26 18:58:27.62 etrunD2E.net
んなもんぐぐれぼけ
いつからここは初心者レクチャー講座になったんだ鬱陶しい
81:デフォルトの名無しさん
16/05/26 19:23:51.43 e0xtAfbK.net
>>79
nullとundefined
視覚的な違いがある
82:デフォルトの名無しさん
16/05/26 19:26:21.87 z6iFNo2h.net
>>76
nullも欲しいならそもそも判定する必要すらないだろ
お前が何を言ってるのか、何を想定して何を問題としてるのかもわからん
はっきり言えよ
83:デフォルトの名無しさん
16/05/26 19:37:17.07 e0xtAfbK.net
いちばん不思議なのことは
obj.prop がどうしてnull になるのか?
だ
84:デフォルトの名無しさん
16/05/26 19:42:34.13 OguWhub7.net
>>83
==を使った場合という意味?
だとしたら==で比較すりゃ型変換されるからでは
85:デフォルトの名無しさん
16/05/26 20:18:59.79 7MaZAWY8.net
>>82
あるわ。
未定義と、正しくnullで初期化しました、は相当違う。
要は、横着するならfalsyなオブジェクトを容認すりゃ良いし、
横着しないのであれば型と中身はチェックすべき。
null==trueはfalseで、null==trueもfalseで、余計な地雷を生む。
って話。
86:デフォルトの名無しさん
16/05/26 20:19:52.73 WcKFKF+t.net
よくアクセスランキングとかにaタグでリンクを貼って飛ばしたりすると思いますが、マウスでクリックした場合は、リンク先で正しくカウントされますが、ジャバスクリプトでページ変更した場合はカウントされないのは、どうしようもないのでしょうか?
87:デフォルトの名無しさん
16/05/26 20:31:24.69 z6iFNo2h.net
>>85 いやその違いが問題だと言うなら問題となる事例を出せと… 少なくとも自分の経験上では、効率考えるとこれが一番妥当 それ以上厳密な型が欲しいならそもそもJavsScriptなんて使わない
89:デフォルトの名無しさん
16/05/26 20:32:48.87 iLE0aKXK.net
質問者もいねえんだからもうよそでやれよクソッタレどもが
90:デフォルトの名無しさん
16/05/26 20:35:37.26 z6iFNo2h.net
>>85
>要は、横着するならfalsyなオブジェクトを容認すりゃ良いし、
まずこの結論が極端
0を容認するが、null/undefinedを容認しない事例なんてゴマンとあるのに対し、
nullを容認するがundefinedを容認しない事例はほとんどない
91:デフォルトの名無しさん
16/05/26 21:53:32.28 7MaZAWY8.net
しつこいやつだな。お前が正しいでもういいよ。
92:デフォルトの名無しさん
16/05/26 21:56:38.20 cAjDmLh7.net
これに従えばいいだろ
URLリンク(github.com)
今時typeofつかって"undefined"と比較するのはアホ
93:デフォルトの名無しさん
16/05/26 22:11:08.45 5gTTFtf/.net
hasOwnPropertyでいいやん、ってだけの話を何をグダグダとw
94:デフォルトの名無しさん
16/05/26 23:10:54.73 UjMbTLsx.net
また、null, undefind の論争か
DBでも、null があって、3値論理で手一杯で、
偉い学者が唱えた、undefind も入れての4値論理は、ややこし過ぎて、否定されただろ
Rubyの偽は、nil, false だけ。
これが覚えるルールが少なく、最もシンプル
JSはおかしい。言語実装者用の内部ルールが、
一般のプログラマーにも見えてしまっている
95:デフォルトの名無しさん
16/05/27 00:40:25.02 fXm66YRc.net
>>90
よくねえよ
問題とするなら具体的にどう問題になるのか出せって
それが正しいならこっちだって改める
96:デフォルトの名無しさん
16/05/27 01:55:13.24 10EzBfKp.net
>>93
でもなぁ、現実問題便利なんだよ
null・・・データーベースの値としてnullを代入
undefined・・・省略(何も変化させない)
97:デフォルトの名無しさん
16/05/27 02:38:39.80 5O2HSGrs.net
>>94
改めて貰わなくて結構。
自分が正しいと盲信してる人間に説明し付けるほど無駄なことは無い。
98:デフォルトの名無しさん
16/05/27 02:58:22.81 fXm66YRc.net
>>96
なんだそれ、事例出すなんて一言で済む話だろ
それを虚勢で言っていないなら、ただ荒らしてかき回してるだけの嫌な奴でしかない
99:デフォルトの名無しさん
16/05/27 03:03:17.59 fXm66YRc.net
>>95
具体的に実装コードが見えないがそれ便利なのか?
100:デフォルトの名無しさん
16/05/27 04:27:40.50 Ck73qeVz.net
気持ち悪い奴が言い合ってるな。
101:デフォルトの名無しさん
16/05/27 08:31:12.52 bXpUR2n8.net
前のスレもそうでしたよ^^
102:デフォルトの名無しさん
16/05/27 08:44:39.94 N6sFDxPG.net
nullとundefinedはレイヤーが違う。
nullはオブジェクトに置けるNaNみたいなもので、
基本オブジェクトを扱う文脈で基本効果を持って取り扱われる値。
あくまで参照が同じな特殊な役割を持った偽性のオブジェクトのようなサインが共有されていると思えばいい。
undefinedはもっと広く、何も扱うべき値がない時に充てがわれる基本効果の無い値。
103:デフォルトの名無しさん
16/05/27 08:53:49.08 UCpt+1On.net
>>101
少し違う。
null 値の定義はES2015で定義されてる。
---
primitive value that represents the intentional absence of any object value
URLリンク(www.ecma-international.org)
---
null 値は意図的にオブジェクトが存在しないことを表す値。
undefined は未定義値。文脈上、初期化される前の値を表す。
104:デフォルトの名無しさん
16/05/27 08:55:46.53 u/p+Wu9Y.net
>>101
そんなややこしい事考えるくらいならnullだけ有ればいいよね
105:デフォルトの名無しさん
16/05/27 09:10:27.24 N6sFDxPG.net
>>102
ESの範囲だけならそうだが、実際はESの範囲でnullは極めて限定的にしか表に現れない。
実際のnullのイメージというのは外様APIが作ってる面が大きい。
そしてprompt()みたいに基本文字列型を返す代わりにnullを返すものもある。
よって、nullは”明示的”な「サイン」と考えるのが一番現実に合っている。
undefinedもしかり。ただこちらはESの範囲でも様々に”暗黙的”に表に現れる。
そういう意味でレイヤーが違う。
>>103
どちらかというと内部的には両方の概念が合ったほうがいい。
表に出す時nullだけに絞ると言ったことは勿論可能。
nullだけあればいいというより、nullだけに絞る選択をすることも可能というべきか。
だが使える道具の大小というのはどっちもメリット・デメリットがあって、
個人的に考えるに両方ほぼ同価値で優劣は付けられないと思う。
106:デフォルトの名無しさん
16/05/27 10:14:21.43 wAuO+eAi.net
>>104
> null 値は意図的にオブジェクトが存在しないことを表す値。
> undefined は未定義値。文脈上、初期化される前の値を表す。
論理的にはこれが正しい
構文が論理的ではないからnullが必要になる
107:デフォルトの名無しさん
16/05/27 11:52:08.31 5O2HSGrs.net
真偽しか扱えない奴が多すぎるんだろ。
nullも、undefinedも、NaNもある理由があってあるんだから。
nullだけで良かったはずなんてアホみたいな事言われても困る。
nullを四則演算したら0として扱われるが、undefinedに四則演算したら、NaNになる。
NaNに四則演算しても、NaNのままだし、x=NaNでも、x==NaNはfalse。
当たり前。数値ではない事が確定しているが、「数値ではない」だけで、足し引きした結果は、「別の「数値ではない」もの」だから。
nullってのは、明確にnullだと代入ないし宣言されてるもの。
undefinedは、宣言すらされていないもの。
これを不要という人間は、そこまで考えないといかんシステム作ってないだけ。
mongoのdocumentを出し入れ返しれするapiなんか想定したら良いと思うが、少なくともnullで初期化されてるフィールドは使っても良い。
nullで初期化されていないundefinedなフィールドはもしかすると使うべきでないかもしれない。
それくらいの問題。
108:デフォルトの名無しさん
16/05/27 12:16:24.73 9jKz8E7p.net
取りあえず10億ドルの過ちをテメェで精算してから喋って、どうぞ
109:デフォルトの名無しさん
16/05/27 12:28:34.05 AZKYjFu+.net
window.open("URLリンク(localhost) "localhost", "width=100, height=100");
window.open("URLリンク(localhost) "localhost", "width=200, height=200");
window.openでウィンドウを開くときに指定したサイズで開きたいんですが
2回目のwindow.openでサイズが1回目のウィンドウサイズのまま変わりません
どうやってwindow.openで開いた時にウィンドウサイズを指定したサイズにできますか?
110:デフォルトの名無しさん
16/05/27 12:58:47.82 5O2HSGrs.net
nullable型の必要性だなんだって議論は、そもそもjsに明確な型がプリミティブなものしかないんだから無意味だろ。
111:デフォルトの名無しさん
16/05/27 13:35:54.88 mSvZp4nB.net
レスは繰り返す
112:デフォルトの名無しさん
16/05/27 14:02:06.44 61QydpaF.net
>>104
イメージというのは各々で異なるものだと思うのだが、他者に意見するほどのものがそこにあるのだろうか…。
prompt も getElementById も「存在しない事を表す」という意味ではES2015の範囲内でおさまっている。
(ES2015的には prompt が空文字を返した方が返り値が String 型で統一されてそれらしいとは思うが、イメージの話なら多少の誤差は許容されるだろう。ここでは文字列が存在しない事を null で表している。)
サインという表現を使うぐらいなら、それが定義済値(null)か未定義値(undefined)かで区別する方がES2015らしい。
関数が undefined を返すのは返り値が未定義(指定されていない)だからだ。
明示的にないことを表すなら定義済のnull が望ましい。
そうでなければ、その関数が初期値のundefined を返したのか、明示的にundefined を返したのかを区別できないだろう。
113:デフォルトの名無しさん
16/05/27 15:20:53.00 fXm66YRc.net
>>106
だからそこまで考えないといかんシステムって具体的になんなんだよって
出してる例もデフォ値とか、Map返して列挙で十分なものばっかりじゃん
114:デフォルトの名無しさん
16/05/27 15:37:37.19 fXm66YRc.net
あんまり細かく突っ込んでもなんだけどさ、
言語実装側が使う分には便利、という言い分は事例もすぐ出せるし納得はできるが
NaNになるとかのユーザー側の仕様ついては、
本来はundefinedの使用は全てエラーとすべき事で是とするものではないだろ
115:デフォルトの名無しさん
16/05/27 16:28:18.28 5O2HSGrs.net
>>112-113
うち医療系のシステム屋。
NaNも、undefinedも、nullも検査なんかだと戻す値としてあり得る。
サチった、検査項目に入ってない、検査としては行ったが、検体の問題などで結果は出なかった。
116:デフォルトの名無しさん
16/05/27 16:41:32.15 swGPgzcA.net
黙れゴミニートのくせに
117:デフォルトの名無しさん
16/05/27 16:46:54.76 fXm66YRc.net
>>114
そんなので反論するのはいいけど、実際医療システムでそういう仕様にする?
しないっしょ?
全部専用の型用意すべきだし、未定義じゃ例外送出だし、
サチったらNaNとかInfinityじゃなくてエラー吐かせるし
118:デフォルトの名無しさん
16/05/27 16:47:23.18 ftcnTlL4.net
>>114
> サチった、検査項目に入ってない、検査としては行ったが、検体の問題などで結果は出なかった。
これJavascriptで判定するの?
119:デフォルトの名無しさん
16/05/27 16:55:34.96 fXm66YRc.net
飽くまで実装事例の話としての話だから、
そういうシステム実装はありえないとは言ってないよ
実際にあるなら黙るし
120:デフォルトの名無しさん
16/05/27 16:56:34.37 7C5pluWz.net
>>114
戻す値としてあり得る……ってことは
return NaN;
return undefined;
とかがあるってことか
エラーコードでも例外ブジェクトでもなく
121:デフォルトの名無しさん
16/05/27 17:41:11.86 5O2HSGrs.net
すごい食いつきだな。
あるよ。ビューアで。
サーバから返すけど、トラフィックの都合上昔ながらの電文でそれを解釈してるのは足回り。
専用の型って言うけど、オブジェクトのメンバがnullかundefinedかはだいぶ違う。
>>119
違うよ。
解釈した結果をobjectに入れるけど、
解釈した結果そのフィールドが無ければ単にそのフィールドを持ってないオブジェクトになる。
エラーでも、例外でもなく結果だからね。
エラーはエラーで吐くよ。
122:デフォルトの名無しさん
16/05/27 17:55:45.05 7C5pluWz.net
>>120
if (なんか結果ある) {
obj.result = なにか(null含む)
}
return obj;
ってことか
呼び出し側はそのobj.resultがundefinedなのかnullなのか判断する
123:デフォルトの名無しさん
16/05/27 18:10:16.56 fXm66YRc.net
なんだ表示だけか
それも結局Mapと列挙で済むからundefinedいらんな
124:デフォルトの名無しさん
16/05/27 18:11:25.03 ftcnTlL4.net
>>120
> サーバから返すけど、トラフィックの都合上昔ながらの電文でそれを解釈してるのは足回り。
サーバ側でコンテキストに応じたコードなりなんなりを生成して戻すべきだ
と俺は思う
125:デフォルトの名無しさん
16/05/27 18:16:51.38 fXm66YRc.net
>>120
>専用の型って言うけど、オブジェクトのメンバがnullかundefinedかはだいぶ違う。
でもそのビュワーの元データ受け取る時はundefinedなんて入れてないでしょ?
有効活用の事例としてはかなり微妙でしょ
わざわざ複雑な仕様にしてるように見えるもの
126:デフォルトの名無しさん
16/05/27 18:41:50.65 zWRALPjL.net
>>62
文ではないけど、LexicalDeclaration や Expression に存在しない区切り文字として都合が良かったからかな
127:デフォルトの名無しさん
16/05/27 18:48:41.37 fXm66YRc.net
>>125
ただのCの名残っしょ
128:デフォルトの名無しさん
16/05/27 18:53:39.13 5O2HSGrs.net
>>123
病院の回線ってそんなに贅沢に使えないんよ。
>>124
undefinedを入れないよ。
受け取るときにと言うより、受け取っていないから、その
129:キーがundefinedで、nullチェックではなくて、undefinedチェックしないとならん。 台帳表示でも何でも良いが、患者/日/項目のピンポイントで見た時に、値/失敗/結果無しが取れる必要があるってこと。 RDBで言うと、 ・行自体が存在しない ・行の中身がNULL ・行の中身に有意な値が入っている と似たようなもんだよ。
130:デフォルトの名無しさん
16/05/27 18:56:39.91 fXm66YRc.net
>>127
それって初期値のビューに対して、そのまま列挙して設定すればいいだけだと思うけど、
わざわざ未定義と判定する事で利便性が高まる事あるの?
131:デフォルトの名無しさん
16/05/27 19:02:06.07 5O2HSGrs.net
>>126
expression(opt)
を2つ以上取るからで、expressionとexpressionの区切りはセミコロンだからじゃねえの?
言語仕様に書いてあったと思うけど。
132:デフォルトの名無しさん
16/05/27 19:03:11.34 5O2HSGrs.net
>>128
そのまま列挙して設定したものを、
未定義と判定して「未検査」と表示する話をしてるんだが。
頭おかしいの?
133:デフォルトの名無しさん
16/05/27 19:04:16.73 fXm66YRc.net
もしかして、相手の出力データ型が不整合な事があり、
その型チェックをJS側がやってるってこと?ひえー
それならまあ必要といわれても仕方ないか
134:デフォルトの名無しさん
16/05/27 19:08:24.93 fXm66YRc.net
>>130
????
そのサービスから受け取ったrowにプロパティがなければ未検査なんでしょ?
なら普通に列挙していけば設定されないデータを、未定義か判定する必要ないっしょ?
それをわざわざなんで判定するの?
135:デフォルトの名無しさん
16/05/27 19:15:05.42 fXm66YRc.net
簡単にいうと、初期値のビュー項目を「未検査」にしておいて、
列挙の度に設定していけば済む話でしょ?
わざわざ複雑にしてるように見えるけど
136:デフォルトの名無しさん
16/05/27 19:18:13.93 IDoL/fjn.net
キチガイの共演
137:デフォルトの名無しさん
16/05/27 19:21:01.02 7C5pluWz.net
たぶん、
[{"検査項目":"視力","結果":1},{"検査項目":"聴力","結果":"100db"}]
っていうデータじゃなくて、
{"視力":1,"聴力":"100db"}
っていうデータなんじゃないかな(実際はjsonじゃないんだろうけどとりあえず分かりやすさの為ね)
だから
{"視力":1}
ってデータがあると、JavaScript側は
kensa.tyoryokuがundefinedになるから
表示する際はundefinedチェックをするっていいたいんじゃないかな?
※その場合俺ならinを使うかも
138:デフォルトの名無しさん
16/05/27 19:29:01.92 fXm66YRc.net
>>135
うん…その場合にundefinedのチェック付ける必要ないよねと
Viewを初期化し、各カラムに対応するView側項目を一個ずつ設定すれば、
無駄な処理もなくて効率いいでしょ?
139:デフォルトの名無しさん
16/05/27 19:37:17.42 fXm66YRc.net
イメージとしては、Object.assign({初期値},{取得値})とすれば十分じゃないか?
それを敢えてundefinedを確認するようにするのは、
わざわざ複雑にしてるように見えるけど
言ってる事が伝わった上で、何か自分がわかってない問題があるのか?
140:デフォルトの名無しさん
16/05/27 19:47:32.72 JIhds0M1.net
ちになみにxがundefinedかどうかを調べるベストな方法は
(x === void 0)でおk?
141:デフォルトの名無しさん
16/05/27 20:07:52.97 5O2HSGrs.net
>>135
あ、そうそう。
ただ、何人も並べたり、何日も並べたり、そういう事する。
inでも良いね。コスト低そうだし。
>>136
>>10、で既に俺言ってるけど。
その中で、ちゃんとオブジェクトをマージするか横着するかって話。
142:デフォルトの名無しさん
16/05/27 20:17:12.65 Dt+fFMyq.net
>>138
ReferenceError になるケースを除けばそう
143:デフォルトの名無しさん
16/05/27 20:27:35.45 fXm66YRc.net
>>139
いや別にオブジェクトのマージの話じゃないんだけど
まあどちらにしろ必要ないっしょ?
144:デフォルトの名無しさん
16/05/27 20:37:53.46 fXm66YRc.net
まあ正直納得いってないけど
実際使ってる実装があるならundefined値も必要ってことでいいやもう
あとで消化しよう
145:デフォルトの名無しさん
16/05/27 20:38:54.16 5O2HSGrs.net
>>141
どーしても必要ない事にしたいんだな。
手入力や、他システムから飛んでこられた時に、画面定義にもデータにもない、ってのはどう判断するのかね。nullを取りうる値を持ってんのに。
仕事として開発したこと無いんじゃねえの?
自分の無知が認められない人間とはみっともないもんだ。
146:デフォルトの名無しさん
16/05/27 20:39:37.88 5O2HSGrs.net
>>142
undefinedを値として必要としてる訳じゃねえよ。
お前マジで頭おかしいんじゃねえの?
147:デフォルトの名無しさん
16/05/27 20:45:22.04 Dt+fFMyq.net
ID:5O2HSGrs がいいたいのは>>106の事かね
> undefinedは、宣言すらされていないもの。
これがプロパティの事を指すなら in 演算子か Object#hasOwnProperty で解決できるという事を>>105でいってるんだろうけど、マージ云々は何を言いたいのかわからない
148:デフォルトの名無しさん
16/05/27 20:50:00.83 fXm66YRc.net
>>143-144
なぜ急に煽る?
まあ言わせてもらうけどね、本当に仕事でやってるならそんなクソ仕様「ありえない」だよ
「医療システム」用なら本来は別途に未検査を表す値を用意するべき内容
でも実装してるってならそうなんだろう
149:デフォルトの名無しさん
16/05/27 20:51:42.45 fXm66YRc.net
つか医療用でそんなLAMPみたいなシステム見たこと無いけどね…
150:デフォルトの名無しさん
16/05/27 20:56:48.42 5O2HSGrs.net
>>145
そうそう。
検査はしたけど、まだ結果は出てない、だとか、
例えば尿検査だと、尿少なすぎて検査結果出せませんでした、って結果はnullが入ってる。
検査進捗は別に持つから。
それを、テーブルやらグラフに出すときに、
患者一日、みたいなテーブルにガサッと載せたいのであれば、
先に
daily:{
koumokuA:"",
koumokuB:"",
}
みたいなオブジェクト作っといて、その上に、ret.filter(hasKeyIn(daily)).map(convToStr)したものをマージしちゃえば、表は簡単に書けるよねって話。
グラフならconvToScaleとか、何とでもなる。
151:デフォルトの名無しさん
16/05/27 21:00:52.88 5O2HSGrs.net
>>146
クソ仕様w
その、まぁ、未検査ではないんだが、結果の無い状態を現す値、がnullなんだけど。
何故別途必要なのか聞いてみたい。
さらに、その値が永劫、その値を返す検査が現れないか、と。
152:デフォルトの名無しさん
16/05/27 21:03:22.58 5O2HSGrs.net
>>147
LAMPと全然関係ないと思うが。
何社か医療渡ってるけど割と普通。
153:デフォルトの名無しさん
16/05/27 21:06:38.13 Dt+fFMyq.net
>>148
その実装はわかるけど、>>139の主張と結びつかない
>>136の「undefined と比較する必要ないよね、in 演算子で十分だよね」に対して>>139で「オブジェクトのマージ」を仄めかしてるよね
マージ処理なら in 演算子や hasOwnProperty で十分に実装できると思うけど
まあ、ディープマージでなければ Object.assign で十分ではあるけど
154:デフォルトの名無しさん
16/05/27 21:08:37.38 5O2HSGrs.net
>>151
物にもよるんよ。検査って。
2項目以上帰ってくるものの、片方だけ表させたいとか。
155:デフォルトの名無しさん
16/05/27 21:14:25.30 fXm66YRc.net
もう一回見てきたけど、
控えめに見てもundefinedの計算結果がNaNという部分は
「未定義値」という値を明確に容認してるよ
少なくともhasOwnPropertyだけで済むと言ってるのとは相容れないし
って…もう最初から何も問題なかったってことでいいや
面倒くせえわ
156:デフォルトの名無しさん
16/05/27 21:18:25.17 Dt+fFMyq.net
>>152
よくわからない
プロパティが存在しないことを判断する方法は大きく分けて3つある
1. obj.prop === undefined
2. !('prop' in obj)
3. !(obj.hasOwnPropery('prop'))
1. はあなたが推奨する方法だけど、obj.prop = undefined にも反応する
2. や 3. でも問題ないし、そっちの方が厳密
ここで 1. でなければマージできない理由は?
157:デフォルトの名無しさん
16/05/27 21:24:59.90 fXm66YRc.net
>>149
いやお前自分で
>そのまま列挙して設定したものを、
>未定義と判定して「未検査」と表示する話をしてるんだが。
>頭おかしいの?
と言ってるし
本来この未検査ってのはリクエストに対して、ちゃんと
158:定義されたデータを返す物だろ、 適当なWeb環境じゃないんだから、ビュー側で判別して表示とかありえないだろ つか取得時のコンテキストどうなってんだよ
159:デフォルトの名無しさん
16/05/27 21:26:20.32 Dt+fFMyq.net
ちなみに、Object.assign は [[GetOwnProperty]] でプロパティをマージするね
Polyfill も当然、Object#hasOwnPropery を使う
条件別マージだから Object.assign を流用できないとしても根幹となるマージ処理は同じで問題ないと思うんだよね
URLリンク(www.ecma-international.org)
160:デフォルトの名無しさん
16/05/27 21:30:34.70 5O2HSGrs.net
>>153
未定義じゃないんだって。さっきの例みたら分かるだろうけど、数値に変換できない検査結果はNaNにしてるの。
0/1で持ってて、インフルエンザの検査結果を何を血迷ったかグラフで見て、陰性と陽性がピコピコ蠢くグラフ見て楽しいか?
>>154
単に、「である」を否定を使って比較しない、ってコーディングルールの問題。
161:デフォルトの名無しさん
16/05/27 21:32:08.16 fXm66YRc.net
>>157
いやお前は最初の方で undefined との四則演算を容認してただろ
つまり値としての undefined が必要と説いてる
こっちはその値としてのundefinedがいらんとさんざんそれを否定してるわけ
162:デフォルトの名無しさん
16/05/27 21:34:19.11 5O2HSGrs.net
>>155
未定義は未検査、検査したけど何らかの結果で…って話だよ。
ある検体検査の中で、結果無しと返してるものに対して、電カル側が持ってる項目リストをピンポイントで開いてきたりするんだよ。
適当なWebじゃねえからいちいち処理してんじゃねえか。
163:デフォルトの名無しさん
16/05/27 21:35:39.58 5O2HSGrs.net
>>158
してないから。
四則演算するとこうなるから、四則演算が成り立たないものは正しく判定しなきゃね、そのためには、null,0,undefined,NaN全部扱い違うよねって言ってんじゃん。
164:デフォルトの名無しさん
16/05/27 21:44:03.54 h7QAH+sV.net
うるせえ消えろゴミ
165:デフォルトの名無しさん
16/05/27 21:44:10.18 Dt+fFMyq.net
>>157
> 単に、「である」を否定を使って比較しない、ってコーディングルールの問題。
そのコーディングルールの話を初めからいっておけばここまでこじれなかったんじゃないの?
端的に言ってあなたは説明が下手だと思う
自分の主張が伝わらなくて憤慨している様子は伝わってくるけど、原因のほとんどはあなたの中で当然と思うコーディングルールが皆に伝わってないことにあるんじゃないかな
>>10 で ! (否定)を使っているのが気になるけど、何かしらのあなたなりのコーディングルールがあるんだろうね
自分のコーディングルールが万人受けするとは限らないことは気に留めておくといいと思う
166:デフォルトの名無しさん
16/05/27 21:46:10.68 fXm66YRc.net
>>159
それって本来は未検査、結果待ち、結果無しって
別の値を定義して分けるべき内容でしょ?
悪いけど普通にクソ仕様だと思います
>>160
四則演算できると言ってる時点で値として認めてる事になるよね、違う?
167:デフォルトの名無しさん
16/05/27 21:48:08.24 UggnfNpm.net
undefined | null の等価が必要な糞みたいな
構文書いているんじゃないよ
はっきり言ってゴミだ
168:デフォルトの名無しさん
16/05/27 21:48:48.08 fXm66YRc.net
いや、違うかそうは言ってないんだな
もうちょっと待ってくれ
169:デフォルトの名無しさん
16/05/27 21:52:05.84 OuviwO3+.net
>>164がいきなり何を言ってるのか良くわからない件w
170:デフォルトの名無しさん
16/05/27 21:53:49.64 7C5pluWz.net
俺も>>164がなにをいってるかわからんwww
171:デフォルトの名無しさん
16/05/27 21:54:15.57 Y3oSSTyA.net
一人で10も20も連投するようなキチガイ説明云々以前に頭おかしいだろ
172:デフォルトの名無しさん
16/05/27 21:59:59.70 /K+aNa26.net
こういうやつって自分より明らかに上のヤツが面と向かって話きいてやるから出て来いっていうと出てこないんだよな
所詮その程度のカス
173:デフォルトの名無しさん
16/05/27 22:00:29.40 fXm66YRc.net
>>160
>nullも、undefinedも、NaNもある理由があってあるんだから。
>nullだけで良かったはずなんてアホみたいな事言われても困る。
これで適切に処理しましょうって事は、undefinedは使用禁止にしても良いでしょ?
別にhasOwnPropertyとかinで検査する事になるんだから
その事には同意してるの?
174:デフォルトの名無しさん
16/05/27 23:20:18.13 Ajerz5wW.net
>>43
おっと?ちょっと見立てが狂った。まあそれはさておき、回答ありがとう。
ちなみにリクエストある?
見立てが狂っていたので、俺が勝手に「君にとって有益」だと思っているのもゴミでしかないかもしれんし。
君はこの一連の会話には参加してないと思うけど、こいつらが駄目な点を指摘しろと言われればできるけど。
放置しておけば収まるかと思いきや、そういう感じでもないし。
ただ一番カスなのは、単発で煽っている奴だと思うが。
俺個人のスタンスは、この手の技術的応報は「気が済むまでやれ」だからね。
175:デフォルトの名無しさん
16/05/27 23:21:03.48 Dt+fFMyq.net
>>154のマップオブジェクト的なものの判定処理で最終的に行き着くのは 3. の hasOwnProperty
obj.prop = undefined とか、NaN の比較とか、定義順の列挙とか、諸々の問題は new Map で解消される
ID:5O2HSGrs が作る医療システムは構造が複雑なので単純なオブジェクトマップで対応するよりも、独自のインターフェースを作る方がいい
URLリンク(jsfiddle.net)
176:デフォルトの名無しさん
16/05/27 23:51:31.16 64E4c/Qq.net
Rのデータでも、null, NaN は理解できるけど、
undefined はプログラムのバグじゃないの?
それは、アカン
DBでも、null, undefined を加えて、4値論理だと、SQLが複雑化して、バグが増える
177:デフォルトの名無しさん
16/05/27 23:56:13.71 10EzBfKp.net
undefinedは同じ関数名でsetter/getterを作るときに使うな。
たとえば、obj.data('name') だと getter、
obj.data('name', 'hoge') だとsetter。
nullだけいいかと思うかもしれないけど、
obj.data('name', null)という風にnullを代入するsetterがあるかもしれないので
nullとundefinedは区別がついたほうがいい。
178:デフォルトの名無しさん
16/05/28 00:01:17.19 2CcTCqQn.net
>>171
一番のカスは質問でも回答でもねえ話を続ける場違いなカスに対し
「俺個人のスタンスは~」とかドヤ顔で言ってしまう脳味噌馬糞野郎だから安心して
179:デフォルトの名無しさん
16/05/28 00:03:07.76 lIlkJ1va.net
>>174
null と undefined は区別すべきだと思うけど、その場合はarguments.lengthで判定するのが普通
180:デフォルトの名無しさん
16/05/28 00:15:41.95 Q7pM0tvA.net
>>108おねがいします
181:デフォルトの名無しさん
16/05/28 00:17:23.16 U+yYkFDL.net
argumentsって展開できる?
rubyでa = [0, 1, 2]
def f(a, b, c); endに対して
f(*a)できるようなやつある?
もしくは
g = funciton () {/*arguments使う処理*/};
f = function () {/*g()にargumentsを渡す何らかの手段*/};
gを変更せずにf側の工夫だけで何とかなればいいんだけど
182:デフォルトの名無しさん
16/05/28 00:23:14.01 UVJrtMwg.net
>>177
次の開く前に前のcloseするとか
183:デフォルトの名無しさん
16/05/28 00:24:56.37 6huP5UCX.net
単発キチガイって >>79 なのか?
そうでなければここまで粘着する意味が分からん。
こいつらは質問にも答えた上で「技術的に」やり合ってるんだから、
文句言う必要も筋もないと思うが。
このスレがこの調子なのはいつものことだし。(少なくとも1年以上前からこう)
単発キチガイが「人格的な」批判だけをしている方がうざいし、
気に入らないのなら出ていけばいいだけだろ。
184:178
16/05/28 00:28:43.02 U+yYkFDL.net
>>178
自己レス
var g = function () {alert(arguments.length);};
//var f = function () {g(arguments);}; // ダメ
var f = function () {g.apply(this, arguments);}; // これでいい
f(0, 1, 2, 3);
185:デフォルトの名無しさん
16/05/28 00:45:35.77 F7SYakCj.net
>>172
ああーいい感じに簡潔にまとまってていいね
自分もMapと専用型派だから、そのまま便乗させてもらいたい
186:デフォルトの名無しさん
16/05/28 00:48:21.69 lIlkJ1va.net
>>178
Rubyは知らんが、Function#apply の事か?
187:デフォルトの名無しさん
16/05/28 00:50:15.08 F7SYakCj.net
>>177
俺なら考えるの面倒だからpostMessageでリサイズしちゃう
188:デフォルトの名無しさん
16/05/28 01:21:36.93 4RY8P4hk.net
>>162
10は、評価した結果falseでなければ、だよ。
undefinedである、もしくは、nullであれば、とはちと違う。
当然と思うコーディングルールというか、xxx==null、と書いておいて、実はnull以外にもundefinedも判定されます、という理屈の方が明らかに間違ってる。
>>163
だから、それは状態として持ってるの。
結果の話なんだよ。
状態と結果をごっちゃにしてはいかん。
結果がある見込みすら無い、少なくとも現時点ではまだ無いか有意では無い、有意な結果がある、のたった3つの、結果の値なの。
クソ仕様はお前の頭。
>>163
だから、してはいけないって言ってるんじゃん。
undefinedは状態で、nullは値なんだよ。
>>170
使用禁止って何だ?お前何言ってるか全く理解してないのか?
代入してないから、undefinedで、別にundefinedを突っ込んでる訳ではない。
>>178
apply
189:デフォルトの名無しさん
16/05/28 01:30:01.42 4RY8P4hk.net
>>172
確かに綺麗だと思う。
進捗と結果は分けた方が良いね。
進捗は、同じ検体でも検査によって異なるフェーズを辿るし、ひとつの検査で2つ以上の結果が帰ってきたり、2つ以上の検査でひとつの結果が帰ってくるので、そいつらは分割する必要がかる
190:デフォルトの名無しさん
16/05/28 02:00:19.58 F7SYakCj.net
>>185
未定義という概念だけが必要だから、jsのundefinedはいらないよね
言ってる意味わかる?
というか
>当然と思うコーディングルールというか、xxx==null、と書いておいて、実はnull以外にもundefinedも判定されます、という理屈の方が明らかに間違ってる。
ってfalsy判定するって言ってる人がそれ言う?酷すぎでしょ
>状態と結果をごっちゃにしてはいかん。
>結果がある見込みすら無い、少なくとも現時点ではまだ無いか有意では無い、有意な結果がある、のたった3つの、結果の値なの。
>クソ仕様はお前の頭。
いや糞仕様だよ普通に
つかなんでいちいち煽りを入れてくるかね…
俺は散々その未検査とかの状態をundefinedじゃなくて、
サービスの値として別で定義するべきと言ってるわけ
電カル云々ってのは結合って意味でしょ?
その結合するにしても、「undefinedを判定に使う」なんてのはやるべきじゃないでしょ?
アプリケーションレベルの話なのだから、きちんと「未検査」「なし」という値を定義すべきでしょ?
きちんとここまで理解できてる?
191:デフォルトの名無しさん
16/05/28 02:08:55.19 F7SYakCj.net
というか実際はどうかはしらないけどさ、
説明聞く限りだと、明らかにまともなシステムじゃないよ?
そんなのをお手本として語っちゃうのは駄目だと思うよ
192:デフォルトの名無しさん
16/05/28 02:42:07.52 F7SYakCj.net
もうこの話題は埒が明きそうにないからレスしないことにする
すみませんでした
193:デフォルトの名無しさん
16/05/28 03:04:53.76 4RY8P4hk.net
よほど指摘されたのが悔しかったんだなぁ。
らちがあかないおつむでご苦労なこった。
おつかれさん。
194:デフォルトの名無しさん
16/05/28 03:09:13.25 4RY8P4hk.net
undefinedという状態を使う、その行が無いという情報を使う、開始電文+データ長0+データ(ゼロバイトの)+終了電文。
全部、有意な「何もない」という情報なんだけどな。
0を発明する前の、指で数を数える原始人みたい。滑稽よね。
195:デフォルトの名無しさん
16/05/28 03:22:22.32 4RY8P4hk.net
jsのundefinedは要らない、もよくわからんな。オブジェクトとして存在していなくてもよい、予約語であれば良い、とでも言いたいんだろうか。
それとも、概念が必要ないんだろうか。
phpのissetも、perlのexistsも、Mの$Dも、はたまたcのプリプロセッサマクロのifdefも要らんというか、使いこなせないんだろうな。
196:デフォルトの名無しさん
16/05/28 03:43:50.37 /MxDZHtX.net
すでに「nullという値」という概念が存在してるんだから
「何もない」ものと区別する必要があるだろ。
197:デフォルトの名無しさん
16/05/28 04:51:05.16 BWGRJTpr.net
宇宙の真理として絶対に必要あるものでもないし、必要ないものでもない。
JS界では有意義に使い分けられてるのだからあってもいいと思う。
無い言語では別の機能で代替してそれは成り立ってるのだからなくてもいいと思う。
ただそれだけの無意味な議論。
198:デフォルトの名無しさん
16/05/28 05:52:30.30 /MxDZHtX.net
C言語なんかint型に数値以外入らないから
-1で代用したりでなんとかなってるしなw
ないならないで工夫次第で何とかなるが、
あれば楽になるっていうものなのだろう。
199:デフォルトの名無しさん
16/05/28 09:38:09.38 PPUGo99f.net
>>186
専門家でない自分が検査の詳細を知る由もないんだけど、必要であれば Interface を拡張するか、上位 Interface を作ればいい
例えば、検査フェーズ毎に結果が欲しかったら、上位に Interface MedicalCheckPhase を作る
URLリンク(jsfiddle.net)
患者毎に管理したければ更に上位に Interface を作ればいい
---
あなたの管理法が否定されているのは「調査予定の有無」「調査の実施状況」を一つのプロパティにまとめているから
switch (obj.prop) {
case undefined:
console.log('本件は調査予定がありません'); // プロパティが存在しない === 調査予定そのものがない
break;
case null:
console.log('本件は調査予定ですが、未調査です'); // プロパティが存在する === 調査予定がある / null === 未調査
break;
default:
// なにがしかの処理
}
これは「調査予定の有無」「調査の進捗状況」の2つを別々のプロパティで管理した方がいい
MedicalCheck でいう implement, progress がそれにあたる
200:デフォルトの名無しさん
16/05/28 09:48:10.32 UVJrtMwg.net
>>196
まったく同意ではあるんだけど
>>127で
> 病院の回線ってそんなに贅沢に使えないんよ。
ってあるから
やむをえずそうしたってことがあるのかねって思ってた
201:デフォルトの名無しさん
16/05/28 10:07:17.12 oSugN8gY.net
undefined は後で拡張し易くするためにある。
undefined 処理のロジックを入れておけば、新たなフィールドが追加されても
プログラムの修正はそのフィールドを直接扱う所だけで済む。
ゆえに、決して拡張されない領域内では undefined も不要になる
(null と undefined はむしろ全然関係ない話)
という理解でok?
202:デフォルトの名無しさん
16/05/28 10:17:45.97 PPUGo99f.net
>>185
> 10は、評価した結果falseでなければ、だよ。
>>10が>>157の "「である」を否定を使って比較しない" のコーディングルールと接触しないのか、って事
「hoge.a が truthy である」の否定を使って比較しているよね?
if 文は内部的に ToBoolean を通して true と比較するから「肯定の否定で比較」してる
if 文に限っては ! を使ってもいいルールなら if (!obj.hasOwnProperty('prop')) も許可しなければおかしい
あと、改めて考えると if (obj.hasOwnProperty('prop') === false) で肯定式のみのコーディングが成立するから hasOwnProperty を敬遠する理由がなくなるね
203:196
16/05/28 11:11:02.33 PPUGo99f.net
>>197
「実施の有無」はInterfaceの内部処理として隠れるから実際のところはそれ程コード量は増えないと思うんだよね
Interfaceを作ればその後のコード量が少なくなるから相殺されるか、逆にコード量が少なくなる場合もあると思う
このぐらいのコード量ならzlib圧縮してminifiedしたら十分に小さくなるし
204:デフォルトの名無しさん
16/05/28 11:20:22.38 6huP5UCX.net
おい、一応言っておくけど>>172も>>196もゴミだぞ。
それから>>189、お前は概ね間違ったことは言っていない。
お前ら、設計が出来るつもりなのなら、OPPのスレでも見てこい。
お前らにはいい教材になるかもしれん。
スレリンク(tech板)
205:デフォルトの名無しさん
16/05/28 12:01:27.82 oFxbpGnE.net
ここは質問スレッドであって議論スレじゃない
スレタイも読めない阿呆は出て行ってくれ
206:デフォルトの名無しさん
16/05/28 12:12:29.14 8NhNw/7c.net
>>201
しょーもない宣伝するな
しかもOPPて
207:デフォルトの名無しさん
16/05/28 13:07:01.36 6huP5UCX.net
単発キチガイ粘着乙
お前の回答はどれなのさ?
こいつらは回答してるし、質問は掃けているのだから、回答もしていない奴が口を挟む筋はないよ。
最近、お前みたいな「筋をわきまえないキチガイ」は2ch一般に増えたけどね。
208:デフォルトの名無しさん
16/05/28 13:29:38.68 GZb66p/J.net
場を弁えないキチガイの方がいらねえは
209:デフォルトの名無しさん
16/05/28 15:14:44.57 h5j9D0+l.net
>>195-200
すまんが、否定派は結局何が主張したいのかがわけわからん。
true/falseはいらない、1と0でいいと言ってるのと同じでしょ。
無くてもどうにかなるからという論を散々されても、
無いほうがいいということにはならないからね。
でも最初の話はそうじゃなかったでしょ?
JSにおいてnullとundefinedの関係及び立ち位置がやや難しいという話だったでしょ。
undefinedが要るか要らないかのような単純な話じゃないし、
今からJS2を作ろうというのでもないのだからそんな話をしても全く意味が無い。
それよりも関係及び立ち位置をここで、またこれから振り返って整理していこうというのが
正しい論議だと思うよ。
210:デフォルトの名無しさん
16/05/28 15:34:39.73 7z0JA/T2.net
const obj = {
age: 1,
f: () => {
console.log(this.age);
}
};
obj.f();
functionじゃなくて() =>で関数を書いた時にf()の中からageの値を取得する方法を教えてください
211:デフォルトの名無しさん
16/05/28 16:01:02.90 jKO2qa04.net
ソースコードはヒューマンリーダブルなので
自己満足で解決
212:デフォルトの名無しさん
16/05/28 16:28:58.11 6huP5UCX.net
>>207
その場合はfunctionと書く方が正解
213:196
16/05/28 16:47:58.29 PPUGo99f.net
>>206
一緒くたにされてるけど、別に undefined 不要は唱えていない
自分が主張したのはプロパティが存在しない事を確認する為に obj.prop === undefined を使うべきではない、という事と
ID:5O2HSGrs が考える医療システムコードの問題点だけ
null, undefined の違いは>>102で説明したことが全て
undefined 比較はほとんどの場合において不要
214:デフォルトの名無しさん
16/05/28 16:53:14.43 F7SYakCj.net
すまん
レスしないと行ったけどむかついたから言わせて
>>192
なぜそう煽るの?しかもそのレスってこっちの内容まともに読めてないよね?
まず未定義の判定操作がいらないとは言ってないよ
未定義を値として扱う事全般が駄目と言ってる
まず大前提として、こっちは端的にBoolean、Number、文字列やユーザー定義の列挙型と、
Nullable、Undefinable(?)な型はそれぞれ直交した概念ときちんと分けて考えてるわけ
(NaNはNumber型の値の一つとして見てるから、その点でそちらとは考えが違う)
で君の言ってるシステムは本来アプリケーションの1つの型(もちろん値が直交した型なら複数)として実装する物を
変数の未定義状態を表す型(Undefineable)に対し、
なぜかアプリケーション側の定義値の一つをぶっこんでいるでしょ?
それ普通に糞仕様だよねって話
理解できてる?
違うと言うならズレた煽りを入れずに、何が違うか具体的に言ってね?
215:196
16/05/28 17:01:36.87 PPUGo99f.net
>>207
obj.age で可能だけど、そこでアロー関数を使う意図が疑問
アロー関数はthis値を変化させないときに使うもの
216:196
16/05/28 17:22:13.49 PPUGo99f.net
>>211
お疲れ様
多分、彼( ID:4RY8P4hk )はあなたの意見を誤読してるだけだと思う
あなたの主張「>>196の状況でundefinedと比較する仕様(設計)がNG」
彼が解釈したあなたの主張「JSにundefinedは必要ない」
217:デフォルトの名無しさん
16/05/28 17:31:05.73 B2G67qEl.net
nullは確かにESの範囲から追い出すことは容易。
でもってアプリレベルでは共通するシンボルを使えばいいとも考えられる。
但し、1つ理由のためnullは存在価値がある。
それは偽性だということ。
では偽性のシンボルを自由に作れれば良いのかというとそれは微妙。
偽性な値というのは各型に1つくらいしかなく限られてるからこそ、
その性質を活用しやすいと言うこともある。
nullはだいたいオブジェクト型の唯一な犠牲の値としての立場を振るう。
よって、nullという存在を用意しておくのは、
シンプルや汎用的にし過ぎて利便性を犠牲にすることがない
良いバランスを狙えていると思う。
218:デフォルトの名無しさん
16/05/28 17:37:37.39 F7SYakCj.net
>>213
すまないありがとう、落ち着いたよ
まさにおっしゃるとおりなので、>>196に便乗させてもらいます
よく考えたらコードに一切落としてないから、人に強く言える立場でもないなあ…
219:デフォルトの名無しさん
16/05/28 18:51:22.49 bfGuDmoK.net
>>214がなぜ今そんなことを言い出したのか意味不明。
220:デフォルトの名無しさん
16/05/28 19:13:15.00 B2G67qEl.net
>>216がなぜそんなことを気にするのかが意味不明。
221:デフォルトの名無しさん
16/05/28 19:21:59.51 4RY8P4hk.net
>>211
ぶっこんでないから、undefinedなんだけど、まぁいいや。
定義されていない、を定義してるっておかしいと思わないのかな。
クソ仕様は、undefinedを代入してる、って誤解してるババロアと取り替えても支障のないレベルの脳ミソだと思うけどね。
222:デフォルトの名無しさん
16/05/28 19:59:16.01 1ecGmLwK.net
ババロアバカにするとか許さないんだけど
てめえのあたま埃でも入ってんじゃねえの
223:デフォルトの名無しさん
16/05/28 20:06:57.74 6huP5UCX.net
>>218
いや違うぞ。
>>211の主張は、「undefinedを代入するな」ではなく、「undefinedを有効値(意味のあるもの)として使うな」だ。
プログラミング言語上のundefinedに対し、アプリケーション上の意味をオーバーロードしていることを問題視している。
といってもこの表現では君には伝わらないだろう。そこでさらに平易に言い換えると、
例えば、Ruby等、undefinedがない言語で組んだ時、
アプリ上で「未実施」「成功」「失敗」「情報無し」の4値状態が必要であれば、
当然 true/false/nil では足りないから何らかの対策をするだろ。
それをJavaScript(4値状態可能)であったとしてもやれと言っている。
まあ君はNaNも導入しているので5値状態まで行けるのかもしれんが、どこまでそれやるの?という話になる。
224:デフォルトの名無しさん
16/05/28 20:14:47.49 19MLvfJY.net
よかったこんな阿呆が身近にいなくて
225:デフォルトの名無しさん
16/05/28 21:13:45.88 /MxDZHtX.net
Scalaのnull/Nothing/Nil/Noneはやりすぎなのか?
URLリンク(bleis-tift.hatenablog.com)
似たような意味でも違う概念なら違うものに割り当てるべきだよ。
226:デフォルトの名無しさん
16/05/28 21:22:05.08 ynWa4gys.net
undefinedはcのdeleteと同じと思った方がいい
変数の初期化をしたいけど、いれる物がない時はnullを入れるべき
undefinedを入れるのは間違っている
227:デフォルトの名無しさん
16/05/28 21:34:27.07 ubVCvz+a.net
>>223
お願いだから書き込むのをもうやめてくれ
何いきなり「cのdelete」とか言い出しちゃってるの?
228:デフォルトの名無しさん
16/05/28 21:42:53.12 ynWa4gys.net
>>224
まだ一回しか書き込んでいない
229:デフォルトの名無しさん
16/05/28 21:43:39.30 LvedKHwv.net
>>223
俺c/c++メインだが、その例えは意味がわからん
230:デフォルトの名無しさん
16/05/28 21:44:56.20 ynWa4gys.net
俺がいいたいのは、undefinedをフラグや何もないという意味を表す物として使うなと言う事
c言語で、フラグの為にnullを代入することはあっても、deleteで消すことはないだろ?
231:デフォルトの名無しさん
16/05/28 21:50:45.87 LvedKHwv.net
>>227
言いたいことはわかったけど、それと例えが全くマッチしてない気が…
232:デフォルトの名無しさん
16/05/28 21:51:00.22 ubVCvz+a.net
cでnullとかdeleteとかお前頭の病気か?
233:デフォルトの名無しさん
16/05/28 21:52:08.66 UVJrtMwg.net
周回遅れ感になんかほっこりしたw
234:デフォルトの名無しさん
16/05/28 22:55:04.19 4RY8P4hk.net
>>227
何もない事を現すものに、何かを使うと、それは、「何もない事を現すもの」という実体になっちゃうでしょ。
1つ2つの欠けうるフィールドにであれば意味はあるだろうけど、
数千の項目のうち必要なものだけが帰ってくるというものに対して、
この項目は今回入ってません、って通信する意味はあるのかな。
235:デフォルトの名無しさん
16/05/28 23:20:30.96 6huP5UCX.net
>>231
とりあえずデータ取得はJSONでサーバからもらって、フォーマットは>>135みたいなのなんだろ?
つまりネットワークバンド幅をケチるためにundefinedは最初から抜けていると。
そこまではその実装で正しいと思うぞ。問題はその先だ。
あとついでに答えも言っておくと、どっちの実装でも一長一短あるんだよ。
だからそれぞれの利害得失を分かった上でその実装にしているのならそれでいいんだよ。(これを設計という)
ただ、お前らどちらも「俺の方が正しい」と思っているだけで、
相手側の実装も含めての利害得失をさらっと言えないだろ。
それじゃ駄目なんだな。
なお、俺ならお前らの中間の実装にする。でも君達はこれも想像できないだろ?
君達には実装時のオプションが足りてない。
まあ、でもこういう風に議論することは多分お互いのためになるだろうから、頑張れ。
236:デフォルトの名無しさん
16/05/28 23:31:47.42 viYscYES.net
>>232
滑稽やなこいつw
237:デフォルトの名無しさん
16/05/29 00:46:26.74 0W+JhSU+.net
>>232
ネットワークからもらうのは通信電文だよ。
通信電文自体イメージできてないかもしれないけど。
意味のない中間の実装とか要らないの。
相手側の実装、結果の値の入っていないものに、わざわざ結果が入ってませんと入れていく、に文句つけるとすればただ一つで、
結果が入っていないことが問題になるのは、その結果を使用しようとするときで、電文をパースしてオブジェクトに乗せた段階では、
どれに結果が入っていて欲しいか、なんて事は把握してないんだよ。
だから、足回りが結果が入ってなかったと設定する事はできないし、
「知りうるすべてのフィールドに対して、これは入っていなかった」って設定する事も無駄すぎるの。
知りうるすべてのフィールド、も保守管理していくとなると、永遠に保守を続ける必要が発生するよね。
そうなると、話はシンプルで、貰っていない≒入っていない、の構造を維持するのが一番よね。
あと、検査結果に対して、(今のところ)結果無しを何か定数(文字列でも)で持つのはよろしくない。
その後、新しい検査結果として、同じ、またはとてもよく似たものが入ってきた時に、それと鑑別するのが不可能だったり後からデータコンバートが必要だったり、エスケープしていく必要があるよね。
であれば、データを解釈した結果未来永劫に渡って帰ってくる可能性の無い、かつどこにでもある定数としてのnullを使うべきでだよね。
進捗自体は、別のデータが貰えてるので、そいつでフィルタすれば良い。
238:デフォルトの名無しさん
16/05/29 02:13:36.39 JYpYJI9w.net
質問スレとして成り立ってねえ
239:デフォルトの名無しさん
16/05/29 02:33:08.25 qvzR6wN9.net
>>234
おいおい俺にレスを付けるかw
やり合ってるのは俺じゃないぜ。まあ、安価自体には大して意味がないかもしれんが。
> 無駄すぎる
> 貰っていない≒入っていない、の構造を維持するのが一番よね。
これらについては正解。相手側の欠点と、自分側の利点は言えた。
では相手側の利点と自分側の欠点は言えるか?つまり相手側が何故相手側の主張をするかだ。
まあこれは言えなければ相手側に言ってもらえばいいんだが。
そうすればお前らお互いに知恵を出し合ってブレスト出来て前に進めるだろ。
そうやって自分の中の実装オプションを増やしていけば、
仕様を聞いた瞬間に複数の実装が思い浮かんで選択できるようになる。
下らない文法争いからはいい加減に卒業した方がいい。あんな事をやっていても全く上達しない。
240:デフォルトの名無しさん
16/05/29 02:33:34.96 qvzR6wN9.net
nullアサインの理由付けはよく分からない。
というか正直、こじつけただけのように見える。ただ、それはそれでいいんだよ。
君の実装は軽量高速動作向きだ。
だからプリミティブで対応するというポリシーなら、それはありなんだよ。
問題はそれを分かってやっているのか?ということなんだよ。
あと、話を大きく考えすぎだ。身近な成功例があるのだから、それを参考にすればいい。例えば、
000: 未実施
100: 実施中、結果待ち
200: 結果良好、終了
303: 再検査中
304: 再検査終了、問題なし
404: 結果不良
とかな。何の事かは分かるだろ?それを参考に決めうちしたとして、ほぼ全部設定できるはずだ。
どうしても駄目なら 600: その他、で直接stringを指定すれば済むが、
まあこれは分かると思うが避けられれば避けた方がいいだろう。
いずれにしても、この方式は拡張するにしても容易だ。
241:デフォルトの名無しさん
16/05/29 02:34:17.67 qvzR6wN9.net
分かっていると思うが俺はあっちの>>1だ。
スレリンク(tech板)
お前らが延々と文法の話しかできない事に辟易していた。
この手のプログラミングの本質についての話なら、当然歓迎する。
だからあっちで勝手にやってくれても構わないし、今回みたいに収拾つかない場合には助け船も出す。
とはいえ、今回は君らだけでもっと走れるはずだ。
上記のように、反対側サイドは相手側に出してもらってもいいのだから。一人で走りきる必要はない。
だからまあ、今話している連中で行けるところまで行ってみるべきだね。
場所は上記の通り、移動したければどうぞだが、個人的にはここでやって構わないと思うけどね。
役に立たないレスしかしないゴミは無視でいい。
君らがガンガン回答しているのだから、君らが牛耳るべきなんだよ。
回答者のレベルが分かるのは質問者にとっても有益だ。
質問も全部掃けている。
質問と混線してやりにくいということになったら、その時にスレ分割を考えればいいだけのことだ。
なお、ここは質問スレなのだから、質問者は議論の空気を読まずにいきなり質問を落としていい。
それで議論がぶった切られるのが嫌なら、議論は別の場所でやれってことでしかない。
242:デフォルトの名無しさん
16/05/29 04:35:50.01 qTFaTssR.net
>>218
もうお前が型の基本も読解力もなく煽ってるだけの存在ってのは理解したから良いよ
結局何も答えられずに煽るだけだったね
243:デフォルトの名無しさん
16/05/29 04:45:22.18 qTFaTssR.net
>>232
設計がUndefined許容になる事を秤にかけたら遥かに前者のがいいっしょ
利得がって言ってる拡張は、プロトコル上は1レスポンス1バイト〜高々数十バイト(項目数)程度の差で済む
ISDN相手じゃあるまいし、中は同軸使ってた頃のシステムでも1Mぐらいはあるから、そんなの問題にならないよ
単に古いからなし崩し的に使ってるだけだと思うよ
で、それをかの人はなぜか良設計だと思い込んでると
まあもうどうでも良いけどね、本人最後まで理解しなかったし
244:デフォルトの名無しさん
16/05/29 04:47:37.88 qTFaTssR.net
すまん、前者の方が抜けてたね
正しくは、プロトコルを拡張するのと、設計がUndefined許容になる事を秤にかけたら
245:デフォルトの名無しさん
16/05/29 05:02:06.30 9ISBvfBu.net
よーわからんが思考順序がおかしい奴が結構いるみたいだな
246:デフォルトの名無しさん
16/05/29 05:07:22.44 qTFaTssR.net
>>234
>知りうるすべてのフィールド、も保守管理していくとなると、永遠に保守を続ける必要が発生するよね。
全部フィールドを保守するのが無駄と言ってるけど、
ビュー側で分けてるんだから同じ事だよ?
なぜか保守してないことになってるけど
247:デフォルトの名無しさん
16/05/29 05:22:17.03 qTFaTssR.net
これ極端なこと言えば、そもそも専用のはずのプロトコルとサービスを、
末端でそれぞれ対応してるモジュール同士が理解できればそれで良いっていう体の
オブジェクト送信と保存のための汎用ミドルウェア扱いしかしてないって事だよね
そして結果と言う名の値にごちゃごちゃデータ入れてるから、
各値を読めない末端は何のメタ情報も取得できない
それで保守しにくいって当たり前じゃんよ、何も考えずに末端で適当に実装してるんだから
どういう体系なのかは知らんが、正直関わりたくない案件です
248:デフォルトの名無しさん
16/05/29 05:24:34.66 uH1/jPAH.net
ネットワークバンド幅をケチるなら
バイナリのプロトコルがいいよ。
たとえばJSONをgzip圧縮するとかNE!
249:デフォルトの名無しさん
16/05/29 05:32:26.63 9ISBvfBu.net
>>234の論だと
貰った明示的な空値と貰ってない暗黙的な空値を区別するために
両方の存在が必要ということだな
250:デフォルトの名無しさん
16/05/29 06:24:18.47 0W+JhSU+.net
なんのこっちゃ。
空論だらけで笑えるわ。
undefined許容と言うか、お前らの見識狭すぎるだろ。
ざっくり白本から引用すると
URLリンク(shirobon.net)
こうあるわけだ。
中見るとわかるけど、ひとつの検体でも、凄まじく別れるわけ。
251:デフォルトの名無しさん
16/05/29 08:06:23.01 7TpVCW1+.net
>>247
JavaScriptスレの住人に医療知識を求める方がおかしいと思うけど、あなたは ID:4RY8P4hk ?
多態性が必要ならオブジェクト指向をすればいい
一つのオブジェクトでプロパティチェックを一つ一つやって確認していく方法は極めて無駄
252:デフォルトの名無しさん
16/05/29 09:08:45.76 0W+JhSU+.net
>>248
だから、知らないなら知らないで良いんだよ。
しったかぶって、この設計で大丈夫、クラスやら、インターフェイスでガッチガチに固めれば良い、なんて発想されても、それじゃ不便なんだよねえ、って話するしか無いじゃん。
DBにも実際にスキーマフリーなkvsのような物に入ってるんだし。
何を持っているかは、もの次第。
その上で、持っていないものに関しては、定義しない、
持っているけど、中身の入っていないものは、定義して中身にnullを入れる。
そんなけ。
253:デフォルトの名無しさん
16/05/29 09:18:33.91 cJcPZgXw.net
>>249
> 中身の入っていないものは、定義して中身にnullを入れる
お前は雑巾で顔を拭くのか?
254:デフォルトの名無しさん
16/05/29 09:43:12.25 BS/+K0m3.net
あるテキスト全体を、markdown形式の改行に変えたい(行末に空白を2つ入れたい)んですが、書き方を教えて下さい。
iPhoneのtextwellで使用したいです。
255:デフォルトの名無しさん
16/05/29 10:11:38.70 pBCN0dYY.net
nullとundefinedのような二種類の形式が有るのは、他にどんな言語が有りますか?
256:デフォルトの名無しさん
16/05/29 10:29:29.44 0W+JhSU+.net
>>250
喩えが下手すぎて何も伝わらん。。
>>251
(""+str).replace(/(\r|\n|\r\n)/g," $1")
でいいんじゃないの?
>>252
php(isset)
perl(exists)
なんかじゃないの?メジャーどころでは。
定義せずにいきなり代入できる言語にはたいていあると思うよ。
257:デフォルトの名無しさん
16/05/29 12:24:19.31 7TpVCW1+.net
>>251
String(string).replace(/(?=\r\n|[\n\r])/g, ' ');
>>253
そのコードは \r\n にマッチしない
\r\n に対して2回置換処理を行う
258:デフォルトの名無しさん
16/05/29 12:26:53.13 GuNB7bh5.net
池沼が正しいか正しくないかの話(議論ですらない)をしたところでどこにも何の影響も残らないのに
貴重な時間を数日間も潰してよく続けられるものだと思う
よほど時間の使い方を学習せずに育ったか、毎日が日曜日で暇なのだろうな
259:デフォルトの名無しさん
16/05/29 12:35:23.09 0W+JhSU+.net
>>254
ありゃ、そうだっけ。
貪欲だと思ってた。
\r\n|\r\|\nならいいっぽいな。勉強になったわ、ありがとう。
>>255
だって先月ブッチギリでサブロクをオーバーして強制休暇で暇なんだもの。
260:デフォルトの名無しさん
16/05/29 12:36:31.11 7TpVCW1+.net
>>249
何がどう不便なのか全く伝わってこない
悪いけど、情報を小出しにして情報アドバンテージを得ようとしているように見える
「持っているもの」や「持っていないもの」のような抽象的な概念で誤魔化さないで全体の処理の流れを具体的に説明したら?
DBからそのまま二次元配列に落とし込む訳じゃないよね
データベースから引き出しすデータのフォーマットがどのようなものなの
DBから引き出したデータをJavaScript出扱いやすいように構造化する処理があるはず
オブジェクト思考を推奨しつるのは後者の処理であって元のデータ構造がどうなっているかは関係ない
261:デフォルトの名無しさん
16/05/29 12:43:40.90 qvzR6wN9.net
>>240-241
> プロトコルを拡張するのと、設計がUndefined許容になる事を秤にかけたら
> 遥かに前者のがいいっしょ
プログラミング的には、はいその通り。
> ビュー側で分けてるんだから同じ事だよ?
はいその通り。どこに書くかだけでコード量自体は大して変わらない。
だったら一箇所に纏めて書いている方が保守しやすいというのも事実。
> 汎用ミドルウェア扱いしかしてない
はいその通り。
というわけでまあ、プログラミング一般論として言うなら、君の実装の方がかなり「マシ」だし、「マトモ」だと思う。
言っていることも至極まともだ。プログラミングの腕前も、君の方が上だろう。
ただ、多分あの「軽量実装」が「仕様」なんだよ。
262:デフォルトの名無しさん
16/05/29 12:44:04.66 qvzR6wN9.net
君が言っているのはかなりきっちりしたシステムだ。
低速だが安定堅牢に動作する。何か問題があればたちどころに検出できる、まさにエンタープライズソリューション。
しかし、悪く言えばSEが余分な機能をくっつけまくった、顧客にとっては使わない機能の固まりだ。
あれでどうにかなっているんだから、ビュワー自体は簡易的なもので、本体はDBだ。
これまで紙でやっていた物を、電子化することによって閲覧、検索をサクッと出来るようにしたい。
でも、それだけでいいんだよ。DBが壊れていたり、ネットワークが潰れたら、最悪紙で対応できる。
ただ、そういう非常時じゃない時は、サクサク検索閲覧したい、多分それだけ。
だからビューワーはつべこべ言わず、今あるDBにアクセスして、内容をサクッと表示できればいいんだよ。
そこであれこれ検出する必要はなく、DBアクセスして見えた内容を表示できればいい。
だからビューワーのためにプロトコルを拡張するなんてあり得ない。
今あるDBのデータを再構築とかもあり得ない。
今動いているシステムの上に「きっちり居候しろ」、ということなんだと思うよ。
DBも多分デタラメ投げ込み方式だが、それもありだろう。
もちろんITソリューションとしてはやや問題があるが、
現実的には、今時の医者は患者の顔もろくに見ずパソコン操作に忙しいと聞く。
本来は彼等の負担を減らす為の「ソリューション」が負担を増やしている、本末転倒な事態になっている。
だからIT側の都合ではなく、医療実務者の都合側に100%振ったら、多分彼が言っている感じになる。
登録だけはしておくから、あとはよろしく。検索と閲覧がサクサクできればいいです、ってところだろう。
(この「登録」ってのは整合性がある状態ではなく、情報漏れがない状態で登録されているだけ。
つまり検査によってnullの意味が異なったりもするが、それはIT側で辞書引きして対応しろということ)
263:デフォルトの名無しさん
16/05/29 12:44:27.00 qvzR6wN9.net
とはいえ
> 設計がUndefined許容
これは大問題なのだが、NaNをbool値扱いしていることからも分かるように、彼はこれを理解していない。
さてこれについては、グローバルは禁止(キリッみたいなのは入門書でも触れている=全員一度は聞いたことがあるとして、
undefinedについては所詮入門書を書いている奴らはその程度だということなのか、
あるいはそもそもundefinedがあるようなゆるふわ言語で業務システムを構築することがこれまで無かったのか、
少なくとも(キリッとかやっている奴は見たことがないから、初心者が知る範囲にはそういう情報が無いのだろう。
てな感じか。では続きをどうぞ。
264:デフォルトの名無しさん
16/05/29 12:47:26.66 7TpVCW1+.net
>>256
JavaScriptは貪欲(最長一致)だけど、貪欲でなくても結果は同じ
265:デフォルトの名無しさん
16/05/29 13:01:45.99 0W+JhSU+.net
>>257
なんでそんなに突っかかるのかわからん。
アドバンテージもなにも、現にお前が無知なだけだし、だからといって臨床検査の事細かく説明したところで理解できんの?
お前が、卑怯な手段で叩かれてると思ってるのは、全部お前が単純に馬鹿で無知で加えて想像力と謙虚さを持ってない故の卑屈なコンプレックスだわ。
ほぼそのまま二次元どころか多次元配列に落とすよ。
誰もが受けたことあってわかりやすいところで説明すると、眼科のあの気球見るオートレフだと、球面度数と、乱視度数と乱視軸度の3項目が一発で出て、そいつらは同一時刻の検査結果としてひとつの結果にまとまってるもんなんだが、
左右の目を必ず測るとは決まってない。
右、左自体の結果が入ってない事がありうる。
ところが、左右測ったけど右だけ測れなかった、それは、測ったって事実は残さないとならん。
だが、右目のなんとか、が測れなかったわけではなく、右目の結果自体がまとめて、無い。
そしたら、右目の結果には詳細を入れようが無いわな。測れなかったんだから、何が測れなかったと言うわけではなく、右目が測れなかったという事実しか無い。
また、再トライして測れない、というわけでも無いので、端的に失敗で終わらせるわけにも行かん。
それは、測ったけど今のところまだ結果は入っていない、って状態でしかない。
それを、オートレフ計測失敗、と個別の定義値を持って管理したらあの項目数でどうなるんよ。
ホルター心電図なんかもっとめんどくさい。24時間の時系列データひとつながりが端子数ある。それが一まとまりのデータ。
266:デフォルトの名無しさん
16/05/29 13:07:42.96 0W+JhSU+.net
>>259
ダメ。DBが最悪潰れていたら、は許容され得ない。
電子カルテ三原則というものがあって、真正性、保存性、見読性ってみっつの要素が保てていないものは、診療録、照射録たりえない。
なので、どんな入れ方をされても、後からなんとでもなるようなゆるふわ仕様で、それを確実に歴を含めて保存してる。
都合が悪くなったから、この定数はこの日から別の意味です、は使えない。
組み込みの型で、あとからかぶり得ない値である必要と、無いものは無い、無かったと勝手に書かないという原則もある。
測ってもない熱が、カルテに「熱無し」って書かれても困るっしょ。
267:デフォルトの名無しさん
16/05/29 13:24:29.14 xy9Dpqm6.net
かわいそうにこういうこといいあえる相手いないんだね
こんな頭おかしいのがまともな職場にいられるわけないから当然か
268:デフォルトの名無しさん
16/05/29 13:30:53.09 KqqGQ0oS.net
ちょっと勉強でvue-router触ってみてるんだけど
(※なおクライアント側でのルーティングフレームワークは初めて)
/fooと/foo/barと/foo/bar/baz
みたいなルーティング定義できるけど
これってよくやるもの?
これすると、<img src="../hoge.jpg">とかの相対指定がおかしくなる……
(1)mod_rewriteで弄る?
(2)それとも<img src="/img/hoge.jpg">みたいに相対指定やめる?
(3)そもそも複数階層を同一ページみたいなことはしない?
よろしくお願いします
269:265
16/05/29 13:32:19.27 KqqGQ0oS.net
補足です
/fooも/foo/barも/foo/bar/bazも同じhtmlファイル
で、/foo/bar/bazあたりでリロードしたときに
<img src="../hoge.jpg">がちゃんと出なくなるという現象……
270:デフォルトの名無しさん
16/05/29 13:33:37.15 0W+JhSU+.net
なんのこっちゃ…。言い合わんでも、共通認識だよ。
271:デフォルトの名無しさん
16/05/29 13:35:41.41 0W+JhSU+.net
>>265
どーしても同一ページを別の階層にルーティングしたかったら、
なんか画像パス返すcomputed定義したmixinでも用意したら?
でも何でも別の階層にルーティングしたいの?
272:デフォルトの名無しさん
16/05/29 13:45:07.54 qvzR6wN9.net
>>263
いや、そういう話をしているわけではない。
というか、「電子カルテ」と「プログラム構造」の仕様は別物だから、別に考えてくれ。
多分な、君が担当している案件は、医者達は一旦「紙」に記録して、
それをおそらく別の人がDBに再入力しているだろ?
この場合は電子システム以外でのバックアップを持っていることになる。
また、別の人が入力する時に「明らかな間違い」はそこで検出される。それを言っている。
(これが「電子カルテ」として容認されるかどうかは俺は知らない)
この場合は君の実装でも悪くはないんだよ。
ただ、マスターがDBで、医者が直接入力、失われた場合に代替手段は無いというのであれば、
君の実装(というよりそのシステム全体)が駄目だろ、ってことになる。
(問題発生時の検出機構がないので危険)
とはいえ、常に全員が最新鋭の完璧システムを使えるわけもないのだから、
その場合は、それは懸案事項として挙がっており、予算が付けば改修されますって事なんだとは思うが。
273:デフォルトの名無しさん
16/05/29 15:26:36.97 0W+JhSU+.net
>>269
しないよ。紙に。
紙に書いたものも正としたら、診療録が2倍になるでしょ。
そしたら、2倍の物を五年間保存するはめになる。
入力の間違いは、間違いとして明確に訂正をもって再度、訂正前の情報と共に保存するんだよ。
失われた場合に代替手段が無いって、そんなもの紙カルテでも火事で燃えたり、津波で流されたら終わりだよ。
だから、寸分のコピー劣化もなく複製できて、情報量が増えても物理的な量が増えない、デジタルな情報としてバックアップを他拠点に持っていける形にするし、それを保存するんだよ。
問題発生時の検出機構はあるよ。真正性の担保がそのもの。
とはいえ、それは医師がそう書いたならそれが正しいんだけど、なんにせよすべてをジャーナルとして保存してあるから、追えるし復元は出来る。
…おまえ業務系の経験無いんだろ。
274:デフォルトの名無しさん
16/05/29 15:59:45.12 pBCN0dYY.net
あるソースを見ていたら、
setTimeout(func(), 0);
という記述を見たのですが、どういう効果がありますか?
func();
とやるとの同じだと思うのですが何か違うのでしょうか?
275:デフォルトの名無しさん
16/05/29 16:13:27.53 KqqGQ0oS.net
>>268
回答ありがとう
こうしたいっていう要件があるわけじゃなく
URLリンク(router.vuejs.org)
の説明で疑問に思った次第
ニュアンス的には
複数階層を同一ページなんてしない
→どうしてもするならパス構築するなんらかの仕組み(vueならv-attrあたり)
って感じなのかな
276:デフォルトの名無しさん
16/05/29 16:19:19.34 uH1/jPAH.net
>>271
func()だとその場で実行される。
setTimeout(func(), 0)だと関数(正確にはクリックなどの
イベントハンドラ)が終わってから実行される。
setTimeoutを使った場合、関数が終わった後にすぐに実行されるわけじゃなくて、
暇になってから実行される。暇っていうのはブラウザがやれなければいけない
レンダリングなどの処理を行って何もしなくなってからということ。
だから
・クリックなどのイベント → func()実行 → イベントハンドラ終了
・クリックなどのイベント → イベントハンドラ終了 → ブラウザの処理 → func() 実行
という違いがある。
277:デフォルトの名無しさん
16/05/29 17:29:54.45 s6IpqRgC.net
>>270
内容の真偽はともかく、そろそろ注意した方がいいんじゃね?
業務知識をこんなところに書くとか、社会人としての人間性を疑われてもおかしくないぞ。
278:デフォルトの名無しさん
16/05/29 17:34:17.73 G8EDN3vd.net
>>262
それなりのブライドはあるけれども、散々他人をこき下ろしたあなたに謙虚さを持ってないとはいわれたくないなあ
あなたには謙虚さがかけらも感じられない
> ところが、左右測ったけど右だけ測れなかった、それは、測ったって事実は残さないとならん。
> だが、右目のなんとか、が測れなかったわけではなく、右目の結果自体がまとめて、無い。
「右だけ測れなかった」としておきながら、「測れなかったわけではなく、右目の結果自体がまとめて、無い」は意味不明
「測れなかった原因」がさっぱり書いてないのに「再トライして測れない、というわけでも無い」の根拠はどこにあるのか
「測らなかった」ならともかく、「図れなかった」のなら「測れなかった原因」を記録に残さないと同じ失敗の繰り返しになる
右目の計測結果については「計測不能」として備考欄にでも「測れなかった原因」を記録に残しておくのが妥当
というか、いきなりこの人は何を言い出してるんだろうね
null云々よりもundefinedの扱いに非難が集中していたと思うけど
279:デフォルトの名無しさん
16/05/29 17:38:12.13 G8EDN3vd.net
>>271
func() の返り値となる関数オブジェクトが非同期に実行される
func() の返り値が関数オブジェクトではないのなら setTimeout は期待通りに動作しない
280:デフォルトの名無しさん
16/05/29 18:17:47.96 eYOjmyco.net
const o = document.getElementById('hoge');
こういう風にdomをconst�
281:ナ変数に入れても大丈夫ですか? o.innerHTMLを書き換えたりoの中の子要素が変化してもエラーにならないんですが・・・ constって書き換えるとエラーになるんじゃなかったんですかね?
282:デフォルトの名無しさん
16/05/29 18:27:43.87 uH1/jPAH.net
>>277
書き換え不可能なCD-Rに、URLリンク(www.google.co.jp) ってリンクが書いてあっても
それをクリックするたびに、表示される内容は変わるだろ?
それと一緒
283:デフォルトの名無しさん
16/05/29 19:30:52.11 rcX9jYV5.net
変数に入れるというより、値への名付け。(共有渡し)
そのひも付けが固定化されるというだけで値の変化は関与しない。
284:デフォルトの名無しさん
16/05/29 20:10:17.52 roFUTjZ8.net
結局undefined使うのはアリ?ナシ?
代入とか比較するのはダメ?
プロパティの有無を見るにはinやhasOwnPropertyで十分?
285:デフォルトの名無しさん
16/05/29 20:11:28.98 qvzR6wN9.net
>>270
言っていることは分かるのだけど、それは常識的なことであって、ああそうですか程度でしかない。
そこではなくて、他の人が批判しているのは、(ガチの本番系で)君の実装は駄目だろ、ということなんだよ。
俺は実装を聞いて、多分本番系ではなくて傍系だと思った。だからそれもありだというスタンスだったんだ。
(出先で確認するためとか、或いは他システムで代替も出来る状態)
ただ、それが本当にガチの本番系なのなら、それはマジであり得ないくらい酷い仕様だよ。
だってプリミティブに状態を割り当てるとか、せいぜい5~6個しか無いんだから、将来的にヤバイでしょ。
(というか最初から無理だと思うが、、、)
おそらくやたらある状態をstringでそのまま持っているっぽいけど、それだと検索もしづらい。
タグなりコードなりを割り付けておかないと、書き方の揺らぎだけで検索から落ちてしまう。
undefinedを残しても特段メリットもなく、デバッグがしづらくなるだけ。NaNについても同様。
だから本当に君が君の案件の状況を理解できていて、プログラミングの腕前もあるのなら、その態度はないんだよ。
最初から組めるのなら、ど素人でもしない程の酷い実装になっている。(というか逆にそれで組む方が難しい)
多分、これまで少しずつシステムを組み上げてきて、キメラ状態になっている物をそのまま使っているのだと思う。
一言で言うと、
> 単に古いからなし崩し的に使ってるだけだと思うよ (>>240)
が多分当たってる。
冷静に考えてみればいい。今君はその案件の仕様を知っている。
そこでシステム刷新の機会があり、予算が十分付いたとして、今の実装を選ぶかい?