タグ付けされた質問 「java」

Javaは、元はSun Microsystemsによって開発された、プラットフォームに依存しない高レベルのオブジェクト指向プログラミング言語です。Javaは現在、2010年にSunを購入したOracleが所有しています。

10
「適切な」プログラミングはもはや重要ではありませんか?
暇なときにAndroidゲームを作成しています。libgdxライブラリを使用しているので、かなり面倒な作業が行われます。 開発中に、いくつかの手順で不注意にデータ型を選択しました。連想配列に近いものが欲しかったため、ハッシュテーブルを使用しました。人間が読めるキー値。同様のことを達成する他の場所では、ベクトルを使用します。libgdxにはvector2およびvector3クラスがありますが、それらを使用したことはありません。 奇妙な問題に遭遇し、Stack Overflowでヘルプを検索すると、特定のデータ型が技術的に「適切」である場合に、特定のデータ型を使用する質問を多くの人がリーミングしています。ArrayListを使用するのと同様、定義済みの境界を必要としないため、新しい既知の境界でint []を再定義します。または、次のような些細なことでも: for(int i = 0; i < items.length; i ++) { // do something } 私はそれがすべての反復でitem.lengthを評価することを知っています。ただし、アイテムが15〜20個を超えることはありません。したがって、繰り返しごとにitems.lengthを評価する場合は注意が必要ですか? いくつかのテストを実行して、先ほど説明した方法と適切な方法を使用してアプリがどのように動作するかを確認し、チュートリアルに従って、コミュニティから提案された正確なデータ型を使用しました。結果:同じこと。平均45 fps。電話とgalaxyタブですべてのアプリを開きました。変わりはない。 だから私はあなたへの私の質問はこれだと思う:それは適切であることがもはや重要ではないときにしきい値はありますか?「仕事をやり遂げる限り、私は気にしませんか?」と言っても大丈夫ですか?

7
Javaのジェネリックの何が問題になっていますか?[閉まっている]
このサイトで、Javaによるジェネリックの実装を非難する投稿を何度か見ました。今、私は正直に言って、私はそれらを使用することに何の問題もなかったと言うことができます。しかし、私は自分でジェネリッククラスを作成しようとしませんでした。では、Javaの汎用サポートに関する問題は何ですか?
49 java  generics 

8
Javaを商用利用できますか?
JavaはGPLライセンスです(ウィキペディアからの参照)。商用プロジェクトで使用できるかどうかはわかりません。私はすでにJavaで書かれたWebサイトを持っているので、これを商用で使用する予定です。それは違法ですか?
49 java  licensing  bcl 

6
クラスをそれ自体のリストのサブクラスとして定義することの欠点は何ですか?
私の最近のプロジェクトでは、次のヘッダーを持つクラスを定義しました。 public class Node extends ArrayList<Node> { ... } しかし、私のCS教授と話し合った後、彼はこのクラスは「記憶にとって恐ろしい」と「悪い練習」の両方になるだろうと述べました。前者は特に真実であり、後者は主観的であるとは思っていません。 この使用法の理由は、インスタンスの動作をカスタム実装または相互作用する複数の同様のオブジェクトの動作のいずれかによって定義できる、任意の深さを持つことができるものとして定義する必要があるオブジェクトのアイデアがあったことです。これにより、物理的な実装が相互作用する多くのサブコンポーネントで構成されるオブジェクトの抽象化が可能になります。¹ 一方で、これがいかに悪い習慣になるかがわかります。何かをそれ自体のリストとして定義するという考えは、単純でも物理的にも実装可能ではありません。 私がなぜ任意の有効な理由があるべきではない、それは私の使用を考慮すると、私のコードでこれを使うには? ¹これをさらに説明する必要がある場合、私は喜んでいるでしょう。この質問を簡潔にしようとしています。

3
どちらがより良い習慣ですか-インスタンスまたは静的としてのヘルパーメソッド?
この質問は主観的なものですが、ほとんどのプログラマーがこれにどのようにアプローチしているかに興味がありました。以下のサンプルは擬似C#ですが、これはJava、C ++、およびその他のOOP言語にも当てはまります。 とにかく、クラスでヘルパーメソッドを記述するとき、静的メソッドとして宣言し、ヘルパーメソッドで必要な場合はフィールドを渡すだけです。たとえば、以下のコードを考えると、メソッド呼び出し#2を使用することを好みます。 class Foo { Bar _bar; public void DoSomethingWithBar() { // Method Call #1. DoSomethingWithBarImpl(); // Method Call #2. DoSomethingWithBarImpl(_bar); } private void DoSomethingWithBarImpl() { _bar.DoSomething(); } private static void DoSomethingWithBarImpl(Bar bar) { bar.DoSomething(); } } これを行う私の理由は、ヘルパーメソッドが実装を読み取らなくても、他のオブジェクトに副作用がある可能性があることを(少なくとも私の目には)明らかにするからです。この手法を使用するメソッドをすばやく理解できるため、デバッグに役立ちます。 あなたはどちらか好む独自のコードでやってそうするためのあなたの理由は何ですか?

4
メソッドが複数のタイプのチェック済み例外をスローしないのはなぜですか?
SonarQubeを使用してJavaコードを分析しますが、このルール(クリティカルに設定)があります。 パブリックメソッドは最大で1つのチェック済み例外をスローする必要があります チェック例外を使用すると、メソッド呼び出し元はエラーを伝播または処理することでエラーを処理します。これにより、これらの例外はメソッドのAPIの一部になります。 呼び出し元の複雑さを合理的に保つために、メソッドは複数の種類のチェック済み例外をスローするべきではありません。」 ソナーの別のビットにはこれがあります: パブリックメソッドは最大で1つのチェック済み例外をスローする必要があります チェック例外を使用すると、メソッド呼び出し元はエラーを伝播または処理することでエラーを処理します。これにより、これらの例外はメソッドのAPIの一部になります。 呼び出し元の複雑さを合理的に保つために、メソッドは複数の種類のチェック済み例外をスローするべきではありません。 次のコード: public void delete() throws IOException, SQLException { // Non-Compliant /* ... */ } 以下にリファクタリングする必要があります。 public void delete() throws SomeApplicationLevelException { // Compliant /* ... */ } オーバーライドするメソッドはこのルールによってチェックされず、いくつかのチェックされた例外をスローできます。 例外処理に関する私の読書でこの規則/推奨事項に出くわしたことは一度もなく、このトピックに関する標準、議論などを見つけようとしました。私が見つけた唯一のことはCodeRachからのこれです:メソッドは最大でいくつの例外をスローする必要がありますか? これは広く受け入れられている標準ですか?

6
`c> = '0'`または` c> = 48`をチェックする方が良いですか?
同僚と話し合った後、ベストプラクティスに従って、Javaでcharデータ型をどのように扱うかについて「哲学的な」質問をしました。 入力としてString 's'が与えられた場合、その中に存在する数字の数を数える必要がある単純なシナリオ(明らかに、これは私の質問に練習の意味を与えるための非常に単純な例です)を想定してください。 これらは2つの可能な解決策です: 1) for(int i=0; i<s.length(); i++) { if(s.charAt(i) >= 48 && s.charAt(i) <= 57) { n++; } } 2) for(int i=0; i<s.length(); i++) { if(s.charAt(i) >= '0' && s.charAt(i) <= '9' ) { n++; } } どちらがより「クリーン」でJavaのベストプラクティスに準拠していますか?

6
Javaコレクションを意味のあるクラス名でマスクする良い習慣か悪い習慣ですか?
最近、私は人間に優しいクラス名でJavaコレクションを「マスキング」する習慣を身につけています。いくつかの簡単な例: // Facade class that makes code more readable and understandable. public class WidgetCache extends Map<String, Widget> { } または: // If you saw a ArrayList<ArrayList<?>> being passed around in the code, would you // run away screaming, or would you actually understand what it is and what // it …


5
C#開発者として、Javaを学習してAndroid用に開発するか、代わりにMonoDroidを使用しますか?[閉まっている]
私は、C#に精通していると思います。現時点では私の選択言語であり、基本的に私の専門的な経験はすべてここにあります。 それでも、MonoDroidプロジェクトの存在に戸惑っています。私の理解では、C#とJavaは非常に近いということです。例えば、あなたが一方を知っていれば、もう一方を本当に素早く学ぶことができます。ですから、最初のAndroidアプリの開発を検討しているとき、Javaを使い始めて、学習しながら学習するのに十分なJavaに精通していると思いました。 これは、Java Android SDKよりも機能豊富ではない可能性が高いMonoDroidを使用するよりも理にかなっていないのでしょうか。あなたが経験している技術にこだわるよりも、新しい言語(そして、その時点で非常に人気のある言語)を学び、その言語で経験を積む方がいいと思います。で、それ以上の貴重なスキルを獲得することなく。 たぶん、私は平均的な潜在的なMonoDroidユーザーをひどく間違って伝えています。たぶん、Javaと.NETの経験があり、.NETを好む人にとってはもっといいでしょう。または多分(実際にはそうであるかもしれません)私がちょうど考慮しなかった他の要因があります。Javaを使用してAndroid用に開発するのではなく、なぜMonoDroidを使用するのでしょうか?
46 java  c#  .net  android  monodroid 

5
Builderパターン:いつ失敗するか?
Builderパターンを実装するとき、私はしばしば、ビルドを失敗させるタイミングに戸惑いを感じ、数日ごとにその問題について異なる立場を取ることさえできます。 最初にいくつかの説明: 初期の失敗私は、無効なパラメータが渡されるように、オブジェクトを構築するとすぐに失敗することを意味しています。だから、内側SomeObjectBuilder。 後半に失敗し、私は唯一のオブジェクトを構築する上で失敗する可能性があることを意味build()暗黙オブジェクトのコンストラクターを構築するために呼び出すコール。 次に、いくつかの引数: 失敗を遅らせるために:ビルダークラスは、単に値を保持するクラスにすぎないようにします。さらに、コードの重複が少なくなります。 早期の失敗を支持する:ソフトウェアプログラミングの一般的なアプローチは、できるだけ早く問題を検出することです。したがって、チェックする最も論理的な場所は、ビルダークラスのコンストラクター、「セッター」、最終的にはビルドメソッドです。 これについての一般的なコンセンサスは何ですか?

6
決して公開されることのないコードの防衛的なプログラミング慣行に従うことはどのくらい必要ですか?
私はカードゲームのJava実装を書いているので、ゾーンと呼ぶ特別なタイプのコレクションを作成しました。Javaのコレクションのすべての変更メソッドはサポートされていませんが、ゾーンAPIにmove(Zone, Card)は、指定されたゾーンからそれ自体にカードを移動するメソッドがあります(パッケージプライベートテクニックによって達成されます)。これにより、ゾーンからカードが取り出されず、単に消えることを保証できます。別のゾーンにのみ移動できます。 私の質問は、この種の防御コーディングはどのくらい必要ですか?それは「正しい」ことであり、正しい実践のように感じますが、Zone APIが公共図書館の一部になることは決してありません。それは私だけのためです。したがって、標準のコレクションを使用することでおそらくより効率的になる可能性があるときに、自分からコードを保護しているようなものです。 このゾーンのアイデアをどこまで取り入れるべきですか?誰でも私が書いているクラス、特に実際に公開されないものについては、契約を保存することについてどれだけ考えるべきかについてアドバイスをいただけますか?


5
Javaが型推論を行わないのはなぜですか?
私はいつも、Javaが言語であり、そのVMが非常に成熟していることを考えると、Javaが型推論を行わない理由を常に疑問に思っていました。GoogleのGoは、優れた型推論を備えた言語の例であり、必要な入力の量を減らします。この機能がJavaの一部ではない背後に特別な理由はありますか?

3
ボブおじさんのクリーンアーキテクチャ-各レイヤーのエンティティ/モデルクラス?
バックグラウンド : 私はAndroidアプリでボブおじさんのクリーンアーキテクチャを使用しようとしています。私はそれを行う正しい方法を示しようとしている多くのオープンソースプロジェクトを研究し、RxAndroidに基づいた興味深い実装を見つけました。 気づいたこと: すべてのレイヤー(プレゼンテーション、ドメイン、およびデータ)には、同じエンティティ(UMLを話す)のモデルクラスがあります。さらに、データが境界を越えたとき(レイヤーから別のレイヤーへ)にオブジェクトを変換するマッパークラスがあります。 質問 : すべてのCRUD操作が必要な場合、すべてのモデルクラスが同じ属性で終わることがわかっている場合、すべてのレイヤーにモデルクラスが必要です。または、クリーンアーキテクチャを使用する場合のルールまたはベストプラクティスですか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.