[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 05/18 20:39 / Filesize : 277 KB / Number-of Response : 1025
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Java入門・初心者質問スレ Part.5



1 名前:デフォルトの名無しさん mailto:sageteoff [2017/09/29(金) 17:53:25.24 ID:XnizQSCA.net]
Java初心者のためのスレッドです。

※前スレ
Java入門・初心者質問スレ Part.4
mevius.2ch.net/test/read.cgi/tech/1498828456/

283 名前:デフォルトの名無しさん mailto:sage [2017/10/23(月) 02:37:41.34 ID:yUlbauj/.net]
キモすぎてもう見てられん・・早く終わってくれ

public class Automobile {
static int TotalMobile = 0;
static int TotalLargeMobile = 0;

Automobile(int weight){
TotalMobile++;
if(weight >= 11){
TotalLargeMobile++;
}
}

public int countAutomobile(){
return TotalMobile;
}
public int countHeavy(){
return TotalLargeMobile;
}
}

public class Highway{
public static void main(String[] args) {
Automobile[] am = new Automobile[5];
int[] weight = {1, 15, 12, 5, 8};
for(int i=0; i<5; i++){
am[i] = new Automobile(weight[i]);
}
System.out.println("自動車総数:" + am[0].countAutomobile() + "台");
System.out.println("うち大型車:" + am[0].countHeavy() + "台");
}
}

284 名前:デフォルトの名無しさん mailto:sage [2017/10/23(月) 02:39:17.36 ID:c0Vu/KQR.net]
>>278
おーいいタイミング
ありがとな〜

285 名前:デフォルトの名無しさん mailto:sage [2017/10/23(月) 02:42:53.75 ID:Zv+DKPlp.net]
皆さんありがとうございます!おかげでどうにか出来ました!この恩は一生忘れないです!

286 名前:デフォルトの名無しさん mailto:sage [2017/10/23(月) 02:45:26.99 ID:c0Vu/KQR.net]
>>280
恩は忘れていいのでこの問題の設計はウンコだって事だけ覚えててくれ

287 名前:デフォルトの名無しさん mailto:sage [2017/10/23(月) 02:48:37.75 ID:Zv+DKPlp.net]
>>281
けれどこんなヽ(・∀・)ノウソコ設計でもみなさんちゃんと理解して完成まで持ってけるなんてほんとにすごいと思います。

288 名前:デフォルトの名無しさん mailto:sage [2017/10/23(月) 02:51:09.46 ID:yUlbauj/.net]
お前と課題出した奴が馬鹿すぎるだけ

289 名前:デフォルトの名無しさん mailto:sage [2017/10/23(月) 02:54:14.67 ID:c0Vu/KQR.net]
こちとら仕事でこんなもんじゃないレベルのウンコを相手にしてるからな
本来いらないスキルだからお前は真っ当に育ってくれ

290 名前:デフォルトの名無しさん mailto:sage [2017/10/23(月) 03:03:23.53 ID:Zv+DKPlp.net]
>>283
反論の余地もないです。これからも精進します…

291 名前:デフォルトの名無しさん mailto:sage [2017/10/23(月) 03:04:25.94 ID:Zv+DKPlp.net]
>>284
センスないと言われたらそこまでですが、将来IT系で働きたいと考えているのですがどう思いますか?ちな理系です。



292 名前:デフォルトの名無しさん mailto:sage [2017/10/23(月) 03:11:54.62 ID:c0Vu/KQR.net]
>>286
働くだけなら誰でも行けるよ
スキルは後から付ければいいけどあればあるだけ有利にはなる

293 名前:デフォルトの名無しさん mailto:sage [2017/10/23(月) 03:19:06.59 ID:Zv+DKPlp.net]
>>287
なるほど、ありがとうごさいます

294 名前:デフォルトの名無しさん mailto:sage [2017/10/23(月) 04:09:38.68 ID:H84xHXVr.net]
>>282
完成については最初に問題を見た直後に大半のやつはわかっていて、
それだからクソだと言っていたのだ。この程度は誰でも慣れてくると
すぐに頭に浮かぶようになる。というか見た直後にまず違和感を覚える。
それからその違和感の原因はなんだろうと心の中を探り、それから
ソースを二度見して気づく。

295 名前:デフォルトの名無しさん mailto:sage [2017/10/23(月) 04:25:40.26 ID:yUlbauj/.net]
ネットで色々調べ物してたら大学生とか院生でも仕事でjavaってる奴よりも
遥かに賢いコード書いてる奴が腐るほどいるのに
大学で出る課題がこれでそれに悪戦苦闘してる奴が仕事とか夢見すぎだろ

296 名前:デフォルトの名無しさん mailto:sage [2017/10/23(月) 05:17:21.22 ID:c0Vu/KQR.net]
初心者が突然理解してたら勉強する意味ないだろ

297 名前:デフォルトの名無しさん mailto:sage [2017/10/23(月) 08:14:26.60 ID:uG4wXav9.net]
>>290
皆出来るような事は仕事にはならない。

298 名前:デフォルトの名無しさん mailto:sage [2017/10/23(月) 12:06:33.05 ID:Lz0ZCAGx.net]
初歩中の初歩的なことで申し訳ないんですが、Windows 10上でのJava開発環境の構築は
a. JDKインストール → Eclipseインストール →Pleiades プラグインインストール (一般的?)
b. Pleiades All in One [Eclipse 4.7] Java (Full Edition)
どちらの方法がお勧めでしょうか?最近まで開発にMacを使っていたものでどうすべきか悩んでいます。
後者は最初からよく使うプラグイン類が導入済で便利とは聞きますが...

299 名前:デフォルトの名無しさん mailto:sage [2017/10/23(月) 12:18:29.77 ID:QxUDS6F0.net]
>>293
本当の初心者とか楽したいなら後者
開発経験あるなら前者で必要なプラグインだけ選出して入れる

300 名前:デフォルトの名無しさん mailto:sage [2017/10/23(月) 16:12:01.87 ID:QKnEuIrp.net]
必要ないプラグインは外せる
だからプラグインと呼ぶ

学校でのプログラミングの課題はあくまで穴埋め的に特定手法の記憶度を見るものであり
独習時の問題とも業務実習時の課題とも違うものだから出来不出来は気にしないのがよい
ネイティブだろうがプロ翻訳家だろうが「学校の」英語「習熟度ドリル」は満点取れなかったりするものだ

301 名前:デフォルトの名無しさん [2017/10/23(月) 16:23:54.92 ID:t7W7X0PH.net]
あー。帰国子女で日本語片



302 名前:セのやつがなぜか満点取れないと。 []
[ここ壊れてます]

303 名前:デフォルトの名無しさん mailto:sage [2017/10/23(月) 17:06:17.83 ID:8jJ9zkLD.net]
日本人が全員国語満点じゃないのと一緒

304 名前:デフォルトの名無しさん mailto:sage [2017/10/23(月) 18:36:46.88 ID:NKAmnKE1.net]
この課題はインスタンス変数とクラス変数の違いを知るためのものだから
こういう間違えをして調べるのを期待してるんだろ

305 名前:デフォルトの名無しさん [2017/10/23(月) 19:16:35.52 ID:YIhcz2Te.net]
ま、しかし、もうちょっとましな課題作れないもんだろうか。
疲れてたのかな。

306 名前:デフォルトの名無しさん mailto:sage [2017/10/23(月) 19:31:38.35 ID:Pe+98mGG.net]
やっと流れに追いついた
>>201のは、設計がどうのという以前に
キチガイの所業

あるいはお前らの脳を疲弊させるための実験
お前らマトモにとりあってたらダメだぞ

307 名前:デフォルトの名無しさん [2017/10/23(月) 19:40:11.90 ID:YIhcz2Te.net]
あー。そうか。スレを活性化させるために投下された燃料だったのか。

308 名前:デフォルトの名無しさん mailto:sage [2017/10/23(月) 20:12:20.31 ID:y4/LHG7i.net]
一般的にこういう課題ってam[0]の箇所を
自分なりに修正して提出したら減点対象になるの?

もしそうなら大学レベルの教育方法ではないよね

309 名前:デフォルトの名無しさん [2017/10/23(月) 20:22:05.75 ID:YIhcz2Te.net]
わからんな。先生の気分次第なんじゃないか?

310 名前:デフォルトの名無しさん [2017/10/24(火) 00:45:00.97 ID:MROfWTvM.net]
配列ってホッチキスで止められた書類みたいなもんだから最近嫌いだわ

311 名前:デフォルトの名無しさん mailto:sage [2017/10/24(火) 01:07:41.88 ID:37YlkQhq.net]
List使えばいいじゃん。

これにて一件落着



312 名前:デフォルトの名無しさん mailto:sage [2017/10/24(火) 02:48:33.95 ID:UVHXr0A6.net]
[[[[[[[[[

313 名前:デフォルトの名無しさん [2017/10/24(火) 23:49:49.40 ID:++BilNP+.net]
>>305
要素一つ一つaddする地獄もなくなったし、これからはListの時代

314 名前:デフォルトの名無しさん mailto:sage [2017/10/25(水) 06:04:04.53 ID:ZfgKJLFw.net]
質問です。
ファイル圧縮処理を行う下記のコードで、
https://ideone.com/PFwyTI
close処理をfinally文ではなくcatch文の中に記述されているのですが、
問題無いのでしょうか?

315 名前:デフォルトの名無しさん mailto:sage [2017/10/25(水) 07:05:25.56 ID:KHRIvL/L.net]
>>308
処等後にプロセスがすぐに死ぬなら
閉じる必要もないでしょ
flushだけでいい
キャッチはまるまるいらない

316 名前:デフォルトの名無しさん mailto:sage [2017/10/25(水) 09:26:51.00 ID:Q7ime0JM.net]
closeとセットで作るようにしないといつかclose忘れ起こすと思うけど

317 名前:デフォルトの名無しさん [2017/10/25(水) 09:39:29.54 ID:nJqgcJg9.net]
try-with-resources でやるのが良い
www.task-notes.com/entry/20150504/1430708400

318 名前:デフォルトの名無しさん mailto:sage [2017/10/25(水) 09:44:49.84 ID:ZmgYAolO.net]
まあ実際的にも教育的にも「closeなんてしなくていいよ」ということはないな
自動でcloseしてくれる普段使い用コンビニエスメソッドが本家でもあるべきではあるが

319 名前:デフォルトの名無しさん mailto:sage [2017/10/25(水) 10:10:23.11 ID:QmdhvvJR.net]
Javaってc#のusingみたいな構文ないんだっけ?

320 名前:デフォルトの名無しさん [2017/10/25(水) 11:01:31.98 ID:lQVA76dW.net]
>>312,313
直前のレスくらい読もうぜ

321 名前:デフォルトの名無しさん mailto:sage [2017/10/25(水) 18:36:25.22 ID:9pgp/kzo.net]
プログラミング完全初心者でこれから始めようと思っているんですが
何を何からやれば良いでしょうか
お勧めの本やサイト等もご教授ねがいます
OSはLinux Mintでとりあえずeclipseというのとopen java8というのを入れました



322 名前:デフォルトの名無しさん mailto:sage [2017/10/25(水) 18:38:25.23 ID:0GYD+24d.net]
>>315
プログラミングで何をやりたいの?
学ぶ目的は?

323 名前:デフォルトの名無しさん [2017/10/25(水) 18:44:11.98 ID:MjxzUPyN.net]
C#と座間林が話題になってたからそっちのほうがいいのかも

324 名前:デフォルトの名無しさん mailto:sage [2017/10/25(水) 18:54:09.43 ID:ZmgYAolO.net]
>>315
>何を何からやれば良いでしょうか


325 名前:>お勧めの本やサイト等もご教授ねがいます
全部おんぶに抱っことかアフィかッ!
やんわりマジレスすると最初の最初はJavaでないほうがいいよ
これはたとえ小難しくても業務でカッチリ書けるという面が重宝された言語だから、個人がいきなり趣味でやるとしんどい
ひょっとしたらアンドロイドアプリが頭にあるかもしれないけど、もしゲームならUnityがいいよ
[]
[ここ壊れてます]

326 名前:デフォルトの名無しさん mailto:sage [2017/10/25(水) 19:02:06.72 ID:ZmgYAolO.net]
環境見てなかったwwww
もしリッチなマシンがLinuxマシンしかなく、それでもGUIアプリを世に出したいのだとしたらJava...しかないかなあ
アンドロイドアプリをLinuxで作りたいなら実質Java/Kotlinしかないよ
ただ、あなたの中では知名度ないかもしれないけど Python をやるという手もあるよ
よかったら検討してくれ

327 名前:デフォルトの名無しさん mailto:sage [2017/10/25(水) 19:08:59.03 ID:9pgp/kzo.net]
ありがとうございます
webアプリ作成、Androidアプリ作成、機械学習をやってみたいと考えております
調べていてpythonというのも候補には挙がったんですが
javaをやると基礎がしっかりつくと聞いてjavaにしてみようかなと思いました
学生で新しいパソコンを買う余裕がなく、お下がりのにlinuxを入れて使っています

328 名前:デフォルトの名無しさん mailto:sage [2017/10/25(水) 19:37:30.37 ID:9pgp/kzo.net]
すいませんちょっと嘘つきました
お金がないよりも、勉強の邪魔になるからって買わせて貰えない
の方が正しかったです

329 名前:デフォルトの名無しさん mailto:sage [2017/10/25(水) 19:47:59.66 ID:ZmgYAolO.net]
学生さんならJavaなんてやるのは勿体ないよ
あとLinuxでのアンドロイドアプリ作成はメモリ4GB必要だから気をつけてね

330 名前:307 mailto:sage [2017/10/25(水) 20:18:00.51 ID:ZfgKJLFw.net]
何件かレスを頂き、ありがとうございます。

仕事でJavaを使う際、catch文の中にclose処理を入れるのは有りなんでしょうか?
引き続きで恐縮ですが、皆様の見解をよろしくお願いします。

331 名前:デフォルトの名無しさん mailto:sage [2017/10/25(水) 20:28:08.31 ID:lZypkF1g.net]
>>323
規約と契約による
あなたの会社がしても良いといえばどっかのJavaのエラい人がなんと言おうとあなたの会社では正しいし
Javaのエラい人が顔をしかめネットで炎上し掲示板で荒らし扱いされる手法であっても上司がそのようにしてくれと言えばあなたはその書き方をすべきである



332 名前:デフォルトの名無しさん [2017/10/25(水) 20:30:59.72 ID:zzC6q5u4.net]
>>318
え?Javaってそんなに難しいか?

まあでも元の質問してる人はOSがLinuxなので多分何も知らない初心者じゃないと思うぞ。
多分他の言語はわかるんじゃないか?

333 名前:デフォルトの名無しさん [2017/10/25(水) 20:36:12.40 ID:zzC6q5u4.net]
あ、ごめん。リロード忘れてた。なんでLinuxか書いてあったな。

まあでもLinux入れてまで使おうとするやつはもはや初心者ではないと思うが。

334 名前:デフォルトの名無しさん mailto:sage [2017/10/25(水) 20:40:19.16 ID:lZypkF1g.net]
>>325
まーなんだ、「小難しい」のは間違いないな
1行実行するために10行書くような言語だ
IDEがあるとはいえ学生さんにはもっと前のめりな言語で遊んでほしいところ

あと君が何歳かは知らないけど今のデスクトップ用Linuxのインストールと使用はスマホの設定変更くらいの難易度だぞ

335 名前:デフォルトの名無しさん [2017/10/25(水) 20:56:31.41 ID:zzC6q5u4.net]
>>327
いや、今時のLinuxはインストール始めれば後はだいたいマウスポチポチ押してればなんとかなる事は知ってる。
しかしPC初心者は普通はLinuxの存在すら知らない。あるいはWindowsの上で動くソフトだと誤解していたりする。
そういう誤解がないということはそれなりにわかっていると考えて良かろう。

336 名前:デフォルトの名無しさん mailto:sage [2017/10/25(水) 21:17:12.51 ID:QmdhvvJR.net]
>>328
いまはWSLあるしなー

337 名前:デフォルトの名無しさん mailto:sage [2017/10/25(水) 21:45:19.10 ID:/TUaBfz7.net]
314です
泥アプリの作成にもRAM4GB必要だそうなので何とかしてもうちょっと新しいPC手に入れて出直してきます
ありがとうございました

338 名前:デフォルトの名無しさん mailto:sage [2017/10/25(水) 22:42:58.25 ID:RILf1WwA.net]
泥アプリ開発ならvsでxamarinとかブラウザでmonacaみたいな選択肢もあるし
一旦言語選択から考え直してみたら

339 名前:スッキリ厨 mailto:sage [2017/10/25(水) 23:26:15.55 ID:M2TcZ1xf.net]
>>315-322
まずこの本で、オブジェクト指向を学ぶ
スッキリわかる Java入門 第2版、2014

その後、この2冊をこの順に読む
たのしいRuby 第5版、2016
みんなのPython 第4版、2017

ここまでが基礎で、実際にアプリを作れるようになるには、数年掛かる。
アルゴリズム・OS・環境構築運用で、少なくとも数年は掛かる

340 名前:デフォルトの名無しさん [2017/10/26(木) 00:28:50.10 ID:qkSUMYmO.net]
クラス名からインスタンスを生成して、
そのインスタンスが保持するフィールドにダミーの値をセットする機能を作りたいのですが、
privateなメンバ変数にも値をセットすることはリフレクションで出来ますか?

class Entity{
@getter @setter
private Long age;
}
があったときnew Entity()のインスタンスとその中のageに何か数値が入っている状態にしたいです

341 名前:デフォルトの名無しさん [2017/10/26(木) 00:42:22.95 ID:qkSUMYmO.net]
自己解決した ありがとう



342 名前:デフォルトの名無しさん [2017/10/26(木) 01:29:13.40 ID:N/UTfD1S.net]
>>315
Progate行ってこい
やれそうだと思ったらスッキリ入門編

343 名前:デフォルトの名無しさん [2017/10/26(木) 09:58:09.89 ID:/KWiwsxI.net]
>>334
どうやって解決したかを書け

344 名前:307 mailto:sage [2017/10/26(木) 20:11:51.32 ID:DirVuC/B.net]
>>324
分かりました。ありがとうございました。

345 名前:デフォルトの名無しさん mailto:sage [2017/10/29(日) 00:13:25.42 ID:jaLMlrXm.net]
H2 Databaseに接続するプログラムをコンパイルし実行したいのですが、
クラスパスを何て書けばいいか調べても分かりません。
どなたか教えて頂けませんでしょうか?

346 名前:デフォルトの名無しさん [2017/10/29(日) 11:34:08.81 ID:oFRxn/Jf.net]
>>338
ここにいきなりこう書いてあるが?

www.h2database.com/html/quickstart.html

Add the h2*.jar to the classpath (H2 does not have any dependencies)

347 名前:337 mailto:sage [2017/10/29(日) 12:46:42.34 ID:jaLMlrXm.net]
>>339
レスありがとうございます。
具体的には、javac -cp h2*.jar Main.java (Main.javaはクラス名)と入力し、
java -cp h2*.jar Main と入力すればいいんですか?

348 名前:デフォルトの名無しさん mailto:sage [2017/10/29(日) 13:08:40.31 ID:cRJ4aa/x.net]
今時クラスパスを手動で解決するとは
mavenとかgradle使え

349 名前:デフォルトの名無しさん mailto:sage [2017/10/29(日) 13:18:28.37 ID:oFRxn/Jf.net]
>>340
いや、h2*.jar が入っているディレクトリごと指定しないと普通はダメなのでは?
カレントディレクトリにあるならそれでも良いのかも知れんが。

350 名前:337 mailto:sage [2017/10/29(日) 15:33:37.93 ID:jaLMlrXm.net]
コンパイルは通るのですが、実行できませんでした…。
ClassNotFoundExceptionとSQLExceptionが発生してしまいます。
どなたかヒントを下さい。
ソースコードは以下です。
https://ideone.com/4xrmgz

351 名前:337 mailto:sage [2017/10/29(日) 15:35:28.67 ID:jaLMlrXm.net]
>>341
すいません、今回はコマンドプロンプトで書かせて下さい。



352 名前:デフォルトの名無しさん mailto:sage [2017/10/29(日) 15:57:54.47 ID:0Uo9CHxR.net]
>>343
javacで取り込むわけではないので
javaで実行時にもCLASSPATHを通して見つかるようにしてやる必要がある

353 名前:デフォルトの名無しさん mailto:sage [2017/10/29(日) 16:23:24.35 ID:oFRxn/Jf.net]
>>343
コンパイル時と同じ classpath にしてもダメなの?

354 名前:337 mailto:sage [2017/10/29(日) 16:26:53.49 ID:jaLMlrXm.net]
>>345
はい。それは分かります。javacと同じクラスパスをjava実行時にも付けて

355 名前:います。

実は根本的に、h2*.jarファイルがどこにあるのかよく分かってない気もするんですが、
H2 DatabaseのホームページからDL出来るh2-setup-2017-06-10.exeファイルの
中にあるんですよね?
[]
[ここ壊れてます]

356 名前:337 mailto:sage [2017/10/29(日) 16:32:10.42 ID:jaLMlrXm.net]
>>346
はい。
なのでjarファイルの位置指定がそもそも間違ってるんじゃないかと思い始めて
いるんですが…。.jarという拡張子のファイルが見当たらないんです。

357 名前:デフォルトの名無しさん mailto:sage [2017/10/29(日) 17:11:13.08 ID:0Uo9CHxR.net]
>>347
知らないけど
それは自己解凍ファイルなのかな
検索して実際のjarファイルを探してみればいい

コンパイル時はインタフェースさえわかればいいから
その実装のclassには通ってない可能性がある

ちゃんと何してるかから理解した方がいいと思うぞ

358 名前:337 mailto:sage [2017/10/29(日) 20:16:42.57 ID:jaLMlrXm.net]
>>349
あれからいろいろ調べて、Cドライブを検索した結果、h2*.jarファイルが
見つかりました!やはり.exeファイル内には無かったようです。

クラスパスを更新したら実行(javaコマンド)も無事成功しました。
回答して頂いた方々、ありがとうございました。

359 名前:デフォルトの名無しさん mailto:sage [2017/10/29(日) 22:13:14.03 ID:ZPOHC70p.net]
コンストラクタで引数チェックをし、例外を投げることは設計上良くないのでしょうか?例えば
class hoge {
private final int i;

hoge(int i) {
if(i >= 0)
this.i = i;
else
throw new IllegalArgumentException
}
}

フィールドiに負の数を持たせたくない場合このようにするのが自然かなと考えたのですがいかがでしょうか?

360 名前:デフォルトの名無しさん [2017/10/29(日) 23:14:29.92 ID:ILWFk/IO.net]
>>351
クソだと思う
値をチェックする責務は専用のクラスに任せて
それ以外のクラスに持ち込むべきじゃない

361 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 00:07:29.30 ID:RKfFK5VC.net]
>>351
別にいいと思うぞ

作ってからIsValidで確認するか
そもそも作らせないようにするかの違い
どっちのやり方も良し悪しがある



362 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 00:34:24.41 ID:EdHEI0+x.net]
空のオブジェクト作って後でsetter使って入れるのも微妙だしコンストラクタで値チェックとかしていいと思うぞ
俺ならPattern.compileメソッドみたいに自分自身を返すstaticメソッドで価チェックする

363 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 00:44:57.12 ID:sRaOGV/D.net]
>>351
有り得ない状態で存在できるより良い

364 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 00:45:02.55 ID:eddodMAs.net]
>>352
値チェック専用のクラスを作る場合どのように作るべきでしょうか
値チェッククラスでOKだった数値(正の数)をどのようにhogeのコンストラクタに渡すのかいまいち正しいイメージがつかめません
値チェッククラスのインスタンスをhogeの内部に持たせる(フィールドとコンストラクタの引数を変更する)のが良いのでしょうか?
とんちんかんな質問かもしれませんがよければお答えいただけると嬉しいです
>>353
なるほど
isValidメソッドであとからチェックするというのは思い付きませんでした

365 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 01:04:31.28 ID:JH+/yPWP.net]
>>351
>コンストラクタで引数チェックをし、例外を投げる
問題ない
バグでおかしくなるのが一番の問題

366 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 01:12:17.89 ID:RKfFK5VC.net]
Hibernate Validatorみたいなバリデーションフレームワークは一般的に作ってから確認する方式

そもそも作らせないようにするのは”always valid”と呼ばれてる
“always valid model”とかで検索すれば参考になるサイトが出てくる

長所短所を理解して使い分ける

367 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 01:16:09.26 ID:ImI1HNcW.net]
俺だったらPositiveNumberみたいなジェネリッククラスを作るか、@positiveみたいなアノテーション作る

368 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 01:51:11.96 ID:eddodMAs.net]
>>354
ありがとう
>空のオブジェクト作って後でsetter使
>って入れるのも微妙だし
私もそう思ったのですがコンストラクタで例外を投げるのは良くないというような

369 名前:意見をどこかで目にしたので聞いてみました
>>358
ふむふむ
個人的にはそもそも作らせないって方が好みな感じがします
調べてみます情報ありがとう
[]
[ここ壊れてます]

370 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 02:19:42.12 ID:sRaOGV/D.net]
コンストラクタとセッタに同じことを示す文が複製されるのもちょっと良くないな

371 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 03:04:30.08 ID:nQXUW6Dj.net]
>>352
クソ?しかし API にも new した時に例外出すやつ沢山あるわけだが、そういうのは全部クソ?



