[表示 : 全て 最新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/

128 名前:デフォルトの名無しさん [2017/10/13(金) 00:24:47.19 ID:24qBoS+k.net]
>>123
継承を委譲に互換できるようにリファクタリング
する方法はありませんか?

129 名前:デフォルトの名無しさん mailto:sage [2017/10/13(金) 00:39:26.87 ID:uBikma4h.net]
普通に継承を委譲(集約)に
置きかえていけばいいんだよ

130 名前:デフォルトの名無しさん mailto:sage [2017/10/13(金) 08:37:40.23 ID:xmEIYn5a.net]
>>113
なんとこの例は専門的なものだったんですね。
思いつきで考えた例なので申し訳ありませんでした。

>>114
設計がうまくなりたいです。
そうすれば眠る時間も増えそうです……。
(z_z)

>>115
小さなツールというのは再利用可能なクラスということでしょうか?
正直、私の作ったクラスはネストと専用処理だらけで再利用できないのです……。

>>116
怒られたというか、注意されました。
上司、先輩に確信を持ってコーディングしろと……。
担当レベルで「バグ0」にして提出と言われたので、今回のような
質問をしたら、「根性で学んでこい、とにかく動けばいい」と……。
根性で何を学んだらいいのか教えてもらえませんでした。
スレのみなさんの意見で、たぶん「設計」を学ぶと良いのかなと思いました。

131 名前:デフォルトの名無しさん mailto:sage [2017/10/13(金) 08:38:26.90 ID:xmEIYn5a.net]
>>117
丁寧に助かります。
GIT調べてみます。
ユニットテストはprintlnでログを確認してます。
私の開発手順は……
・口頭で「xxxなクラスを作ってくれ」と指示を受ける。
・クラス名を考えて、とりあえず必要そうなフィールドを書く。
・ここで手が止まる。(何か書かなきゃ、そうだ! アクセッサ!)
・全フィールドのアクセッサをかく。(焦る。とにかくメソッド書かなきゃ!)
・時価の商品価格を計算するとしたら、メソッド名(calcPrice)を書く。
・とりあえず分岐はするはず! そうだif文の枠だけ書こう!
・(省略)以下、確信なく恐怖でベタベタ書く……
・ifネスト、forネスト、switchネストな恐ろしいメソッドが1つできあがる。
(アクセッサ抜かすと、大抵はpublicメソッドが1〜2個しかない)
・printlnでログみてテスト。一応動くが、確信は無い。
・(そして大抵は)仕様変更、追加のお知らせが届き、デスマーチへ。
(合間に結果としてのエラーも当然でて、ブレークでトレースしてると
あっというまに1時間経ってます……)

>>118
RP、OMT、調べて参考書探してみます。

>>119
その粒度を小さくするという作業が「設計」ということでしょうか?
数学(簡単なもの)ならその分解作業が可能なのですが、
ことシステム設計になると、とっかかりが見つからないのです……。(><)
数学で言えば、計算式は解けるが、文章題から計算式が導けない感じです。

>>120
エクリプス使っています。
といっても、フォルダ管理と構文チェック、結果ログ見る程度です。

132 名前:デフォルトの名無しさん mailto:sage [2017/10/13(金) 09:32:14.92 ID:GrUYgy4I.net]
>・口頭で「xxxなクラスを作ってくれ」と指示を受ける

この時点で既に常識的な開発現場としてありえないんだが
ユニットテストまでやって仕様変更云々って言ってるってことは
もう詳細レベルまで落とし込んだ仕様があるのに口頭でやってとかありえんだろ
詳細設計書あるならどういう作りすればいいか壊滅的な馬鹿でもない限り誰でもわかるし
作り終わったらテスト仕様書作ってテストするから仕様変更やデスマーチも糞もねぇだろっていう
お前のところ色々おかしいかお前が意地悪されてるか敢えて何かを試されてるか何かだと思うわ

133 名前:デフォルトの名無しさん mailto:sage [2017/10/13(金) 09:44:47.25 ID:GrUYgy4I.net]
ネストしまくるような複雑な条件の仕様を口頭で言うとかありえないから
とりあえず実際にどういう指示されたか書いてみ

134 名前:デフォルトの名無しさん mailto:sage [2017/10/13(金) 09:51:55.46 ID:1VCWZvPT.net]
>>128
いやテストしてないと思う
"ユニットテスト"ってきちんと書かれてるのに「プログラムの動きをテストすること」だと思ってる(だからprintlnという頓珍漢な答が)
https://qiita.com/takehiro224/items/a5d4265c4a1b36b0919c
ともあれ最初の業務でやってるのならツール的なアドバイスは無駄かもしらんね

135 名前:デフォルトの名無しさん [2017/10/13(金) 10:37:26.01 ID:a1m8Fd6w.net]
配列定数はイニシャライザーにおいてのみ使用可能です
これどういう意味ですか?

136 名前:デフォルトの名無しさん mailto:sage [2017/10/13(金) 11:20:18.34 ID:1VCWZvPT.net]
>>131
それ自体はそのまんまの意味だが、配列リテラルを代入し損ねてるときに言われることが多い
その代入の書き方は本当に合ってる? arrじゃなく arr[ ] とかが必要なんじゃない??



137 名前:デフォルトの名無しさん mailto:sage [2017/10/13(金) 15:38:08.18 ID:+zTlsJiZ.net]
>>127
>その粒度を小さくするという作業が「設計」ということでしょうか?
設計の一部だけど全部じゃない
一つの問題に対して解法は一つではないので
複数ある選択肢からどの解法の選択するかが設計の核
問題の分解方法は解法選択の一部


>数学で言えば、計算式は解けるが、文章題から計算式が導けない感じです。
これは問題を明確に定義できてないから
明確に定義されてない問題は解けない

「xxxなクラスを作ってくれ」と指示を受けたらまず以下3点を明確にする
1. なぜそのクラスが必要なのか? クラスの責務は何か?
2. そのクラスに必要なパブリックインターフェースは?
  - 例外を含めた入力・出力の型(メソッドシグニチャ)
3. どういうテストをパスしたら十分なのか?
  - 事前条件、事後条件、不変条件

3点とも指示を出した側に質問する必要がある(嫌がられてもしつこく)
特に3の何ができたら問題を解けたと言えるのかを明確にするのが一番大事


問題の定義と解法の選択、解法の選択の主要な方法として問題の分解がある
算数で考えればものすごく当たり前だよね

138 名前:デフォルトの名無しさん mailto:sage [2017/10/13(金) 16:00:23.53 ID:uBikma4h.net]
>>126
設計を考える上で標準ライブラリを参考にするといい
たとえばどの言語でも日付なんかは標準になってる

そういう共通してて何度もおこなう処理を考えよう
たとえば価格の計算であちこちで何度も
税額を算出してるならメソッドにくくり出すとか

>>127
とりあえずクラス使ってるってだけで手続き的な
オブジェクト指向らしくないコードのようだね

なるべく深いネストは外していこう
メソッドに抽出してその組み合わせで処理する

そうして粒度を細かくすると
クラスやメソッドの数が増えて不安かもしれないが
重複が減るし読み書きしやすいから
その方が全体として作業量は減っていく

139 名前:デフォルトの名無しさん mailto:sage [2017/10/13(金) 21:11:04.47 ID:xmEIYn5a.net]
皆様、いろいろご丁寧にありがとうございます。
指示は先輩が手帳を見ながら口頭で伝えられるので、
それを急いでメモするという感じです。とにかく忙しそうです。
具体的な内容は業務内容に触れてしまうので控えさせてください。

とりあえず、下記のことをやってみようと思います。
・設計の本で良いのがないか本屋で探す。
・仕様詳細をもっと聞く。
・まずクラス図を書いて、責務の粒度を細かくする。
・再利用できるメソッドを作るよう心がける。
 (といっても、どうやればいいのか……)

あとは、みなさんのレスを反芻していきます。
本当にありがとうございました。
最後の質問ですが、設計に関してのおすすめの書籍はありますか?
ぜひ、購入したいと思います。

140 名前:デフォルトの名無しさん mailto:sage [2017/10/13(金) 21:36:38.72 ID:uBikma4h.net]
>>135
>設計に関してのおすすめの書籍

まずJavaやOOP自体に慣れてないなら
『スッキリ Java』が一番やさしい

狭義の設計じゃないけど設計力の土台になるのが
『Javaで学ぶアルゴリズムとデータ構造』

本題の設計は難解な本が多いから
UMLの本とかデザインパターンの本とか個別のテーマで
やさしそうな本から読んでいくのがオススメ

メソッドの抽出とかは『リファクタリング』に
いろんな手法が載ってるから
ある程度JavaやOOに慣れたら読んでみよう

141 名前:デフォルトの名無しさん [2017/10/13(金) 23:16:37.77 ID:JHJOvcP0.net]
>>127
アクセッサは、アノーテーションを付けるだけだろ

テスト駆動開発(TDD)でやる。
最初は関数で処理を作っていき、だんだん高度になってくると、クラスにする

142 名前:デフォルトの名無しさん mailto:sage [2017/10/14(土) 03:37:43.62 ID:mgPn9dNJ.net]
書いてる内容見る限り、立ち位置的に設計云々とかクラス図とか
考えるレベル以前の問題で職場の奴はそういうのは求めてないように見える
言われて作ったクラスがどういう使われ方してるのかもよくわからんし
書いてる事から想像するに、勉強も兼ねた誰かの手伝いとして適当に使われてるだけだろ
いずれにしても作業指示の仕方が糞すぎるからそこは辞めた方がいいよ

143 名前:136 mailto:sage [2017/10/14(土) 04:10:51.25 ID:ZBYXJflL.net]
>>136
>『Javaで学ぶアルゴリズムとデータ構造』
あっ今検索したら同名の書籍があったけど
望洋の明解シリーズの奴ね
図解が多くて分かりやすいから

144 名前:デフォルトの名無しさん mailto:sage [2017/10/14(土) 09:07:23.00 ID:9JuWfEXp.net]
>>135
> ・再利用できるメソッドを作るよう心がける。
1, これは再利用するだろうなってのをメソッド化
2, この処理は別の所でもやったなってのをメソッド化
3, 機能毎にメソッド化(分割や統合)できそうだなってのをメソッド化
他にもあるだろうけどこんな感じでいいよ

145 名前:デフォルトの名無しさん mailto:sage [2017/10/14(土) 09:38:10.74 ID:5+/c+cYf.net]
自宅で自分用の(自分で勉強するための)プログラムを書いて慣れるというのがいちばんだと思う
業務指令で範囲限定されたコードだけ書いててもまっっっったくメソッド感覚(?)は身につかないよ
だって「そんなことしなくても動く」もの、業務中にやる理由ないよね

146 名前:デフォルトの名無しさん mailto:sage [2017/10/14(土) 10:59:53.02 ID:K4XROtS+.net]
口頭で伝えるのは後から改変するための常套手段
証拠は残さない



147 名前:デフォルトの名無しさん mailto:sage [2017/10/14(土) 11:03:35.03 ID:K4XROtS+.net]
なぜこのクラスが必要なのですかと訊くと
キレ気味にいいから黙ってやれと言われる
別にイヤとかやりたくないとかじゃないんだけど適当な仕様だと文脈背景わからないと間違いの元
他の奴が黙ってやっちゃうから味を占めたんだろうな
また無駄な後戻り工数が生まれて実装のせいにされる

148 名前:デフォルトの名無しさん mailto:sage [2017/10/14(土) 11:22:15.08 ID:+XwGR1nT.net]
わかってないだけだって
人はわからないことを聞かれた時に不機嫌になるってのはわかるだろ

149 名前:デフォルトの名無しさん mailto:sage [2017/10/14(土) 11:24:26.80 ID:+XwGR1nT.net]
>>142
そのせいなのかメールで聞くと返事が返ってこないやつはマジでイラつく
そういう奴は無責任の意気地なしとみなす

150 名前:デフォルトの名無しさん mailto:sage [2017/10/14(土) 13:23:40.40 ID:ZBYXJflL.net]
>>135
>・再利用できるメソッドを作るよう心がける
間違ってもいないんだけど実際には

最初から再利用を目指すより
リファクタリングで重複した処理を
メソッドに切り出す方が簡単なんだけど

「動いた物をいじるな」という職場だと
まあそっちもそっちで難しいよな

151 名前:デフォルトの名無しさん mailto:sage [2017/10/14(土) 13:24:19.64 ID:lMgWewwv.net]
>>145
口頭で聞いた後に

先程の備忘です。
認識齟齬などあれば返信にて訂正願います。

とかなんとか理由付けてこっちからメール送ればいい
一手間かかるけどある程度身を守れる

152 名前:デフォルトの名無しさん [2017/10/14(土) 13:44:26.23 ID:YpZiBRe4.net]
>>142
じゃあ録音しとけ。
または忘れやすいということにして詳細にメモをする。

153 名前:デフォルトの名無しさん mailto:sage [2017/10/14(土) 19:47:58.75 ID:/I4SGVxg.net]
>>136
書店で推薦書を購入し、
1「スッキリ」の2冊
2「Javaで学ぶアルゴリズムとデータ構造(明快シリーズ)」
の順番が良いかと思いましたので、
本日からスッキリを学んでいこうと思います。
ありがとうございました。

>>138
おっしゃる通り、重要業務は任されていないと思います。
今はとにかくスキルを上げたいと考えています。

>>140
たぶん再利用可能メソッドは標準ライブラリで提供されているような
ものだろうと思っています。
なんとかくくり出せるように考えてみます。

>>146
デザインパターンをマスターすると保守しやすいクラスや
メソッドになると知りました。
デザインパターンとリファクタリングも学んだほうが良いようですね。

154 名前:デフォルトの名無しさん mailto:sage [2017/10/15(日) 01:07:03.66 ID:y0fiNdyH.net]
今から「スッキリ」で勉強を始める、素人か。
そんな奴に、一々説明していたら、数年かかる

オブジェクト指向を知らない奴は、仕事でプログラミングしたら、いけないレベル

少なくとも、Java の本を10冊読んで、資格や数年以上の経験が必要

155 名前:デフォルトの名無しさん mailto:sage [2017/10/15(日) 01:23:31.23 ID:hZRxEBGG.net]
本10冊くらいはそりゃ読む必要あるけど
資格や経験年数はほとんど関係ないよ
本人の素質と努力次第

156 名前:デフォルトの名無しさん mailto:sage [2017/10/15(日) 01:38:06.25 ID:h2ngFzeR.net]
新卒?中途採用?
何歳か知らんけどプログラミングほとんどやったことないなら
普通研修みたいなの1か月ぐらいは与えられるもんだが今がそれなのか?



157 名前:デフォルトの名無しさん [2017/10/15(日) 01:56:56.82 ID:ZgJv24or.net]
その辺はその会社次第なんじゃないの? 教育やる余裕がない小さい会社とか
大きくてもその辺のこと分かってない会社とか色々あるだろうし。

ま、しかし、基本的にワザは教えて貰うよりは盗んだ方が良いだろうな。
自分で求めてこうだと分かったことなら忘れないが教えて貰ったことは忘れるから。

なんてことをこの前テレビで坊さんが言っているのを聞いてその通りだと思った。

158 名前:デフォルトの名無しさん mailto:sage [2017/10/15(日) 02:43:30.36 ID:XpJLTK+d.net]
Javaの「スッキリ」はRPGで言うと
「ひのきの棒」や「竹のやり」みたいな初期装備だが
丸腰よりはるかにマシ
「明解」でやっと「銅のつるぎ」

ファウラーの「リファクタリング」や
GOFのデザパタやエヴァンスのDDD本は
もっと高級な剣だが
レベルが足りないと装備できない

159 名前:デフォルトの名無しさん mailto:sage [2017/10/15(日) 08:18:45.28 ID:RBDvyi+r.net]
ひのきの棒という役割を演じるゲームか
シュールだな

160 名前:デフォルトの名無しさん mailto:sage [2017/10/15(日) 15:24:42.40 ID:atfl3lAe.net]
>>154
そのスッキリは入門編(黄緑の方)のことですよね?

161 名前:デフォルトの名無しさん mailto:sage [2017/10/15(日) 18:51:46.03 ID:XpJLTK+d.net]
>>156
そうだよ

でもスッキリ2冊読んで終わりとか
それほど甘くはないよ
スッキリは基本的に初心者向け

162 名前:デフォルトの名無しさん mailto:sage [2017/10/15(日) 18:53:06.03 ID:XpJLTK+d.net]
>>155
本が役割ってのがよく分からない

163 名前:デフォルトの名無しさん [2017/10/16(月) 16:09:19.43 ID:4dXapby2.net]
オブジェクト指向はあまり良くないだろな。
GUIと相性が良かっただけで、その他一般的な問題とは親和性が低い。

164 名前:デフォルトの名無しさん mailto:sage [2017/10/16(月) 19:04:15.39 ID:BLPcXnhp.net]
オブジェクト指向が一番汎用的だと思う
DDDがOOメインなのもそこだし

165 名前:156 mailto:sage [2017/10/16(月) 20:19:21.78 ID:tOLHzrTo.net]
>>157
レスが遅くなってすいません。

そうですよね、ありがとうございます。
でも今の自分には実践編(緑の本)の中盤以降が結構難しいです…。

166 名前:デフォルトの名無しさん mailto:sage [2017/10/17(火) 14:09:59.12 ID:ywtVys1/.net]
オブジェクト指向がマッチしないと言っているのは
設計を構造化とかどやっといて
オブジェクト指向プログラミング使えないと言ってる奴がよくいる
機能とか流れって出てきたら注意



167 名前:デフォルトの名無しさん [2017/10/17(火) 14:22:15.60 ID:H+HUM8Ad.net]
オブジェクト指向がよくわかってないからマッチさせられないだけではないか?

168 名前:デフォルトの名無しさん [2017/10/18(水) 10:19:44.01 ID:LGKAL/cG.net]
>>156
リストの頭だけを掻き集めてリスト化したような良書ではある

169 名前:デフォルトの名無しさん [2017/10/18(水) 11:33:37.26 ID:NAca40Iu.net]
Javaスレ少なくなったなあ。

170 名前:デフォルトの名無しさん mailto:sage [2017/10/18(水) 12:05:23.13 ID:W6T+19ej.net]
ことりんに横取りされちゃう

171 名前:デフォルトの名無しさん [2017/10/18(水) 12:11:48.42 ID:NAca40Iu.net]
メモリー使用量が個人利用の壁になっているんだろうな。

172 名前:デフォルトの名無しさん mailto:sage [2017/10/18(水) 18:27:07.39 ID:cbmCwNcY.net]
Javaの個人利用が難しいのは
安いレンサバで使えないのが大きいのでは

173 名前:デフォルトの名無しさん mailto:sage [2017/10/18(水) 22:32:18.55 ID:FgeE42WT.net]
大抵PHP.良くてPython.ruby止まりかな

174 名前:デフォルトの名無しさん [2017/10/19(木) 03:47:23.04 ID:ymhc97rd.net]
何故使えるようにならなかったのか考えないのがJavaユーザぽくていいよね。

175 名前:デフォルトの名無しさん mailto:sage [2017/10/19(木) 09:32:34.88 ID:vpgxLHGK.net]
スクリプト言語はその場で書き直しゃ動くからねぇ
JavaとかC#とかはビルド→デプロイまたは
ビルド→パッケージング→デプロイとか面倒
GAEはどこまでショートカットしてくれるのか知らん

176 名前:デフォルトの名無しさん mailto:sage [2017/10/19(木) 12:11:01.39 ID:gt24D1Vb.net]
俺って大体そこらへんの能無しより2倍ぐらい仕事早いほうなんだけど
金融系の内部管理システムで1画面にボタンが20個ぐらいあって
段階的に5回ぐらい認証する機能で鬼のように状態持ってるから
設計書の相関チェックも凄いことになってて当然こんなレベルの機能だと
設計書にも不備ありまくりで実装してく度に何十回も設計者と確認しないといけないレベルで
外部結合で持ってくる情報も鬼の用にあるからSQLも100行超えるわ
外部ファイルも取り込んだりするわでエビデンスのページ数も余裕で100ページ越えるレベルで
これが最初テスト完了まで2週間ぐらいの線表で
毎日残業して1か月かけて作ったらプロパーが後ろで「こんだけ時間かけられるとは思わなかったわ」とか
嫌味言ってくるのが典型的な能無し無能システム会社なんだよな



177 名前:デフォルトの名無しさん mailto:sage [2017/10/19(木) 12:22:12.67 ID:gjuTpzaj.net]
で?

178 名前:デフォルトの名無しさん [2017/10/19(木) 12:24:42.39 ID:ScM6nrf0.net]
そういう無理のあるものを断れない立場に居ること事態が既に能のある状態とは言えない

179 名前:デフォルトの名無しさん mailto:sage [2017/10/19(木) 12:41:04.00 ID:gt24D1Vb.net]
過疎ってるから暇つぶしに書いただけだ
プログラムやらず嫌いのプロパーしかいない無能会社の中でも大ハズレの部類
当たりはバグ調査が全然できないプロパーがいるところのバグ調査担当

180 名前:デフォルトの名無しさん mailto:sage [2017/10/19(木) 12:43:13.55 ID:PZ5DzTeM.net]
書かなくていいです

181 名前:デフォルトの名無しさん mailto:sage [2017/10/19(木) 12:47:12.90 ID:q54VEuRQ.net]
JDK 8u151と8u152、2つ出てるけどどっちをインストールすればいいの?

182 名前:デフォルトの名無しさん [2017/10/19(木) 12:59:35.28 ID:ymhc97rd.net]
リリースノート。

183 名前:デフォルトの名無しさん mailto:sage [2017/10/19(木) 14:39:13.91 ID:wexIKijw.net]
>>171
スクリプトでもバージョン管理してるから他で書いてやっぱりデプロイしてる
個人でも

184 名前:デフォルトの名無しさん [2017/10/19(木) 18:18:57.97 ID:r3vXhCvd.net]
ストリームバッファについて質問です。どれがいいのでしょうか?

FileInputStream fis=new FileInputStream("file");
0.
InputStreamReader r=new InputStreamReader(fis);
1.
InputStreamReader r=new InputStreamReader(new BufferedInputStream(fis));
2.
BufferedReader r=new BufferedReader(new InputStreamReader(fis));
3.
BufferedReader r=new BufferedReader(new InputStreamReader(new BufferedReader(fis)));

そもそもバッファの効果もよくわかってません

185 名前:デフォルトの名無しさん [2017/10/19(木) 18:21:13.65 ID:r3vXhCvd.net]
訂正
3.
BufferedReader r=new BufferedReader(new InputStreamReader(new BufferedInputStream(fis)));

186 名前:デフォルトの名無しさん [2017/10/19(木) 18:53:03.92 ID:QK/nH8m0M]
String型の数字をInt型で格納するソースファイルを作りたいと思っているんですが
以下の様に記述せずNumberFormatExceptionはソースファイルで解決する方法はどうしたらよろしいでしょうか


String[] num = {"1000","","aaa"};
try{
    setInt(Integer.parseInt(num[0]));
    setInt(Integer.parseInt(num[1]));
    setInt(Integer.parseInt(num[2]));
} catch(NumberFormatException e) {
setInt(0);
}



187 名前:デフォルトの名無しさん mailto:sage [2017/10/19(木) 21:44:03.04 ID:dFFGzMdP.net]
BufferedReader br = Files.newBufferedReader(path,charset)

188 名前:デフォルトの名無しさん [2017/10/20(金) 09:35:26.11 ID:swuaN5aR.net]
>>180
バッファがあると一回の読み書きに時間が掛かる機器の場合に効率が良くなって速度が上がる可能性がある。

例えばHDD。一回の読み書きが遅いのでまとめて読んだり書いたりした方が速度は上がる。
ということでファイル入出力にはバッファがあった方が良い。

189 名前:デフォルトの名無しさん [2017/10/20(金) 09:42:05.09 ID:VprmOZRL.net]
どのくらい早くなりますか?

190 名前:デフォルトの名無しさん mailto:sage [2017/10/20(金) 10:04:52.52 ID:D9t+ZWOa.net]
その手の質問には「1万回繰り返すと2倍くらい違う」と答えることにしてる

191 名前:デフォルトの名無しさん [2017/10/20(金) 10:20:18.18 ID:VprmOZRL.net]
100回繰り返した場合はどうですか?

192 名前:デフォルトの名無しさん mailto:sage [2017/10/20(金) 10:30:19.12 ID:D9t+ZWOa.net]
割合算でいいんじゃないの
つまり速い方に書き換えると「その部分だけが」2%くらい速い
そこの処理が0.03秒だった場合は処理速度が0.0294秒になって0.0006秒の改善になる

どっちかってと速度なんかじゃなくHDDとメモリ酷使するのを良しとするかどうかで動作決めていいよバッファ系は

193 名前:デフォルトの名無しさん [2017/10/20(金) 10:40:23.48 ID:VprmOZRL.net]
OSはバッファしないのですか?

194 名前:デフォルトの名無しさん mailto:sage [2017/10/20(金) 12:01:07.16 ID:PeRsjtc9.net]
ググレカス

195 名前:デフォルトの名無しさん mailto:sage [2017/10/20(金) 12:44:07.68 ID:q2wuGssb.net]
>>189
するよ
そこまで行ったならオブジェクト生成コストやGC負荷とアルゴリズム、加えて「コ ン パ イ ラ が 完 全 最 適 な オ ブ ジ ェ ク ト 構 成 に 置 き 換 え て く れ る」まで考えて、
結局は実際に計測して遅くなきゃいいや、人力脳内最適化は無意味でクソである、といういま一番トレンドな結論に至る
おめでとう

196 名前:デフォルトの名無しさん [2017/10/20(金) 12:44:37.57 ID:Gvoola1V.net]
ヨハン・セバスチャン



197 名前:デフォルトの名無しさん [2017/10/20(金) 13:02:09.19 ID:PCOS2CdI.net]
>>185
接続されてるHDDやプログラムがどのぐらい細切れにデータを読み書きするかで変わる。
ま、なんだったら自分でバッファありとなし作って試してみな。だいたいはバッファありの方が速くなる筈。

速度差が出ないとか、むしろ遅くなる場合はバッファの大きさがそのプログラムでの一度の読み書き量に対して適切ではないとか接続されているHDDに対して適切ではないのかも知れない。
あるいは最初から適切だったためにバッファありにしても殆ど変わらないかかな。固定長の大きな電文を自分で作ってその単位で読み書きする場合はその電文の塊がバッファみたいなものなので変化がないかも知れない。

198 名前:デフォルトの名無しさん mailto:sage [2017/10/20(金) 14:59:15.51 ID:vmKCrAVU.net]
特定環境だけ意識するのか

199 名前:デフォルトの名無しさん [2017/10/20(金) 16:29:37.22 ID:umJD7f7O.net]
HDDはあまり関係ないような気がする。

200 名前:デフォルトの名無しさん [2017/10/20(金) 16:37:33.80 ID:umJD7f7O.net]
OSはほぼ確実にバファリンしてるのでHDDの読み書きではなく、システムを呼び出すオーバーヘッドで
変わるだけじゃないだろか。

201 名前:デフォルトの名無しさん [2017/10/20(金) 16:42:56.58 ID:umJD7f7O.net]
BufferedReaderを使うとシステム呼び出し回数が減らせるのでスレッドの切り替え確率が
減るという説明のほうが納得がいくような気がスルスル。

202 名前:デフォルトの名無しさん mailto:sage [2017/10/20(金) 22:57:05.24 ID:h7aVEIq7.net]
OS・HDD は、バッファリングしてる

だから突然の電源断により、書き込まれない事があるため、
必ず正常にシステムを終了させること

普通OSは、5秒ごとに、HDDに書き込む

フラッシュメモリーには、書き込み回数の上限があるため、
SSD の書き込み回数が気になるなら、15秒ごとに書き込むように設定できる

203 名前:デフォルトの名無しさん [2017/10/21(土) 02:10:59.27 ID:x42CzbVN.net]
Javaの最大の欠点は100kbのデータを扱うプログラムにGBクラスのメモリーが必要になるような
効率の悪さ。

204 名前:デフォルトの名無しさん mailto:sage [2017/10/21(土) 02:34:16.89 ID:mk4nuw3r.net]
?

205 名前:デフォルトの名無しさん mailto:sage [2017/10/21(土) 02:58:50.47 ID:g5bh72yL.net]
https://i.imgur.com/ex4qwLj.jpg
大学の課題なんだが、for文のi<5のあとにlengthをつけなくてもこの課題は解決できるのかを教えてくれ。

206 名前:デフォルトの名無しさん mailto:sage [2017/10/21(土) 03:49:35.47 ID:W+SO0xqJ.net]
>>199
どういう場合にそうなんの?
普通なら大丈夫なんじゃね



207 名前:デフォルトの名無しさん mailto:sage [2017/10/21(土) 03:59:19.02 ID:W+SO0xqJ.net]
>>201
この問題
「am[0]」の使い方に違和感があるな

AMCounterクラスとか作って
カウントの責務を分離したい感じがする

208 名前:デフォルトの名無しさん mailto:sage [2017/10/21(土) 04:08:37.48 ID:g5bh72yL.net]
>>203
3つ目のクラスを作るってことか?それはまだ習ってないからそうしないのかも。

209 名前:デフォルトの名無しさん [2017/10/21(土) 04:20:38.55 ID:xu+p9cdr.net]
>>203
ああ。違和感あるな。これダメな設計だよなあ?

am[0].countAutomobile() や am[0].countHeavy() でカウントした結果が出るということは
new Automobile() した時にコンストラクタで Automobile クラス内にある static のクラス変数の
カウントをしていて countAutomobile() や countHeavy() メソッドでそれを読み出すという
ことになるが、そんなクラスは一つのVMで同時に一つしか動かせない。複数のスレッドで
同時に使おうとすると意図した通りに動かない。Java のクラスとしてはなんだかとても
嫌なクラスだ。

210 名前:デフォルトの名無しさん [2017/10/21(土) 10:41:58.06 ID:PVB7G2Ex.net]
ハイエークラスに集計メソッドを持たせてはどうか。

211 名前:デフォルトの名無しさん [2017/10/21(土) 10:42:56.10 ID:PVB7G2Ex.net]
せっかくだからシークエルを渡せるようにしてはどうか。

212 名前:デフォルトの名無しさん mailto:sage [2017/10/21(土) 14:19:09.90 ID:L87nxTYD.net]
>>201
可能

5台と固定だから付ける意味ないんじゃないかな
クラス変数の挙動を知る課題かな
その使い方や設計としては悪いが

213 名前:デフォルトの名無しさん mailto:sage [2017/10/21(土) 15:37:16.16 ID:ej0bNcSX.net]
>>201
amもweightも同じ要素数だから5回繰り返せばぴったりじゃん

214 名前:デフォルトの名無しさん [2017/10/21(土) 15:47:20.68 ID:PVB7G2Ex.net]
ぴったりじゃん?

215 名前:デフォルトの名無しさん mailto:sage [2017/10/21(土) 16:49:24.05 ID:oMtVUNUR.net]
何この糞問題wwwひっでぇな・・マジで
これ作ったの教員?生徒?
なんで配列の一要素でしかないクラスが配列全体の情報を持ってこれるんだよw
こんなレベルだと生徒もダメになるゴミ問題だな

216 名前:デフォルトの名無しさん mailto:sage [2017/10/21(土) 16:53:51.90 ID:oMtVUNUR.net]
しかもこれで大学だからなwww
>201も相当な馬鹿っぽいし100%Fランだなw



217 名前:デフォルトの名無しさん mailto:sage [2017/10/21(土) 16:58:21.30 ID:oMtVUNUR.net]
あーこれあれかw
最初から車の総数と大型車の台数わかってるから
countAutomobileとcountHeavyは5台と2台を直打ちで返すようにしてるだけなのかwww
中学校のマイコン倶楽部の問題かよwwwwwww

218 名前:デフォルトの名無しさん mailto:sage [2017/10/21(土) 17:35:53.13 ID:g5bh72yL.net]
>201です。みんな色々とありがとう。まあFランなのは否定しないですw lengthなくてもいけるのはわかったのでもうちょい頑張ってみます

219 名前:デフォルトの名無しさん mailto:sage [2017/10/21(土) 17:58:44.98 ID:ZBz0JWdz.net]
countAutomobile()やcountHeavy()は
コレクションクラスに持たせるのが普通でしょ
AMCounterクラス作って切り出すほどでもない
この規模ならHighwayクラスのメソッドでも十分

for文の中括弧省略はアンチパターン
あと大型車を数えるのにcountHeavy()という名前は不適切

220 名前:デフォルトの名無しさん mailto:sage [2017/10/21(土) 18:16:41.12 ID:g5bh72yL.net]
>>215
まあ一応課題に沿って作成しないといけないんで与えられたクラス内でやるしかないみたいです。ご指摘ありがとうございます。

221 名前:デフォルトの名無しさん mailto:sage [2017/10/21(土) 18:22:53.02 ID:W+SO0xqJ.net]
>>205
その通りだね
課題の範囲だとstatic使うくらいしかないよな

>>206
それもアリだと思う
countメソッドはAutomobileよりかは
Highwayが持つ方が自然

ただ何を作るかにもよるけど
Highwayが将来的に肥大化しそうだから
Counterクラスに切り出す場合もありそう []
[ここ壊れてます]

223 名前:デフォルトの名無しさん mailto:sage [2017/10/21(土) 18:27:25.26 ID:W+SO0xqJ.net]
>>215
コレクションクラスでもいいというか
課題だとそっちの方がいいね

ただ課題のはサンプルコードで超小規模だけど
実用的なプログラムだと
カウントの仕方が多種類で複雑になるから

224 名前:デフォルトの名無しさん mailto:sage [2017/10/21(土) 18:28:53.58 ID:CGeTMVG8.net]
俺様が素晴らしい解答を用意してやったぞ
但し実行結果は見てない

class Automobile {
private static AtomicInteger count = new AtomicInteger();

private static AtomicInteger weight = new AtomicInteger();

public Automobile(int weight) {
this.weight.addAndGet(weight);
}

public int countAutomobile() {
return count.incrementAndGet();
}

public int countHeavy() {
return this.weight.get();
}
}

225 名前:デフォルトの名無しさん mailto:sage [2017/10/21(土) 18:37:22.59 ID:CGeTMVG8.net]
よく考えたらincrementAndGetはコンストラクタでやるしかねえな
オブジェクト作る意味無いコード書いたの初めてだから中途半端なコードになっちまった

226 名前:デフォルトの名無しさん mailto:sage [2017/10/21(土) 18:42:09.63 ID:oMtVUNUR.net]
ダメだ・・このあまりに低レベルな流れ見てると吐き気がしてくる・・
問題の質があまりに低レベルなの見れば設計とかそういう以前の問題で真面目に考える余地なんかないのに
staticだのコレクションだの将来性だのアホか・・



227 名前:デフォルトの名無しさん mailto:sage [2017/10/21(土) 19:10:52.71 ID:3cF6dV6+.net]
>>221
だったら参加しなきゃいいのに
この話題が何日も続くわけじゃあるまいし

228 名前:デフォルトの名無しさん mailto:sage [2017/10/21(土) 19:17:48.71 ID:L87nxTYD.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