kmizuさんの「Objective-Cで不満に思うこと」に対する反応

多分他にもいっぱいあったのだと思うけど、全然拾い切れなくて、自分のTLを中心に入れましたが、入れたいもの(もしくははずしたいもの)があったらどんどん勝手に編集してください
23
kmizu @kmizu

@akisutesama うちのアプリだと、iPadアプリ内のストレージにそれなりに意味のあるデータを一定期間抱えなければいけないので、データがおかしな状態になるのは自分(たち)の開発シーンでは困ります。だから、サーバ側でなくてもやっぱり困るんです。

2012-09-14 14:48:44
jijixi @jijixi_org

静的型付け言語ではNullアクセスで例外が上がってもいいけど、動的型付け言語であるObjective-Cではそうならない方が便利な場面が多いと思う。感覚的なところだから具体的なシチェーションとか説明できないけど。

2012-09-14 14:49:04
jijixi @jijixi_org

というか、リファレンスカウント環境のObjective-Cでは基本的に例外はメモリリークの元でしかないので、なるべく使いたくないってのが背景にあるんじゃないかと思う。

2012-09-14 14:49:50
akisute/Masashi Ono @akisutesama

@kmizu あーなるほど・・・触ってる分野違うとやっぱし困るところが違いますね><そういうときは個人的には全部オブジェクトにして、NSString, NSNumber, そしてNSNullを使うのをおすすめしてます。NSNullはいわゆる普通のNullです。

2012-09-14 14:50:02
akisute/Masashi Ono @akisutesama

@kmizu なのでNSNullに変なメッセージ投げるときちんと吹っ飛んで死にます。俺みたいなゆとり脳だとそれがムカつくんですが、厳密なデータ構造が欲しい時は便利だと思いますよ!

2012-09-14 14:50:36
kmizu @kmizu

@akisutesama 確かにクラッシュしないですが、それは、「たまたま」うまくいっちゃってるだけで、それだととても安心できないですね。もちろん、意識的にnilにメッセージ送信しても例外が投げられないという事を活用する場合別なのかもしれませんが。

2012-09-14 14:50:45
jijixi @jijixi_org

結局のところ、どっちがより良いとかどうでもよくて、実際そうなってんだから便利なシチェーションでは便利に使えばいいじゃないって思う。

2012-09-14 14:51:43
kmizu @kmizu

@akisutesama NSNullは一応検討したんですが、iOS SDKの想定してる利用シーンがどうも違うようなので、そういう「早期にクラッシュ」のために流用してもいいのかなあとちょっと考えてます。

2012-09-14 14:51:54
akisute/Masashi Ono @akisutesama

@kmizu で、UIに渡すモデルはnilが使えるとやっぱし便利なんで、うまい具合に利用してやればいいかなと。それでもObj-CキモいわFUCKだわ許せん!!!ってときはC++でboost使うとか。だんだん回答が逃げになってきたなhahaha

2012-09-14 14:52:21
jijixi @jijixi_org

静的型付け言語のくせにnullなんてものがあるのがそもそも……とかなー

2012-09-14 14:53:10
akisute/Masashi Ono @akisutesama

@kmizu そのたまたまでいいんです。そういうゆとり思考です、俺は。以前オレはJava使ってましたし、厳密思考でした。こういうデータ構造は守られなければならないと。で、大失敗したんです。一箇所テストが漏れててクラッシュし、お客さんから★1飛び交いましたよ。

2012-09-14 14:53:28
kmizu @kmizu

@akisutesama いやまあ、許せん、FUCKというより、Objective-Cを使わざるを得ないし、そのことに価値はあるのだろうけど、言語としてはやっぱり90年代前半の言語というか設計が古いんじゃないかなあと思うことしばし。

2012-09-14 14:53:47
akisute/Masashi Ono @akisutesama

@kmizu たまたまでもいいんです。俺には完璧になれません。たまたまでもいいからクラッシュしてお客さんが激怒しなければ、俺はなんでもいいです。ただそれだけ。

2012-09-14 14:53:49
akisute/Masashi Ono @akisutesama

@kmizu あ、設計古いについては超同意っす>< でもいいところとしてARCとかBlocksみたいなのを取り入れて進化しようとしてくれているところは好きですね。だからまぁ許せちゃうみたいな。信者すぎるか。

2012-09-14 14:54:54
Kenji Yoshida @xuwei_k

akisutesamaさんとkmizuさんの話聞いてると「nilはOptionのNoneっぽい使い方ができるから理解して使いこなせば便利」だけど、Optionを使用する文化がある言語(かつジェネリクスあって静的型付効く)からすればNoneをnilで代用は微妙だからって話に聞こえる

2012-09-14 14:58:45
jijixi @jijixi_org

Objective-Cの一番ダメなところはnamespaceが無いことでしょう。名前が長ったらしいのだって、基本そのせいだし。

2012-09-14 15:00:59
kmizu @kmizu

@akisutesama はい。結構凄い速度で進化してるのはよくわかります。Blocksがあるとないとではコードの書きやすさが大違いですし、たぶん今からARC無い世界でコード書けといわれたら死にます。iOS 6では辞書/配列リテラル等も使えるようになりますし。

2012-09-14 15:01:18
kmizu @kmizu

@jijixi_org namespaceが無い(ので、クラス名が長くなりがち)なのは確かに嫌なところですね。ただ、メソッドの名前空間は一応切れてますよね?

2012-09-14 15:03:11
病気の美少女 @lyrical_logical

Objective-C は角張ってるから駄目だってもひかんさんが

2012-09-14 15:05:54
akisute/Masashi Ono @akisutesama

@kmizu あとはまぁ過去困ったところの違いってのがあると思ってます。俺はnilに対してメッセージを投げたら何も起きなかった、だからそれが原因でデータ構造が死んでアプリが台無しだ!ってなったことがなくて、そのかわりぬるぽで死んだ★1はさんざんあって、だからかな。

2012-09-14 15:08:08
kmizu @kmizu

@lyrical_logical それはよくわかります。「明示的にそう(nilをスルー)したい」箇所はあるんですけど、そっちがデフォルトだと、そもそも意図してるのか単にチェック忘れかわからない。

2012-09-14 15:08:20
akisute/Masashi Ono @akisutesama

@xuwei_k 多分それっすよ!俺OptionのNone(Scaraですよね?)わかんないから間違い無くそれな気がします!!!!!(ドヤァ

2012-09-14 15:14:20
kmizu @kmizu

Objective-Cという、自分にとって凄く詳しいとは言えない言語について批判してみたら、色々な反応があって面白いなー。そういう考え方をするんだー、と興味深く見てます。

2012-09-14 15:14:56
SKS rep @repeatedly

これ http://t.co/iIYQn4f2 に対して全て最高と言っている人達がいるのだけど http://t.co/IAleL4tb ,「メッセージ送信の構文が使いにくい」はどこが最高なんだろう?

2012-09-14 15:14:57
akisute/Masashi Ono @akisutesama

なんだかんだで俺もゲームプログラマ側の人間だったということに気付かされて愕然としている。すみません純粋にプログラムが好きな人すみません>< 関数型とかわかりません>< 「お客さんが見てバグじゃなければそれはバグじゃない」を信条に生きていきたいクソプログラマです><

2012-09-14 15:15:26