372 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 07:16:59.94 ID:fX/oTiYO.net]
>>361
コンストラクタで最初に値をセットして後から変更できないようにsetterは持たせないというつもりでした
(フィールドをfinalにしているのはそのためです)

373 名前:デフォルトの名無しさん [2017/10/30(月) 07:22:42.37 ID:b9ZBDRTb.net]
>>356
オブジェクト作る前にValidatorクラスでチェックするだけ

374 名前:デフォルトの名無しさん [2017/10/30(月) 07:24:54.59 ID:b9ZBDRTb.net]
>>362
全部クソ。
オブジェクトの責務をわかっていない。

375 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 08:14:47.50 ID:JH+/yPWP.net]
インスタンス変数(やクラス変数)は
そのオブジェクトに付属するデータだから
コンストラクタなどでデータチェックの責務を
オブジェクト自身に持たせるのはおかしくない

ただしチェックが複雑化したときに
責務を委譲するのもアリ

376 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 08:43:10.77 ID:5RpC60IR.net]
>>366
そのただしが問題
検証はシステムの関心ごとだから
集約するべきでオブジェクト毎に持つものじゃない
コンストラクタはオブジェクトを初期化するという
特別な処理であってここでデータチェックが必要になるのは
責務の分離ができてないシグナルみたいなもの
staticメソッドでtryCreateという名前なら100歩譲ってオーケーだ

