JetBrainsが開発した期待の新言語、Androidの公式開発言語にしてサーバーサイドもなんでもいけるKotlinについて語りましょう
※前スレ
Kotlin 5
https://mevius.5ch.net/test/read.cgi/tech/1544268581/
探検
Kotlin 6
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2019/06/22(土) 15:59:57.23ID:zj+KJbMh752デフォルトの名無しさん
2020/03/17(火) 17:17:56.69ID:Aeuh89FK >>748
ネットではKotlinそのものに価値があるようなことを言う人を良く見かけるが、実際はGoogleがOracleとの訴訟に負けて、Javaを使っていることを注意されて、それで使われるようになっただけの言語、と捉えるのが標準見解だ。
ネットではKotlinそのものに価値があるようなことを言う人を良く見かけるが、実際はGoogleがOracleとの訴訟に負けて、Javaを使っていることを注意されて、それで使われるようになっただけの言語、と捉えるのが標準見解だ。
753デフォルトの名無しさん
2020/03/17(火) 17:27:30.89ID:4Vk7SyLR754デフォルトの名無しさん
2020/03/17(火) 17:31:48.86ID:4Vk7SyLR >>736
わかった。それじゃあかれこれ30年ぐらい使い続けているPerlと35年ぐらい使い続けているC言語を使うことにするよ。Javaのような新言語に手を出すのは止めておこう。
わかった。それじゃあかれこれ30年ぐらい使い続けているPerlと35年ぐらい使い続けているC言語を使うことにするよ。Javaのような新言語に手を出すのは止めておこう。
755デフォルトの名無しさん
2020/03/17(火) 18:15:43.46ID:Aeuh89FK756デフォルトの名無しさん
2020/03/17(火) 19:06:22.80ID:+Hw83ygo >>736
そういう観点なら、better javaのkotlinを学習する費用対効果は大きい。
実際、自分でクラスを設計するのならnull freeにできるkotlinの価値は高い。
……というより、型無しのnullを排除できないjavaの型システムが破綻しているだけだけどな。いいかげん、nullを受け付けないクラス/変数に対応してほしいぜ。
そういう観点なら、better javaのkotlinを学習する費用対効果は大きい。
実際、自分でクラスを設計するのならnull freeにできるkotlinの価値は高い。
……というより、型無しのnullを排除できないjavaの型システムが破綻しているだけだけどな。いいかげん、nullを受け付けないクラス/変数に対応してほしいぜ。
757デフォルトの名無しさん
2020/03/17(火) 19:15:03.66ID:Aeuh89FK758デフォルトの名無しさん
2020/03/17(火) 19:30:31.89ID:s3acJuhP でも、いざnull safetyの言語使ってみると!!演算子使う自分のコードが気になって負けた気になる
759デフォルトの名無しさん
2020/03/17(火) 19:33:21.73ID:3WRfeEJw !!は便利だけど後で見返すと消したくなるわ
見てて綺麗じゃない
見てて綺麗じゃない
760デフォルトの名無しさん
2020/03/17(火) 20:14:28.04ID:s3acJuhP それ
見てて気になるし負の感情がわくw
見てて気になるし負の感情がわくw
761デフォルトの名無しさん
2020/03/17(火) 23:29:23.16ID:I7Fcdy1u >>756
JDK25ぐらいでなんとかならんのかな
JDK25ぐらいでなんとかならんのかな
762デフォルトの名無しさん
2020/03/17(火) 23:54:31.16ID:Whb0iFr7 kotlin勉強に有効な書籍はなんだ?
763デフォルトの名無しさん
2020/03/18(水) 00:01:29.88ID:rB/x/s49 Javaできるならサンプル見ただけでなんとなく使える
本読まなきゃいけないような奴が手を出す言語ではない
本読まなきゃいけないような奴が手を出す言語ではない
764デフォルトの名無しさん
2020/03/18(水) 00:33:22.47ID:LQtyodHE 当然、Kotlin の会長である太郎本!
Kotlinスタートブック -新しいAndroidプログラミング、長澤 太郎、2016
Kotlinスタートブック -新しいAndroidプログラミング、長澤 太郎、2016
765デフォルトの名無しさん
2020/03/18(水) 00:35:21.26ID:qIM0w55M766デフォルトの名無しさん
2020/03/18(水) 00:37:04.70ID:JGfgRlCq >>763
サンプルコピペして使えた気になってるコピペプログラマーの典型みたいなこと言っててワロタ
サンプルコピペして使えた気になってるコピペプログラマーの典型みたいなこと言っててワロタ
767デフォルトの名無しさん
2020/03/18(水) 03:25:07.07ID:LQtyodHE 有名な雑食系エンジニア・KENTA も、YouTube で言ってたけど、
Scala が廃れた理由は、初心者にマウント取って、悦に入る人が多いからw
JVM 系は土方だから、土木業と同じ産業構造、多重請負・奴隷構造を持つから、
奴隷は初心者に対して、マウントを取らざるを得ないw
Ruby が、なぜナイスなのか、Cookpad などの自社サービス系だから。
多重請負・奴隷構造じゃないから
JVM 系は高学歴総合職・ノンプログラマーが、
低学歴奴隷・IT 土方を使って、もうける商売だから
だから、勧める人が少ない
Scala が廃れた理由は、初心者にマウント取って、悦に入る人が多いからw
JVM 系は土方だから、土木業と同じ産業構造、多重請負・奴隷構造を持つから、
奴隷は初心者に対して、マウントを取らざるを得ないw
Ruby が、なぜナイスなのか、Cookpad などの自社サービス系だから。
多重請負・奴隷構造じゃないから
JVM 系は高学歴総合職・ノンプログラマーが、
低学歴奴隷・IT 土方を使って、もうける商売だから
だから、勧める人が少ない
768デフォルトの名無しさん
2020/03/18(水) 07:13:52.23ID:yDvvdBVq >>767
言語外の仕様か。いくらか眉唾だが興味深い。
言語外の仕様か。いくらか眉唾だが興味深い。
769767
2020/03/18(水) 08:26:52.48ID:LQtyodHE770デフォルトの名無しさん
2020/03/18(水) 08:41:22.06ID:iE2DLaXa 動画で食ってる奴がエンジニアを名乗る不思議な世の中
771デフォルトの名無しさん
2020/03/18(水) 12:35:47.10ID:fwLKdVFo772デフォルトの名無しさん
2020/03/18(水) 13:23:33.04ID:B9Jc5Lrr >>757
Kotlinでそのようにしたければそのように書けば良い。できないわけではない。使い分けできて尚且つコンパイル時のチェックが厳しいだけ。
Kotlinでそのようにしたければそのように書けば良い。できないわけではない。使い分けできて尚且つコンパイル時のチェックが厳しいだけ。
773デフォルトの名無しさん
2020/03/18(水) 14:41:11.55ID:QhEd5Nre 昨日は変なおじさんが暴れてたなあ
774デフォルトの名無しさん
2020/03/18(水) 21:03:27.37ID:dhpxSw9T >>769
3行でまとめろ
3行でまとめろ
775デフォルトの名無しさん
2020/03/18(水) 21:05:09.86ID:qIM0w55M ここの人はjavaを触る前にkotlin触った人いる?
776767
2020/03/19(木) 03:59:43.72ID:JDU05jIv 要するに、複雑なものは習得コストが高いから、暇人しか集まらないようになる。
暇人は、初心者に参入されると食えなくなるから、マウント取って邪魔してくる
防衛省・原発みたいなものと同じ。
誰にも分からないから、チェック体制も構築できなくなる
誰にも何をやっているのか、さっぱり分からないけど、
上層部は高い給料をもらえる体制。
その体制を維持していくことが目的になっている
複雑なものには、真実ではないダマシが入ってくる。
人々を煙に巻く。それがガン
逆に、簡単なRuby には、嘘が付け入る隙がないから、誰もだませない。
これが本当のオープン。
ブロックチェーンみたいなもの。支配者が国民をだませない
暇人は、初心者に参入されると食えなくなるから、マウント取って邪魔してくる
防衛省・原発みたいなものと同じ。
誰にも分からないから、チェック体制も構築できなくなる
誰にも何をやっているのか、さっぱり分からないけど、
上層部は高い給料をもらえる体制。
その体制を維持していくことが目的になっている
複雑なものには、真実ではないダマシが入ってくる。
人々を煙に巻く。それがガン
逆に、簡単なRuby には、嘘が付け入る隙がないから、誰もだませない。
これが本当のオープン。
ブロックチェーンみたいなもの。支配者が国民をだませない
777デフォルトの名無しさん
2020/03/19(木) 05:48:04.13ID:z/hUxg19778デフォルトの名無しさん
2020/03/19(木) 07:39:11.58ID:urEXhT7g779デフォルトの名無しさん
2020/03/19(木) 12:38:32.21ID:3l1mva9i >>757
型自体の操作(メタプログラミングとか)ならともかく、まずはクラスの中での操作を考えるべき。多態とかnull objectとか。
javaで一番多いトラブルはヌルポだろ。本来なら真っ先に対策すべきだと思うがね。
型自体の操作(メタプログラミングとか)ならともかく、まずはクラスの中での操作を考えるべき。多態とかnull objectとか。
javaで一番多いトラブルはヌルポだろ。本来なら真っ先に対策すべきだと思うがね。
780デフォルトの名無しさん
2020/03/19(木) 12:52:07.67ID:yzbbR7me kentaってイケダハヤトみたいになってきたな
781デフォルトの名無しさん
2020/03/19(木) 15:15:37.74ID:VRFqiqhe >>779
C++ で言えばたったこんな程度のこと。
NULLの処理なんて難しくもなんとも無い。
CWnd *MyCreateWindow(const char *pszTitle); //プロトタイプ宣言
// 使い方の例:
MyCreateWindow(NULL); // タイトル無しでWindow作成
MyCreateWindow("タイトル文字列"); // タイトル有りでWindow作成
// 関数定義:
CWnd *MyCreateWindow(const char *pszTitle)
{
if ( pszTitle == NULL ) {
(タイトルが無いとして処理);
}
else {
(タイトルが有るとして処理);
}
}
C++ で言えばたったこんな程度のこと。
NULLの処理なんて難しくもなんとも無い。
CWnd *MyCreateWindow(const char *pszTitle); //プロトタイプ宣言
// 使い方の例:
MyCreateWindow(NULL); // タイトル無しでWindow作成
MyCreateWindow("タイトル文字列"); // タイトル有りでWindow作成
// 関数定義:
CWnd *MyCreateWindow(const char *pszTitle)
{
if ( pszTitle == NULL ) {
(タイトルが無いとして処理);
}
else {
(タイトルが有るとして処理);
}
}
782デフォルトの名無しさん
2020/03/19(木) 17:10:21.28ID:rBTxc+YZ なんで頓珍漢な流れになってるんだ
nullを安全に扱える言語なのにKotlin未経験者多すぎだろこのスレ
nullを安全に扱える言語なのにKotlin未経験者多すぎだろこのスレ
783デフォルトの名無しさん
2020/03/19(木) 17:16:34.26ID:/JEYrZ/n 荒らし目的のJAVAコーダーしかおらんやろ
784デフォルトの名無しさん
2020/03/19(木) 18:04:34.63ID:j3UhLeRz ことりん
785デフォルトの名無しさん
2020/03/19(木) 18:22:01.77ID:TkZTFqNu それnullでやる必要あるの?
786デフォルトの名無しさん
2020/03/19(木) 19:39:51.06ID:YRL0u/U8 言語進化の歴史なんてまるで知らんのだろうな
787デフォルトの名無しさん
2020/03/19(木) 20:12:45.87ID:jEN69kGO 知る必要あるの?
788デフォルトの名無しさん
2020/03/19(木) 20:16:42.34ID:Pzb6grX0 考えてみると、ない
789デフォルトの名無しさん
2020/03/19(木) 20:20:50.17ID:XcKebLm1 ネットでドヤ顔したりマウント取ったりするには有用な知識
790デフォルトの名無しさん
2020/03/19(木) 21:17:12.88ID:rBTxc+YZ >>785
特殊な場合があるときにそれを-1とかで表すよりも100億倍まし
特殊な場合がないのにnullableにするのは論外
何も考えず!!演算子を使うのも論外
NullObjectを作るかどうかはメリットデメリットあるのでケースバイケース
脳死で作るのはJavaでenumを使わずにTypesafe enumパターンを手書きするような冗長さになることもあるし
下手に使うと-1と同じ弱点を埋め込む場合もある
nullに忌避感がある人はこのスレをnullで検索すると議論が参考になるかもしれない
特殊な場合があるときにそれを-1とかで表すよりも100億倍まし
特殊な場合がないのにnullableにするのは論外
何も考えず!!演算子を使うのも論外
NullObjectを作るかどうかはメリットデメリットあるのでケースバイケース
脳死で作るのはJavaでenumを使わずにTypesafe enumパターンを手書きするような冗長さになることもあるし
下手に使うと-1と同じ弱点を埋め込む場合もある
nullに忌避感がある人はこのスレをnullで検索すると議論が参考になるかもしれない
791デフォルトの名無しさん
2020/03/19(木) 22:46:33.35ID:z/hUxg19 >>757 はKotlinを否定してJavaでnullを扱いたいのか、KotlinのT?型と?.演算子や?:演算子を奨励したいのか
読んでいてよく分からなくなってきた。
読んでいてよく分からなくなってきた。
792デフォルトの名無しさん
2020/03/19(木) 22:48:27.28ID:TkZTFqNu793デフォルトの名無しさん
2020/03/20(金) 01:28:48.16ID:405ti7Ej >>792
少し例が悪かったので変えてみる:
CWnd *MyCreateWindow(CWnd *pParent); //プロトタイプ宣言
// 使い方の例:
MyCreateWindow(NULL); // 親の無いWindowを作成。自分が最上位Windowとなる。
MyCreateWindow(親Window); // 指定したWindowの子WindowとしてWindowを作成
// 関数定義:
CWnd *MyCreateWindow(CWnd *pParent)
{
if ( pParent == NULL ) {
(親が存在しない最上位Windowを新規作成);
}
else {
(pParentの子Windowを新規作成);
}
}
少し例が悪かったので変えてみる:
CWnd *MyCreateWindow(CWnd *pParent); //プロトタイプ宣言
// 使い方の例:
MyCreateWindow(NULL); // 親の無いWindowを作成。自分が最上位Windowとなる。
MyCreateWindow(親Window); // 指定したWindowの子WindowとしてWindowを作成
// 関数定義:
CWnd *MyCreateWindow(CWnd *pParent)
{
if ( pParent == NULL ) {
(親が存在しない最上位Windowを新規作成);
}
else {
(pParentの子Windowを新規作成);
}
}
794デフォルトの名無しさん
2020/03/20(金) 01:34:03.99ID:405ti7Ej >>793
もし、NULLを使いたくないのなら次のようにするしかないことになり、2つの引数に分かれてしまいむしろ危険性が増すばかりでなく、親が存在しない場合にはダミーのWindowのアドレスを指定しなければならなくなる:
CWnd *MyCreateWindow(CWnd *pParent, BOOL bChild); //プロトタイプ宣言
// 使い方の例:
MyCreateWindow(ダミーのWindow, FALSE); // 親の無いWindowを作成。自分が最上位Windowとなる。
MyCreateWindow(親Window, TRUE); // 指定したWindowの子WindowとしてWindowを作成
// 関数定義:
CWnd *MyCreateWindow(CWnd *pParent, BOOL bChild)
{
if ( !bChild ) {
(親が存在しない最上位Windowを新規作成);
}
else {
(pParentの子Windowを新規作成);
}
}
もし、NULLを使いたくないのなら次のようにするしかないことになり、2つの引数に分かれてしまいむしろ危険性が増すばかりでなく、親が存在しない場合にはダミーのWindowのアドレスを指定しなければならなくなる:
CWnd *MyCreateWindow(CWnd *pParent, BOOL bChild); //プロトタイプ宣言
// 使い方の例:
MyCreateWindow(ダミーのWindow, FALSE); // 親の無いWindowを作成。自分が最上位Windowとなる。
MyCreateWindow(親Window, TRUE); // 指定したWindowの子WindowとしてWindowを作成
// 関数定義:
CWnd *MyCreateWindow(CWnd *pParent, BOOL bChild)
{
if ( !bChild ) {
(親が存在しない最上位Windowを新規作成);
}
else {
(pParentの子Windowを新規作成);
}
}
795デフォルトの名無しさん
2020/03/20(金) 01:38:28.40ID:i2c+AgK7796デフォルトの名無しさん
2020/03/20(金) 01:41:51.33ID:405ti7Ej >>794
現実には、「ダミーのWindow(のアドレス)」なんてものは作りえないかもしれない。
だとすれば、NULLを使わずにこれらの事を行いたいなら次のように、関数を2つに分けるしかなくなってしまうかもしれない。
しかしそれは間違いが入り込みやすい良く無いプログラムである:
CWnd *MyCreateTopWindow(); //親の無いWindowを作成する関数。
CWnd *MyCreateChildindow(CWnd *pParent); //pParentの子Windowを作成する関数。
// 使い方の例:
MyCreateTopWindow(); // 親の無いWindowを作成。自分が最上位Windowとなる。
MyCreateChildWindow(親Window); // 指定したWindowの子WindowとしてWindowを作成
現実には、「ダミーのWindow(のアドレス)」なんてものは作りえないかもしれない。
だとすれば、NULLを使わずにこれらの事を行いたいなら次のように、関数を2つに分けるしかなくなってしまうかもしれない。
しかしそれは間違いが入り込みやすい良く無いプログラムである:
CWnd *MyCreateTopWindow(); //親の無いWindowを作成する関数。
CWnd *MyCreateChildindow(CWnd *pParent); //pParentの子Windowを作成する関数。
// 使い方の例:
MyCreateTopWindow(); // 親の無いWindowを作成。自分が最上位Windowとなる。
MyCreateChildWindow(親Window); // 指定したWindowの子WindowとしてWindowを作成
797デフォルトの名無しさん
2020/03/20(金) 01:45:38.48ID:405ti7Ej798デフォルトの名無しさん
2020/03/20(金) 01:48:47.36ID:405ti7Ej >>797
「親が有るかどうか」
という一つのパラメータだけなら、まだ良いが、
「メニューオブジェクトを渡すか渡さないかでメニューが付くかどうか分ける」
なども付いたりすれば、組み合わせ爆発が起きるため、関数を完全に分けてしまうのは非常に非効率で危険なプログラミングとなる。
「親が有るかどうか」
という一つのパラメータだけなら、まだ良いが、
「メニューオブジェクトを渡すか渡さないかでメニューが付くかどうか分ける」
なども付いたりすれば、組み合わせ爆発が起きるため、関数を完全に分けてしまうのは非常に非効率で危険なプログラミングとなる。
799デフォルトの名無しさん
2020/03/20(金) 01:52:10.51ID:i2c+AgK7 共通化が必要ならNullObjectの多態でも関数型でも使えばいいよ
C言語時代からアップデートされてない知識でモダン言語でのプラクティスを説こうとしているのが謎だよ
タイムスリップしたお侍が自衛隊に兵法を指南するような冗談だよ
C言語時代からアップデートされてない知識でモダン言語でのプラクティスを説こうとしているのが謎だよ
タイムスリップしたお侍が自衛隊に兵法を指南するような冗談だよ
800デフォルトの名無しさん
2020/03/20(金) 01:56:11.47ID:i2c+AgK7 組み合わせ爆発についてはデフォルト引数使えばよろし
801デフォルトの名無しさん
2020/03/20(金) 01:59:36.15ID:405ti7Ej802デフォルトの名無しさん
2020/03/20(金) 02:03:02.63ID:405ti7Ej803デフォルトの名無しさん
2020/03/20(金) 02:49:45.65ID:4pMtFWMQ804デフォルトの名無しさん
2020/03/20(金) 02:54:28.27ID:405ti7Ej >>803
それは可能だけど、グラフィックのFrameBufferの容量が大きいので、
デスクトップに浮いているWindowの場合にChildWindowと同じ処理をしたのでは
メモリーの無駄使いになることがあったり、
デスクトップに浮いているWindowとChildWindowとでは動作がかなり違っていたり
することが多いので初期化段階から if 文で場合分けしないと無理が有る事が多い。
だから、そのような「統一した考え」では結局は、効率が下がるために
実際には駄目プログラムとなる。
それは可能だけど、グラフィックのFrameBufferの容量が大きいので、
デスクトップに浮いているWindowの場合にChildWindowと同じ処理をしたのでは
メモリーの無駄使いになることがあったり、
デスクトップに浮いているWindowとChildWindowとでは動作がかなり違っていたり
することが多いので初期化段階から if 文で場合分けしないと無理が有る事が多い。
だから、そのような「統一した考え」では結局は、効率が下がるために
実際には駄目プログラムとなる。
805デフォルトの名無しさん
2020/03/20(金) 03:01:28.97ID:405ti7Ej >>804
さらに付け加えるなら、RootWindow のオブジェクトの名前を「覚えるのが面倒」
だったり、打ち込むのが長くなって大変と言う事情もある。
例えば、Windowの場合には、「DesktopWindow」という名前で、
Menuオブジェクトが無い場合には、「MenuNull」みたいな名前となる。
しかし実際にはこんな簡単な名前で無い事が多いので、マニュアルをいちいち調べ
直す手間がいる。
一方、NULLだといろんな場面全てNULLなので、覚えることが少なくて済むし、
打ち込むにも4文字で済むので楽。
関数を呼び出す際も短いので一行で書ける場合が多くなり、見易い。
さらに付け加えるなら、RootWindow のオブジェクトの名前を「覚えるのが面倒」
だったり、打ち込むのが長くなって大変と言う事情もある。
例えば、Windowの場合には、「DesktopWindow」という名前で、
Menuオブジェクトが無い場合には、「MenuNull」みたいな名前となる。
しかし実際にはこんな簡単な名前で無い事が多いので、マニュアルをいちいち調べ
直す手間がいる。
一方、NULLだといろんな場面全てNULLなので、覚えることが少なくて済むし、
打ち込むにも4文字で済むので楽。
関数を呼び出す際も短いので一行で書ける場合が多くなり、見易い。
806デフォルトの名無しさん
2020/03/20(金) 05:05:17.32ID:Edy1QoAW >>793
Kotlin ならこんな風にすれば良いんじゃないの?
fun myCreateWindow(parent: CWnd? = null): CWnd = if (parent == null) 親なし上位Window作成 else parentの子Window作成
nullable がどうしても嫌ならこうするか。
fun myCreateWindow(parent: CWnd = 親なし上位Window): CWnd = if (parent != 親なし上位Window) parentの子Window作成 else parent
Kotlin ならこんな風にすれば良いんじゃないの?
fun myCreateWindow(parent: CWnd? = null): CWnd = if (parent == null) 親なし上位Window作成 else parentの子Window作成
nullable がどうしても嫌ならこうするか。
fun myCreateWindow(parent: CWnd = 親なし上位Window): CWnd = if (parent != 親なし上位Window) parentの子Window作成 else parent
807デフォルトの名無しさん
2020/03/20(金) 06:32:14.26ID:Oo7Eeggj808デフォルトの名無しさん
2020/03/20(金) 06:53:01.35ID:4pMtFWMQ809デフォルトの名無しさん
2020/03/20(金) 07:53:37.14ID:i2c+AgK7 >>801
書かれてたサンプルコードでは真っ先に分岐が入ってたから「この場合は」オーバーロードかメソッド分割がベターと回答した
後付けされた条件を加味するなら>>806のnullable型がいい
privateな処理内で局所的にnullabeを使うことに異論はない
Kotlinならヌルポが出ないから安全
覚えるのが面倒ということまで気にする公開APIなら親にnullを指定すると親無しになるというルールを覚えさせるよりも
親の引数を省略可能にするかメソッド名を用途別に分けてクラス内で処理を共通化した方が使いやすい
nullは単一なので楽という話は、nullは単一なのでいろんな意味がまぜこぜに使われ区別できないという裏返しでもある
variantは型がないので楽、グローバル変数は楽、staticは楽というのに通じる
書かれてたサンプルコードでは真っ先に分岐が入ってたから「この場合は」オーバーロードかメソッド分割がベターと回答した
後付けされた条件を加味するなら>>806のnullable型がいい
privateな処理内で局所的にnullabeを使うことに異論はない
Kotlinならヌルポが出ないから安全
覚えるのが面倒ということまで気にする公開APIなら親にnullを指定すると親無しになるというルールを覚えさせるよりも
親の引数を省略可能にするかメソッド名を用途別に分けてクラス内で処理を共通化した方が使いやすい
nullは単一なので楽という話は、nullは単一なのでいろんな意味がまぜこぜに使われ区別できないという裏返しでもある
variantは型がないので楽、グローバル変数は楽、staticは楽というのに通じる
810デフォルトの名無しさん
2020/03/20(金) 07:58:22.42ID:i2c+AgK7 メソッド引数にnullを与えたときヌルポが出るのかトップレベルウィンドウになるのかドキュメントを読まないと判別できない公開APIは残念
省略時デフォルトとして内部的に使うのとはまた違う
省略時デフォルトとして内部的に使うのとはまた違う
811デフォルトの名無しさん
2020/03/20(金) 09:18:27.10ID:CQQp7Y75 Kotlin では、プログラマーが自分で、null を判断したら、ダメ!
null チェックを書かない人がいるから、バグが残る
C++ で言えば、スマートポインターみたいなものを使って、
自動的に判断するのが正しい
どこかで、nullチェックをして、nullじゃなければ、
null許容型を使わないように書く
null チェックを書かない人がいるから、バグが残る
C++ で言えば、スマートポインターみたいなものを使って、
自動的に判断するのが正しい
どこかで、nullチェックをして、nullじゃなければ、
null許容型を使わないように書く
812デフォルトの名無しさん
2020/03/20(金) 10:12:13.96ID:1hj/B9bx >>811
だったらそもそも静的な型がない上に基本的にプログラマが明示的な型チェックもしないことが普通なRubyは、
Kotlinで常にnull許容でチェックも一切しない以上に遥かにバグが残るってことになる(実際そう)なのだが、
自分で意味分かって言ってんのかなこいつ
だったらそもそも静的な型がない上に基本的にプログラマが明示的な型チェックもしないことが普通なRubyは、
Kotlinで常にnull許容でチェックも一切しない以上に遥かにバグが残るってことになる(実際そう)なのだが、
自分で意味分かって言ってんのかなこいつ
813デフォルトの名無しさん
2020/03/20(金) 10:31:11.84ID:EaZGEhh2 「真っ先に条件分岐が入ってたから」
はどこいったんだろう
適当やな..
はどこいったんだろう
適当やな..
814デフォルトの名無しさん
2020/03/20(金) 10:38:58.93ID:EaZGEhh2 それにそもそもオーバーロードかメソッド分割がベターとかいってるが、設定するメソッドじゃなくて現在設定されてる値を取得するメソッドまたはプロパティを追加するときはいったいどんな値返すんだ??
普通に元からnullでいいだろ
普通に元からnullでいいだろ
815デフォルトの名無しさん
2020/03/20(金) 10:47:13.64ID:IqcuAu3D >>814
nullable使わないなら異なる型を返すんだよ。nullable含め場合分けを型で強制することで不必要なバグが入り込む余地を無くすのがnull safetyな言語の流儀
nullable使わないなら異なる型を返すんだよ。nullable含め場合分けを型で強制することで不必要なバグが入り込む余地を無くすのがnull safetyな言語の流儀
816デフォルトの名無しさん
2020/03/20(金) 11:02:35.25ID:EaZGEhh2 そういう他人をわざと変な方向に導こうとしてもひっかからんしつまらんから..
817デフォルトの名無しさん
2020/03/20(金) 13:05:07.29ID:405ti7Ej818デフォルトの名無しさん
2020/03/20(金) 13:55:01.27ID:i2c+AgK7819デフォルトの名無しさん
2020/03/20(金) 14:01:35.66ID:i2c+AgK7820デフォルトの名無しさん
2020/03/20(金) 14:39:06.40ID:405ti7Ej そもそも null はそんなに危険ではない。
そのまま使おうとすれば、Windowsの場合だと、Release版ですらほぼ100%一般保護例外が生じるからどこで問題がおきているかも分かるし。
そのまま使おうとすれば、Windowsの場合だと、Release版ですらほぼ100%一般保護例外が生じるからどこで問題がおきているかも分かるし。
821デフォルトの名無しさん
2020/03/20(金) 14:40:27.30ID:405ti7Ej nullが危険といっている人は、MMUを使ってない化石の様なOSでの経験に基づくものなのかな。
822デフォルトの名無しさん
2020/03/20(金) 14:47:03.13ID:405ti7Ej if で場合分けせずに、オブジェクトのclassの仮想関数で場合分けさせると言う考え方
は時々聞くが、それはすべてをオブジェクト指向に置き換えれば上手く行くと言う根拠
のない浅はかな考え方だ。
経験を積むとその思想は間違いであることが分かってくる。
は時々聞くが、それはすべてをオブジェクト指向に置き換えれば上手く行くと言う根拠
のない浅はかな考え方だ。
経験を積むとその思想は間違いであることが分かってくる。
823デフォルトの名無しさん
2020/03/20(金) 15:49:29.05ID:i2c+AgK7 ページ違反が起きて特定に悩まされたのが昭和
一般保護例外なりヌルポなりの発生元ステップをテストで洗い出すのが平成
モダン言語ではコンパイル時に検出するので品質もコストも優位
老人は自らの成功体験に頼るので新しく良いものが現れても知識体系に取り入れることが難しく適材適所の選択ができない
一般保護例外なりヌルポなりの発生元ステップをテストで洗い出すのが平成
モダン言語ではコンパイル時に検出するので品質もコストも優位
老人は自らの成功体験に頼るので新しく良いものが現れても知識体系に取り入れることが難しく適材適所の選択ができない
824デフォルトの名無しさん
2020/03/20(金) 16:01:15.37ID:5BxgCAjb 祝日になった途端荒れだした
825デフォルトの名無しさん
2020/03/20(金) 16:45:35.12ID:3oKoD+ta 能無しJAVAコーダーが暴れてるんだろ
826デフォルトの名無しさん
2020/03/20(金) 16:50:44.74ID:405ti7Ej >>823
むしろ、OOPでやればなんでも上手く行くと思い込んでいる頭の固い馬鹿にしか思えんが。
むしろ、OOPでやればなんでも上手く行くと思い込んでいる頭の固い馬鹿にしか思えんが。
827デフォルトの名無しさん
2020/03/20(金) 17:03:18.75ID:lyFWLrjP Javaカスイライラで草
プログラマのくせに新しいもの嫌いとか致命的にセンスないだろw
さっさとやめろよこの業界w
プログラマのくせに新しいもの嫌いとか致命的にセンスないだろw
さっさとやめろよこの業界w
828デフォルトの名無しさん
2020/03/20(金) 17:08:13.91ID:3oKoD+ta >>827
ほとんどはコーダーやろ
ほとんどはコーダーやろ
829デフォルトの名無しさん
2020/03/20(金) 17:12:54.71ID:405ti7Ej 新しくても駄目なものは駄目。
新しければいいと思うな。
若ければ年上に勝てると思うな。
新しければいいと思うな。
若ければ年上に勝てると思うな。
830デフォルトの名無しさん
2020/03/20(金) 18:03:14.01ID:NjO7svfB 老人とか関係ないな。
愚者は経験に学ぶ
それだけ
愚者は経験に学ぶ
それだけ
831デフォルトの名無しさん
2020/03/20(金) 18:18:29.68ID:405ti7Ej おまえが愚者だ。
832デフォルトの名無しさん
2020/03/20(金) 19:36:44.38ID:lyFWLrjP >>828
今時厳密にコーダープログラマーをわけてる現場なんかないだろwクソ老害か?w
今時厳密にコーダープログラマーをわけてる現場なんかないだろwクソ老害か?w
833デフォルトの名無しさん
2020/03/20(金) 19:37:18.52ID:lyFWLrjP834デフォルトの名無しさん
2020/03/20(金) 19:46:41.44ID:405ti7Ej835デフォルトの名無しさん
2020/03/20(金) 21:17:36.75ID:3oKoD+ta >>832
君が派遣されてるドカタ現場ではそうなんだね
君が派遣されてるドカタ現場ではそうなんだね
836デフォルトの名無しさん
2020/03/20(金) 21:21:57.46ID:6BEgHG50 何でお前らすぐに不毛な煽りあい始めるんだ
837デフォルトの名無しさん
2020/03/20(金) 21:26:00.38ID:UGdtYAWR nullセーフもoopも嫌いならgoがオススメですよ
838デフォルトの名無しさん
2020/03/20(金) 21:28:58.30ID:lyFWLrjP >>835
君が派遣されてるクソ現場は下流しかやってないから律儀にフロントとバックでコーダープログラマー分けてるんだねw
普通上流の仕事してたらそんな底辺下流の扱いなんか厳密に分けてないよwwwww
勉強になったねえ w
君が派遣されてるクソ現場は下流しかやってないから律儀にフロントとバックでコーダープログラマー分けてるんだねw
普通上流の仕事してたらそんな底辺下流の扱いなんか厳密に分けてないよwwwww
勉強になったねえ w
839デフォルトの名無しさん
2020/03/20(金) 21:50:19.69ID:Oo7Eeggj >>829
年寄りだったのか。
若い頃に苦労して身につけたテクニックが、言語仕様でカバーされて誰でも実践できるようになって、
脅かされている自分のアイデンティティを守るために必死になっている、ってところかな。
年寄りだったのか。
若い頃に苦労して身につけたテクニックが、言語仕様でカバーされて誰でも実践できるようになって、
脅かされている自分のアイデンティティを守るために必死になっている、ってところかな。
840デフォルトの名無しさん
2020/03/20(金) 23:35:23.46ID:405ti7Ej >>839
この板に居るようなパンチカード(?)を語るようなほどの年寄りではない。
NullObjectでNULLを代用することが、
「言語仕様で誰でも実践できるようになって、自分のアイデンティティーが脅かされる」
に該当するとはとても思えない。
この板に居るようなパンチカード(?)を語るようなほどの年寄りではない。
NullObjectでNULLを代用することが、
「言語仕様で誰でも実践できるようになって、自分のアイデンティティーが脅かされる」
に該当するとはとても思えない。
841デフォルトの名無しさん
2020/03/21(土) 00:05:57.23ID:5V8tQPWW パンチカード載せてる台車ひっくり返したら大変
842デフォルトの名無しさん
2020/03/21(土) 06:24:08.00ID:JAKzE64M >>840
> この板に居るようなパンチカード(?)を語るようなほどの年寄りではない。
この板にパンチカードなんて単語一度も出てきてないけど誰のこと?
パンチカード世代ではないにしても、NULLを駆使するのが美しいテクニックだった時代の年寄りなんでしょ?
相手の主張を反論しやすいように歪曲するのはやめた方がいいですよ。
>NullObjectでNULLを代用することが、
「NullObjectでNULLを代用すること」はKotlinの言語仕様でないから、
そのように受け取ったのなら、Kotlinのコンセプトを理解していないか、
相手の主張を反論しやすいように歪曲する癖があるかのどちらか。
>>840が対話の成立しない相手であることが証明されたので
>>840の回答には大変満足しております。ありがとうございました。
> この板に居るようなパンチカード(?)を語るようなほどの年寄りではない。
この板にパンチカードなんて単語一度も出てきてないけど誰のこと?
パンチカード世代ではないにしても、NULLを駆使するのが美しいテクニックだった時代の年寄りなんでしょ?
相手の主張を反論しやすいように歪曲するのはやめた方がいいですよ。
>NullObjectでNULLを代用することが、
「NullObjectでNULLを代用すること」はKotlinの言語仕様でないから、
そのように受け取ったのなら、Kotlinのコンセプトを理解していないか、
相手の主張を反論しやすいように歪曲する癖があるかのどちらか。
>>840が対話の成立しない相手であることが証明されたので
>>840の回答には大変満足しております。ありがとうございました。
843デフォルトの名無しさん
2020/03/21(土) 09:04:23.03ID:Nklv0DXu なんだ、親無しWindow を、null にしただけか。
確かに、そういうAPI があるけど、マネしない方がよい
それって、0 でも空文字列でも、何でもよいわけでしょ。
そうい所に、nullを使うのはおかしい
nullは、ヌルポだけに限定すべき!
異なる意味で使ってはならない!
使い方を文章に書いた時にも、
引数がnullなら、親無しWindowになりますというのも、ちょっとおかしい
そういう用途には、デフォルト引数!
確かに、そういうAPI があるけど、マネしない方がよい
それって、0 でも空文字列でも、何でもよいわけでしょ。
そうい所に、nullを使うのはおかしい
nullは、ヌルポだけに限定すべき!
異なる意味で使ってはならない!
使い方を文章に書いた時にも、
引数がnullなら、親無しWindowになりますというのも、ちょっとおかしい
そういう用途には、デフォルト引数!
844デフォルトの名無しさん
2020/03/21(土) 09:36:51.55ID:oUFNTFet845デフォルトの名無しさん
2020/03/21(土) 09:44:12.11ID:JAKzE64M846デフォルトの名無しさん
2020/03/21(土) 09:55:22.84ID:3uF/mjPQ 俺が老人という言葉を使ったのは実年齢のことではなく振る舞いだよ
Kotlinのコンセプトを理解してないどころか学ぶ気すらない
C++でサンプルを提示する辺りJavaを知っているかすら怪しい
自分のアイデンティティーを脅かされるという自覚はなく、わざわざ下らないものの詳細を学ばなくても俺には経験上わかるんだという老人特有の驕りが見える
全貌が見えてないから議論が噛み合わない
このスレにはnullは一切使わずにNullObjectを使うべきと主張する層とnullableは安全とする層と適材適所で使うという層がいて、この老人にとっては全員敵であり区別できないのだろう
NullObjectはJavaでは効果的なプラクティスだったけどKotlinではStateパターンのような役割でないとさほど輝かないと俺は思う
KotlinでNullObjectが常にnull(able)の良き代替になるなんて誰も提示できないはず
この老人がその一点に拘り他を無視する限りやっぱり俺は正しいんだと信じ続けるだろうな
Kotlinのコンセプトを理解してないどころか学ぶ気すらない
C++でサンプルを提示する辺りJavaを知っているかすら怪しい
自分のアイデンティティーを脅かされるという自覚はなく、わざわざ下らないものの詳細を学ばなくても俺には経験上わかるんだという老人特有の驕りが見える
全貌が見えてないから議論が噛み合わない
このスレにはnullは一切使わずにNullObjectを使うべきと主張する層とnullableは安全とする層と適材適所で使うという層がいて、この老人にとっては全員敵であり区別できないのだろう
NullObjectはJavaでは効果的なプラクティスだったけどKotlinではStateパターンのような役割でないとさほど輝かないと俺は思う
KotlinでNullObjectが常にnull(able)の良き代替になるなんて誰も提示できないはず
この老人がその一点に拘り他を無視する限りやっぱり俺は正しいんだと信じ続けるだろうな
847デフォルトの名無しさん
2020/03/21(土) 10:05:31.48ID:SrebAl5K 若い衆はほんと何がいいたいんだかわからん
848デフォルトの名無しさん
2020/03/21(土) 10:12:24.90ID:3uF/mjPQ >>845
あながち間違いでないことと良いAPIであることには隔たりがあると思うよ
参考としてはJavaが提供しているライブラリにおいてnullを指定してくださいというメソッドよりもオーバーロードを提供しているメソッドの方が多い
ウィンドウの例だけでなく一般化して考えると、引数のデフォルト値として空の関数を与えて綺麗に書けるケースも多い
メソッドごとにnullを渡すべきなのか空の関数を渡すべきなのかNullObjectがあるのかを考えず、引数を省略するというシグネチャーで判別可能な一貫した利用ができるのは優れたメソッド設計だと思う
あながち間違いでないことと良いAPIであることには隔たりがあると思うよ
参考としてはJavaが提供しているライブラリにおいてnullを指定してくださいというメソッドよりもオーバーロードを提供しているメソッドの方が多い
ウィンドウの例だけでなく一般化して考えると、引数のデフォルト値として空の関数を与えて綺麗に書けるケースも多い
メソッドごとにnullを渡すべきなのか空の関数を渡すべきなのかNullObjectがあるのかを考えず、引数を省略するというシグネチャーで判別可能な一貫した利用ができるのは優れたメソッド設計だと思う
849デフォルトの名無しさん
2020/03/21(土) 11:44:22.68ID:oUFNTFet 爺さんが引数に null 渡す例出したのに釣られちゃってるけど
Javaでも戻り値に null かオブジェクト返す API は普通にあるからね
これは NullObject か nullable に修正したい
Javaでも戻り値に null かオブジェクト返す API は普通にあるからね
これは NullObject か nullable に修正したい
850デフォルトの名無しさん
2020/03/21(土) 12:37:46.26ID:R4utYKoB プログラマーの気持ち悪い部分をいい感じに体現してくれてる
ここであれこれ書いてもぬかに釘
noteかブログにでも書いておけ
ここであれこれ書いてもぬかに釘
noteかブログにでも書いておけ
851デフォルトの名無しさん
2020/03/21(土) 14:00:49.01ID:txJMIm7g なんでも古い古いと言っていれば、どんなに駄目でも新しい言語や若い人が有利になってしまう法則。
852デフォルトの名無しさん
2020/03/22(日) 04:45:41.69ID:HvrypJyW 引数の個数や型だけが異なる「関数の多態性」を行うと、プログラムが間違い易くなる。
なぜなら型や引数の個数の書き間違いをコンパイラが報告してくれなくなることがあるから。
C/C++で型が導入されたのもそういう間違いをコンパイラに発見してもらうためも有ったが、それが働きにくくなってしまう。
なぜなら型や引数の個数の書き間違いをコンパイラが報告してくれなくなることがあるから。
C/C++で型が導入されたのもそういう間違いをコンパイラに発見してもらうためも有ったが、それが働きにくくなってしまう。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【コメ】卸売業者「簡単に安売りできない」「大暴落起きれば大赤字に」 JA「新米の販売進度が近年になく遅い。コメの回転が悪い」 ★3 [Hitzeschleier★]
- 【将棋】福間香奈 女流六冠が会見 妊娠・出産でタイトル戦の事実上不戦敗 「妊娠したら、どちらか一方を諦めないといけない状況」★2 [冬月記者★]
- かつや、明日からカツ丼(竹)790円→590円、ロースカツ定食830円→630円、カツカレー(竹)990円→790円 画像あり [お断り★]
- タイがカンボジアを空爆、トランプ氏仲介の和平合意は“事実上崩壊”軍事衝突へ タイ首相「もはや対話の余地ない」 [お断り★]
- 【速報】 米国政府、中国が日本の自衛隊にレーダー照射を批判、同事案で中国を批判するのは初めて ★2 [お断り★]
- 空自機レーダー照射、音声データ公開 中国 ★5 [蚤の市★]
- 防衛省「了解は言っていない」 [966095474]
- 中国、日本人tiktokの収益剥奪開始wmwmwmwmwmwm [834922174]
- 【速報】共同通信スクープキタ━(゚∀゚)━!!「実際は日本の自衛隊機が中国機に対してレーダ照射ロックオンしていたことが発覚」 [339712612]
- 茂木外務大臣、行事費の名目でディオール、エルメス、ブルガリへ支出 [256556981]
- マリン船長のラーメン、投げ売りされてしまう😭
- 大阪万博の会場建設費、企業寄付42億円不足 黒字だった筈なのに1970年万博の基金の取り崩しへ [594040874]
