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

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

10
コードカバレッジ品質の議論に反論する方法に関するツール/提案
今、私は人々がこの質問を複製したり何度も質問したりすることを考えることができることを知っています。その場合、関連する質問へのリンクと私の質問への回答に感謝します。 私は最近、コードカバレッジについて何人かの人々と意見が分かれています。私は、100%のカバレッジは高品質のテスト、したがって高品質のコードを意味しないという議論に基づいて、チームにコードカバレッジを完全に削除することを希望する人々のグループがいます。 私は、コードカバレッジがテストされていないことを確かに伝えており、それらの領域に集中するのに役立つという議論を売り払うことによって押し戻すことができました。 (上記は、このような他のSO質問で同様の方法で議論されています-/programming/695811/pitfalls-of-code-coverage) これらの人々からの議論は次のとおりです。そして、チームは低品質のテストをすばやく作成することで反応し、重要な品質を追加することなく時間を無駄にします。 私は彼らの視点を理解していますが、より多くのカバレッジ基準を処理するより堅牢なツール/フレームワークを 導入することにより、コードカバレッジのより堅牢なケースを作成する方法を探しています(Functional, Statement,Decision, Branch, Condition, State, LCSAJ, path, jump path, entry/exit, Loop, Parameter Value etc)。 私が探しているのは、このようなコードカバレッジツールとプラクティス/プロセスの組み合わせを提案して、それらに合うようにすることです。 主観的ではあるが、コードカバレッジによりコードの品質とテストの価値をより意識できるようになったため、このような議論に対抗する方法に関するあなたの経験/知識に基づいた付随するコメント/提案も歓迎します。 編集:典型的なコードカバレッジの弱さに対する私の理解に関する混乱を減らすために、ツール(または実行されたコードの行)を参照しているわけではない ことを指摘したいと思いStatement Coverageます(たくさんあります)。実際には、ここでそれが間違っているすべてに関する良い記事があります:http : //www.bullseye.com/statementCoverage.html 複数のカバレッジの基準とレベルにさらに踏み込んで、ステートメントまたはラインカバレッジ以上のものを探していました。 参照:http : //en.wikipedia.org/wiki/Code_coverage#Coverage_criteria アイデアは、ツールが複数の基準に基づいてカバレッジを教えてくれれば、それがテスト品質の合理的な自動評価になるということです。私は決して回線カバレッジが良い評価だと言っているわけではありません。実際、それが私の質問の前提です。 編集: わかりました、多分私はそれを少し劇的に投影しすぎたかもしれませんが、あなたはポイントを得ます。問題は、すべてのチームに共通のプロセス/ポリシーを同種/一貫した方法で設定することです。また、テストの品質をどのように保証するのか、何の対策も講じずに保証時間をどのように割り当てるのかという懸念が一般的です。したがって、適切なプロセスと適切なツールでバックアップすると、無駄なプロセスに時間を費やしていないことを認識しながら、コードの品質を改善できる測定可能な機能が好きです。 編集:これまでのところ私が答えから持っているもの: コードレビューは、テストの品質を確保するためにテストをカバーする必要があります Test First戦略は、事実の後に書かれたテストを回避して、カバレッジを単純に増加させるのに役立ちます% 単純なステートメント/行以外のテスト基準をカバーする代替ツールの探索 カバーされたコード/見つかったバグの数の分析は、カバレッジの重要性を評価し、より良いケースを作るのに役立ちます 最も重要なことは、正しいことを行い、彼らの信念のために戦うというチームのインプットを信頼することです。 対象ブロック/テスト数-議論の余地あり これまで素晴らしい答えをありがとう。本当に感謝しています。このスレッドは、その能力を持つブレインストーミングの時間よりも優れています。

4
Factoryパターンと組み合わせてDependency Injectionを使用する方法
任意のタイプのファイルの解析を担当するモジュールを検討してください。ここですでに説明したように、この問題に取り組むために戦略パターンを使用することを考えています。この質問に進む前に、リンクされた投稿を参照してください。 product.xmlファイルのコンテンツを必要とするクラスBを検討してください。このクラスは、XMLファイルを解析するために、Parserインターフェースの適切な具象実装者をインスタンス化する必要があります。適切な具象実装者のインスタンス化をファクトリに委任して、クラスBが「has-a」ファクトリになるようにすることができます。ただし、クラスBは、具体的な実装者をインスタンス化するためにファクトリに「依存」します。これは、クラスBのコンストラクターまたはセッターメソッドをFactoryに渡す必要があることを意味します。 したがって、ファイルを解析する必要があるファクトリとクラスBは、互いに密接に結合されます。私はこれまで説明してきたことについて完全に間違っている可能性があることを理解しています。私は、注入される依存関係がファクトリであるシナリオで依存関係の注入を使用できるかどうか、そしてこれを実装する正しい方法は何であるかを知りたいので、ユニットテストでファクトリをモックするなどの領域を活用できます。

5
データベース接続-パラメーターとして渡す必要がありますか?
データベース接続が共通メソッドを使用して一度取得され、使用される関連クラス全体に渡されるシステムがあります。データベース接続をパラメーターとして別のクラスに渡すと問題が発生するのではないかという疑念があるので、ここで実際に実行可能かどうかを確認していますが、それを行うためのより良いパターンはありますか? 永続化を行うためのORMツールがいくつかあることは知っていますが、それについてはまだ説明できません。 フィードバックを歓迎します、ありがとう。

2
循環パッケージの依存関係を解決する方法
ほとんどのクラスが1つのパッケージに配置されている大規模なコードベースをリファクタリングしています。モジュール性を高めるために、各機能のサブパッケージを作成しています。 パッケージ依存関係グラフにはループがあってはならないことをどこかで覚えていましたが、次の問題を解決する方法がわかりません:FigureパッケージfigureにLayoutあり、パッケージlayoutにLayoutあり、レイアウトを実行するために図が必要なので、パッケージlayoutはパッケージに依存しますfigure。しかし、一方で、a FigureはFigure、その中に他のを含むことができ、独自のを持ちLayout、packageをpackageにfigure依存させますlayout。 実装するContainerインターフェイスを作成FigureしてLayoutパッケージに入れるなど、いくつかのソリューションがあります。これは良い解決策ですか?他の可能性はありますか? ありがとう

5
Javaアプリケーションでランタイム例外をスローする
私は請負業者として、テクニカルリードの役割でクライアント用のエンタープライズJavaアプリケーションを設計しています。このアプリケーションはエンドユーザーによって使用され、退社時にアプリケーションをサポートするサポートチームが存在します。 私が一緒に作業している他のテクニカルリードは、例外処理によってコードがダーティになるという印象を受けています。システムはチェックされていない例外を処理する必要がないように、チェックされた例外をサービス層からのみスローし、残りのコードは他のすべての層からランタイム例外をスローする必要があります。 ビジネスアプリケーションで未チェックの例外をスローする必要はありますか? ランタイム例外に関する過去の私の経験から: 1)チェックされていない例外は、Javadocにも表示されないため、コードを予測不能にします。 2)ビジネスアプリケーションで未チェックの例外をスローするのは意味がありません。スローしてユーザーの顔にまっすぐに進むと、どのようにユーザーに説明するのですか?500 -Internal Error. Contact Administratorエンドユーザーにとっても、アプリケーションを管理するサポートチームにとっても何の意味もないことを示すWebアプリケーションを十分に見てきました。 3)ランタイム例外をスローすると、例外をスローするクラスのユーザーはソースコードを調べてデバッグし、例外がスローされた理由を確認することが強制されます。これは、実行時例外のJavadocが偶然見事に文書化されている場合にのみ回避できますが、これは決して事実ではありません。

2
Javaの新しい開発は、ScalaやClojureなどの言語との相互運用性にどのように影響しますか?
私の知る限り、ScalaとClojureはどちらも新しい言語として設計されています。 JVMに依存する ScalaおよびClojureコード内でJavaクラスを使用できるという意味で、Javaコードと簡単に統合できます。 Java 8(以降のバージョンのJavaではさらに強力になる可能性があります)から、Java言語のセマンティクスに変更が加えられます。 これらの変更がJavaとScala / Clojureの間の相互運用性にどのように影響し、どのような結果になるかを尋ねたかったのです。たとえば、Java 8のラムダはオブジェクトではないため(ここを参照)、ScalaとClojureはオブジェクトではないJava値を処理する必要がある場合があります。これは問題になりますか? 次のシナリオを考えることができます。 ScalaまたはClojure言語は、新しいJavaセマンティクス(新しい非オブジェクト値を処理する)に適応するように拡張され、Javaとの相互運用性をサポートします。 ScalaまたはClojure言語は拡張されません。これは、関数値などの新しいJava機能を既存の概念にマッピングできる場合にのみ可能です。たとえば、Scalaでは関数もオブジェクトであるため、Java関数はScalaから見えるようになったときに再び何らかのオブジェクトにラップされると思います。 ScalaまたはClojure言語は、最新のJavaの開発に従うことなく、引き続きJava 6または7までの相互運用性をサポートします。これには、Javaのより保守的で安定したブランチに基づいてこれらの言語を使用できるように、Javaの古いバージョンが(少なくともOpenJDKまたは別のプロジェクトで)サポートされている必要があります。 要約:Javaの将来の開発がScalaやClojureなどの言語に影響を与え、Javaとの相互運用性を維持できると期待できますか?このトピックに関する進行中の議論は既にありますか? 注意 Scala、Clojure、およびその他のJVMベースの言語では、実装をJVMの新しいバージョンに更新するのに大きな問題はないことを想像できます(新しいJVM機能により、この実装がさらに簡単になります)。私の質問は、言語としてのJavaの機能と、JVMベースの言語が最新のJVMで実行されるかどうかではなく、他のJVM言語がこれらの新機能を「見る」/使用する方法に焦点を当てています。
11 java  scala  clojure 

4
なぜWARはセッション情報を共有できないのですか?
複数の開発者がこの問題の解決策を探しているのを見てきました:異なるWARからのセッション情報へのアクセス(同じEAR内であっても)-ここにいくつかのサンプルがあります:Tomcatの異なるアプリケーション間でセッション状態を共有する方法はありますか?、別のWebアプリケーションのアクセスセッション、異なるWARファイル、共有リソース、Tomcat:2つのアプリケーション間でデータを共有する方法 、TomcatでcrossContext属性は何をしますか?セッション共有を有効にしますか?等々... 私が検索したすべてから、コンテナに応じていくつかの特定の解決策がありますが、それはどういうわけか「仕様に反しています」。また、答えを見つけることができずにJava EE仕様を調べました。 一部の開発者はWebアプリケーション間のカップリングについて話しますが、私は反対する傾向があります。カップリングしない場合、同じEAR内にWARを保持する理由は何ですか?たとえば、EJBはローカルにアクセスできます(同じEAR内の別のEJB JAR内にある場合でも)。 より具体的には、私のWARの1つが認証と許可を処理し、この情報を(同じEAR内の)他のWARと共有したいと思います。以前、WARをJARとしてパッケージ化し、それらを単一のWARプロジェクト(WEB-INF / lib)に入れることで、同様の問題を回避することができました。しかし、私はこのソリューションが好きではありません(サーブレットの命名などに多大な労力が必要です)。 そして、最初の(そして最も重要な)質問に答えるソリューションはありません:なぜWARはセッション情報を共有できないのですか?

3
モックコンクリートクラス-非推奨
私は、「Growing Object-Oriented Software」の本の抜粋を読んだところです。これは、具象クラスのモックが推奨されない理由を説明しています。 以下に、MusicCentreクラスの単体テストのサンプルコードを示します。 public class MusicCentreTest { @Test public void startsCdPlayerAtTimeRequested() { final MutableTime scheduledTime = new MutableTime(); CdPlayer player = new CdPlayer() { @Override public void scheduleToStartAt(Time startTime) { scheduledTime.set(startTime); } } MusicCentre centre = new MusicCentre(player); centre.startMediaAt(LATER); assertEquals(LATER, scheduledTime.get()); } } そして彼の最初の説明: このアプローチの問題は、オブジェクト間の関係が暗黙的に残されることです。モックオブジェクトを使用したテスト駆動開発の目的は、オブジェクト間の関係を発見することであることを明確にしたことを願っています。サブクラスを作成する場合、ドメインコードにはそのような関係を表示するものはなく、オブジェクトのメソッドだけです。これにより、この関係をサポートするサービスが他の場所に関連しているかどうかを確認するのが難しくなり、次回クラスで作業するときに分析をやり直す必要があります。 彼が言うとき、彼が何を意味するのか正確に理解することはできません。 これにより、この関係をサポートするサービスが他の場所に関連しているかどうかを確認するのが難しくなり、次回クラスで作業するときに分析をやり直す必要があります。 サービスはMusicCentreのメソッドに対応することを理解していますstartMediaAt。 「他の場所」とはどういう意味ですか? …

8
JavaはC / C ++と比較してパフォーマンスを「微調整」するのがはるかに難しいですか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 4年前に閉鎖されました。 JVMの「魔法」は、プログラマーがJavaのマイクロ最適化に与える影響を妨げますか?私は最近C ++で読んだことがありますが、データメンバーの順序が最適化を提供できる場合があります(マイクロ秒環境で許可されます)。 まともなアルゴリズムがより大きな速度向上を提供することを感謝しますが、正しいアルゴリズムを取得すると、JVM制御のためにJavaを微調整するのが難しくなりますか? そうでない場合は、Javaで使用できるトリックの例を(単純なコンパイラフラグのほかに)挙げてください。

2
JavaDocで非推奨か否か?
JavaDocには次のX509Certificate getSubjectDN()ように記載されています。 Denigrated、getSubjectX500Principal()に置き換えられました。 もう使用すべきではないがDenigratedではないメソッドのDeprecatedに慣れています。コメントで閉じられたこの特定のケースに関するバグレポートを見つけました: これはバグではありません。「非推奨」は、深刻な場合にのみ使用することを意図しています。 Deprecatedのメソッドを使用している場合、一般的に推奨されるアクションはメソッドの使用を停止することです。 メソッドがDenigratedとしてマークされている場合の推奨アクションは何ですか?

6
Java開発者はガベージコレクションアルゴリズムについて知っておくべきですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 最近、ガベージコレクションアルゴリズムについて知っているかどうかインタビューで尋ねられました。 ガベージコレクションとは何であるかは知っていましたが、開発者として心配する必要はなく、ガベージコレクタがすべてのハードワークを行っているため、ガベージコレクションアルゴリズムについて学ぶことを考えたことはありませんでした。 Java開発者はガベージコレクタアルゴリズムについて知っておくべきだと思いますか?「はい」の場合、どちらを調べる必要があるか教えてください。

9
使用するOOデザイン(デザインパターンはありますか?)
「バー/クラブ」(あなたが飲む/社交する場所)を表す2つのオブジェクトがあります。 あるシナリオでは、バーの名前、住所、距離、スローガンが必要です 別のシナリオでは、バー名、住所、ウェブサイトのURL、ロゴが必要です したがって、同じものを表すが異なるフィールドを持つ2つのオブジェクトがあります。 不変オブジェクトを使用するのが好きなので、すべてのフィールドはconstructorから設定されます。 1つのオプションは、2つのコンストラクターを持ち、他のフィールドをヌルにすることです。 class Bar { private final String name; private final Distance distance; private final Url url; public Bar(String name, Distance distance){ this.name = name; this.distance = distance; this.url = null; } public Bar(String name, Url url){ this.name = name; this.distance = null; this.url = url; …

5
Javaに対するCeylonの利点は何ですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 6年前に閉鎖されました。 ネット上の最近の強力なプログラミング言語を探して、Ceylonに出会いました。ceylon-lang.orgに立ち寄ったところ、次のように書かれています。 CeylonはJavaに深く影響を受けています。ご覧のとおり、私たちはJavaのファンですが、その限界を裏返しに知っています。CeylonはJavaの最高の部分を保持しますが、私たちの経験では面倒で退屈でイライラする、理解するのが難しい、またはバグを起こしやすいものを改善します。 Javaに対するCeylonの利点は何ですか?

3
.equals()を使用して文字列変数を文字列リテラルと比較する場合、アイテムの順序に標準的な慣行はありますか?[閉まっている]
ここで何が尋ねられているかを伝えるのは難しいです。この質問は曖昧、曖昧、不完全、過度に広範、または修辞的であり、現在の形式では合理的に答えることができません。この質問を明確にして、再開できるようにするには、ヘルプセンターに アクセスしてください。 7年前に閉鎖されました。 それぞれに利点があり、違いを理解していますが、ベストプラクティス/標準プラクティスは何ですか?なぜ? 例えば ​​: "myString".equals(myStringVar) 潜在的なNPEを回避し、nullチェックを必要としません。(良いこと?) nullチェックが必要ないため、読みやすくなります。 nullが予期される値でない場合、プログラムは賢明でなくても壊れている可能性があります。 しかしながら myStringVar.equals("myString") nullが期待値である場合、nullチェックが必要です。(良いこと?) nullチェックで複合条件を乱雑にすることができます。 NPEが何かが壊れているかどうかを知らせることができます。 Javaで使用する標準と見なされるバリエーションはどれですか?

4
純粋なJavaScriptフレームワークよりもGWTのようなツールの実証済みの利点は何ですか?
GWTは、JavaコードとJavaランタイムのクラスライブラリのサブセットをJavaScriptコードに変換するソフトウェアスタックです。 JavaScriptツールキットと比較すると、GWTは本質的にも使用法によっても疎外感があり、JavaScriptを直接使用することで得られるきめ細かな制御の多くを奪い、非常に複雑で単純なこともできます。 Web開発者が、純粋なJavaScriptおよびJavaScriptフレームワークとツールキットを使用する代わりに、もともとWebを対象としていない言語を使用するGWTのようなツールを使用することを選択するのはなぜですか? それはかなり良いもので、どの基準に基づいていますか?

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