377 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 08:54:32.49 ID:5RpC60IR.net]
負の値を持たせたくないのは業務の要件なんですよ!!

378 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 08:55:34.55 ID:JH+/yPWP.net]
>>367
>検証はシステムの関心ごとだから
>集約するべきでオブジェクト毎に持つものじゃない

責務を分離するのは重要だがそのオブジェクトの
規模が大きくなって複雑化するにつれて分けていくもの

たとえば生成の責務をファクトリに分離してもいいが
何でもかんでも全部ファクトリにする必要はない

だからコンストラクタでチェックしてもいいし
バリデータみたいのに分離してもいい

379 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 08:56:23.29 ID:5RpC60IR.net]
思わず激昂してしまいましたがとにかく小生が言いたいのはコンストラクタで例外投げるのおかしいですよということなんです

380 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 09:00:29.54 ID:5RpC60IR.net]
>>369
どっちでもいいなんていうそんな優柔不断で玉虫色な考えに真実があるわけない、あなたは思考を放棄しているに等しい、ここにはこういう値しか保持したくないんです、立派な業務要件でしょうが!!

じゃあその要件をまとめましょうよ、システムの関心ごととして切り出しましょうよ

381 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 09:01:41.86 ID:4hMzyEUs.net]
>>368
業務要件で例外処理を考えてるってなかなかおもしろいね



382 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 09:04:21.57 ID:5RpC60IR.net]
>>372
どういうこと?

383 名前:デフォルトの名無しさん mailto:sage [2017/10/30(月) 09:06:06.45 ID:5RpC60IR.net]
もっと具体的にちゃんと説明して
小生良い事言ってるからそれちゃんと説明して






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<277KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef