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

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

6
DRY原理の解釈
現在、コーディングでこのDRY(Do n't Repeat Yourself)の概念に取り組んでいます。この関数を作成していますが、複雑になりすぎるのではないかと心配していますが、DRYの原則に従っています。 createTrajectoryFromPoint(A a,B b,C c,boolean doesSomething,boolean doesSomething2) 私が言ったこの関数は3つの入力パラメーターを取り、ブール関数の組み合わせdoesSomethingとを指定すると、関数は少し異なる動作をしdoesSomething2ます。しかし、私が抱えている問題は、このブール関数が追加されるたびに、この関数が非常に複雑になることです。 だから私の質問は、多くの同じロジックを共有するさまざまな関数(したがってDRYの原則に違反している)や、いくつかのパラメーターを指定した場合にわずかに異なる動作をするが、はるかに複雑にする1つの関数(しかし、 DRYを保存する)?
10 java  design  dry 

4
外部のコマンドラインアプリケーションを呼び出すか、そのアプリケーションのロジックを内部化する方が良いでしょうか?
ワークフローを自動化するために、基本的に既存のツールの束をリンクするだけの「パイプライン」タイプのプロセスがあります。ステップの1つとして、既存のコマンドラインツールがあり、そのステップで実行する必要のある処理をすでに実行しています。 外部CLIツールはJavaベースであり、パイプラインも同様であるため、ツールをパイプラインステップに直接統合することは可能ですが、ツールは非常に複雑で、現在、コマンドライン入力(次のようなもの)と密接に関連しています37の構成フラグオプション)。 問題は、単に外部プロセスを呼び出して呼び出す方が良いのでしょうか、それともアプリケーション内に外部コードを統合する方が良いのでしょうか。 外部プロセスの統合と呼び出しのメリットとデメリットは何ですか?

2
アプリケーションのさまざまな部分間の相互作用の設計に関するアドバイスが必要
NetBeansプラットフォーム7に基づくリッチデスクトップアプリケーションの「メイン」クラスを設計しようとしています。このアプリケーションはHTTPサービスを消費し、TCP上の「プッシュシステム」を通じてメッセージを受信します。 私たちは3人の開発者であり、モジュールを並行して開発したいと考えています アプリケーションは階層化されます(データ、ビジネス、プレゼンテーション) 責任を分離するために、プレゼンテーションモデルを使用します いくつかの詳細なデータ(Bean Personなど)は複数の画面で共有されます(同時に複数の画面に表示される可能性があります) ... 個別の画面を開発することはできますが、アプリケーション全体を整理し、各モジュールのコンテンツを定義する方法を正確には知りません。 それでは、アプリケーション全体の相互作用を調整/管理するためのアドバイス(パターン/ベストプラクティス/本/サンプルアプリ)はありますか? モジュールのコンテンツを定義する方法について何かアドバイスはありますか? ありがとう! 私が構築したいものを説明する小さな例:Fooユーザー管理アプリケーション アプリケーションを起動します 左側の[エクスプローラ]にプラットフォームのリストがあります(リストはローカルファイルに保存されます) 上部には、新しいプラットフォームを追加するためのボタンがあります(右クリックでも利用可能) プラットフォームをダブルクリックすると、アプリはHTTPサービスを呼び出し、ユーザーの完全なリストを取得します。このリストは[エディタ]に表示されます(JTable内) バックグラウンドプロセスが開始されます:TCP接続を介してメッセージを受信します ツールバーのボタンのおかげで新しいユーザーを追加することが可能です アプリケーションが別のPCで起動され、ユーザーが同じプラットフォームに接続している場合、そのユーザーリストは動的に更新されます(追加/削除/ステータス:{オフライン/オンライン})(メッセージのおかげで) 将来的にはチャットモジュールが提供される予定です。 私の質問は(言い換えれば):各モジュールのコンテンツを決定するためのアドバイス/ベストプラクティスですか?PM(プレゼンテーションモデル)がビュー/ビジネスとデータを分離して画面を作成する良い方法である場合、PMに基づいて複数の画面をリンクする最良の方法は何ですか?チャットモジュールを開発し、ユーザーリストを右クリックして表示されるコンテキストメニューに「ディスカッション...」というエントリを追加する方法を想像してみてください。

4
遅延初期化をJavaに組み込むことができなかった理由はありますか?
私はユーザーの非永続状態がまったくないサーバーで作業しているため、ユーザー関連のすべてのオブジェクトは、すべてのリクエストでロールアウトされます。 その結果、未使用になる可能性のあるオブジェクトのプロパティを遅延初期化していることがよくあります。 protected EventDispatcher dispatcher = new EventDispatcher(); なる... protected EventDispatcher<EventMessage> dispatcher; public EventDispatcher<EventMessage> getEventDispatcher() { if (dispatcher == null) { dispatcher = new EventDispatcher<EventMessage>(); } return dispatcher; } これをJavaに組み込むことができなかった理由はありますか? protected lazy EventDispatcher dispatcher = new EventDispatcher(); 以下のコメントで述べたように、言語は理論的に進化して、必要なほとんどすべてのものを含めることができることを理解しています。可能性の実用的な測定方法を探しています。これは他の機能と競合しますか?実装は、JVMが存在する場合でもうまく機能するように単純ですか?そして、それは良い考えですか?

4
引数はバイナリファイルをSCMにチェックインすることを再度示します
私は主にJavaアプリケーションを構築している会社で働いており、SCMへのバイナリファイル(依存関係と最終製品)のチェックインを停止するようにみんなを説得しようとしています。 彼らはそれが悪い習慣であることを知っていますが、彼らは「それはうまくいく」と考え、多くの人がMavenやAnt以外のビルドのための他のツールについて知っていても、実際には問題ではありません。PMとプログラマー(約50人)のどちらも、反対意見に耳を傾け、バックアップスペースの浪費であることを認める用意がありますが、習慣の変化には多大な労力が伴うため、私は本当に納得したいと思います。変更をサポートするためにどのような議論を使用しますか? 編集:さて、依存関係のようなほとんど変化しないファイルと生成されたファイルを区別することは理にかなっています。それでも、後者に反対する理由に興味があります。
10 java  builds 

2
Javaで定義されていないブールサイズ:なぜですか?
ブール値のサイズが定義されていないようです。以下はJavaプリミティブデータサイズで私が見る2つのステートメントです 正確に定義されていない さらに説明すると ブール値は1ビットの情報を表しますが、その「サイズ」は正確に定義されたものではありません。 私の頭に浮かんだ疑問は、なぜJavaのブール値が1ビット(またはバイトが最小表現の場合は1バイト)で表現できないのかということでした。 しかし、私はそれが/programming/1907318/why-is-javas-boolean-primitive-size-not-definedですでに回答されていることを確認しています JVMは、ローカル変数、メソッド引数、および式の値を保持するために使用される32ビットのスタックセルを使用します。1セルより小さいプリミティブはパディングされ、32ビットより大きいプリミティブ(ロングおよびダブル)は2セルを使用します。 バイト/文字/短いプリミティバのデータ型でもサイズが8/16/16ビットとして定義されていますが、32ビットを使用するという意味ですか また、ブールサイズは32ビットCPUでは32ビット、64ビットCPUでは64ビットと言えるでしょうか?
10 java  concepts  boolean 

1
プルメカニズムを使用したオブザーバーパターン
以下の実装について疑問に思っていました public void update(Observable obs, Object arg) 私はすべてのオブザーバーに送信し、notifyObserver()Iを使用して更新しthis、オブザーバーに参照を渡すとgetters、サブジェクトのを使用して、必要な情報をプルできます。 argupdateメソッドの引数は何のためのものですか?

1
コメントの「TILT」とはどういう意味ですか?
私はRobert C. MartinのClean Codeを読んTILTでいますが、このフレーズは一部のコードサンプルに不可解に表示されています。例(ちなみにJavaです): ... public String errorMessage() { switch (status) { case ErrorCode.OK: // TILT - Should not get here. return ""; case ErrorCode.UNEXPECTED_ARGUMENT: return "Unexpected argument"; case ErrorCode.MISSING_ARGUMENT: return "Missing argument"; ... } ... コンテキストから、TILT到達できない状態であり、コンパイラを満たすためにのみ含まれている状態を指定していると思います(たとえば、上記のコードでは、状態がの場合はエラーメッセージが表示されないためTILT、ErrorCode.OKケースに表示されますOK)が、よく分かりません。 誰かがTILT/の意味が何であるか知っていますか?

2
例外の粒度
私は、次のような彼らは、一般的な例外を好む数人の友人とI.間の論争に実行したClientErrorExceptionとServerErrorException私は物事にもっと具体的に作ることを好むのに対し、例外のフィールドとして詳細に。たとえば、次のような例外がいくつかある場合があります。 BadRequestException AuthenticationFailureException ProductNotFoundException これらはそれぞれ、APIから返されたエラーコードに基づいて構築されています。 例外の利点に従うと、これはJavaにとって慣用的なようです。しかし、私の友人の意見は全く珍しいことではありません。 コードの読みやすさとAPIの使いやすさの点で好ましい方法はありますか、それとも本当に好みに帰着するだけですか?

1
プロジェクトの非単体テストを管理する方法は?
私は自分のプロジェクトにtestsユニットテストではないコードをいくつか持っています。これらは実行することを意図しており、結果は人間が評価する必要があります。これは、物理エンジンを作成していて、開発中に自分が何をしているかを確認する必要があったためです。それでsimulation、テストモジュールでパッケージを作成しました。シミュレーションはユニットテストライブラリを使用しているため、技術的にはユニットテストですが、実際のユニットテストのようにすべてを実行するわけではありません。 すべての単体テストを簡単に実行したいので、これらの特別なテストを単体テストと区別します。機能テストに少し似ていると思います。アプリケーションを機能テスト用に準備しなければならないケースに遭遇したことがありますか?その機能テストの準備(基本的には私のシミュレーション)はプロジェクトのどこに配置し、ユニットテストとどのように区別するのですか? 私はJavaを使用しているため、すべてのメソッドシグネチャをから@Test public void myNamedTest()に変更できpublic static void main(String[] args)ますが、シミュレーションを使用するのは面倒で実用的ではありません。 プロジェクトで使用junitしていgradleます。で特別なテストフォルダを作成するソリューションgradleは大歓迎です。

1
オブジェクトがインターフェイスの一部のみを使用する場合、インターフェイスをどのように構成しますか?
同じテーブルを更新するデータベースアクセスオブジェクトを必要とする2つのクラスがあるプロジェクトがあります。フレームワークとプロジェクトの制約により、これら2つのクラスを組み合わせることはできません。以下のケースを作成して、セットアップ方法を示します。クラスAはレコードを更新および読み取りできる必要があり、クラスBはレコードを更新および削除できる必要があります。 クラスをそのまま使用すると問題なく機能しますが、各クラスが実装に使用していない機能を必要とするという問題があります。たとえば、クラスAを使用するには、削除関数が呼び出されない場合でも、削除関数を実装するdaoを渡す必要があります。同様に、クラスBにread関数を実装するdaoを渡す必要がありますが、呼び出されることはありません。 他を継承するインターフェイス(IReadDao、IUpdateDao、IDeleteDaoは継承元のdaos)を使用してアプローチすることを考えましたが、このアプローチでは基本的に、関数の組み合わせごとに異なるインターフェイス(IUpdateAndRead、IReadAndDelete、IReadAndUpdate ... ) アプリケーションとデータベースを結合したくないので、daoのインターフェースを使用します。誰かが知っている私がやりたいことを達成するためのパターンや方法はありますか?前もって感謝します。 class IDao { void update(ModelDao model); void delete(String guid); ModelDao read(String guid); } Class A { private IDao dao; public A(IDao dao) { this.dao = dao; } public void doStuff() { ModelDao model = new ModelDao(); ... dao.update(model); } public void readThenDoSomething(String id) { …

2
Javaで書かれたAPIで内部クラスをカプセル化する方法は?
ライブラリを書かなければならない。当然、非常に小さなAPI(必要に応じてできるだけ広い)のみを使用する必要があります。ライブラリの内部はやや複雑です。したがって、構造化が必要です。 構造化について、私は現在2つの方法を考えています。 1.パッケージを使用します。 長所:ライブラリはきちんと構成できます。その場所のすべて。 短所:パッケージの境界線を介したクラスの使用にはパブリッククラスが必要であり、したがってライブラリ全体のAPIを拡張します。 2.すべて1つのパッケージで静的内部クラスを使用します。 長所:必要なパブリッククラス(クラス、メソッドなど)はごくわずかです。 短所:クラスは、それらを構造化するためにのみ非表示になります。これは、非常に多くの静的内部クラスが使用される非常に数少ないユースケースの1つです。開発者はそれに慣れておらず、見落とす可能性があります。 よく構造化されたライブラリで小さなAPIを実現するより良い方法はありますか? 編集:言及するのを忘れていました:Androidライブラリ用です。したがって、java9はありません。

3
インターフェースが具象クラスに依存することは問題ありませんか?
カスタムエラーハンドラーのJavaでインターフェイスを作成しています。 引数エラーオブジェクトを渡したいのですが、Exceptionクラスの子である必要があります。 定義したクラス名をインターフェイスで使用しても大丈夫ですか? 実装に依存しないという点で、インターフェースを少なくしませんか? 私はこのようなことをやろうとします: public class CustomException { /* ... Implementation ... */ } public interface Interface { void onError(CustomException ex); }

2
オブザーバーパターンは、オブザーバーが互いに独立していない場合に適していますか?
私class Carは2つのプロパティを持つを持っています:int priceとboolean inStock。またList、abstract class State(空のクラス)も保持します。車に適用できる2つの状態があり、それぞれが独自のクラスで表されます:class Upgrade extends Stateおよびclass Shipping extends State。 A Carは、2つの状態をそれぞれいくつでも保持できます。州には次の規則があります。 Upgrade:1自動車自体に適用される各状態の価格に追加されます。 Shipping:Shippingリストに少なくとも1つの状態がある場合、inStockに設定されfalseます。 たとえば、始まるprice = 1とinStock = true: add Shipping s1 --> price: 1, inStock: false add Upgrade g1 --> price: 1, inStock: false add Shipping s2 --> price: 2, inStock: false add Shipping s3 --> price: …

1
コード設計:任意の関数の委任
PPCGでは、King of the Hillの課題が頻繁に発生します。これは、異なるコードボットを互いに対戦させるものです。これらの課題を単一の言語に限定するのは好きではないため、標準のI / Oを介してクロスプラットフォームの通信を行います。 私の目標は、チャレンジライターがこれらのチャレンジをより簡単に書くために使用できるフレームワークを書くことです。次の要件を満たしました。 チャレンジライターは、メソッドが個別の通信のそれぞれを表すクラスを作成できます。たとえば、私たちのGood vs Evilチャレンジでは、ライターはメソッドを含むPlayerクラスを作成abstract boolean vote(List<List<Boolean>> history)します。 コントローラは、前述のメソッドが呼び出されたときに標準I / Oを介して通信する上記のクラスのインスタンスを提供できます。ただし、上記のクラスのすべてのインスタンスが標準I / Oを介して通信する必要があるとは限りません。ボットのうち3つはネイティブJavaボットである可能性があります(Player別の2つが別の言語である場合、クラスをオーバーライドするだけです)。 メソッドは常に同じ数の引数を持つわけではありません(また、常に戻り値を持つこともありません)。 チャレンジライターが私のフレームワークで作業するためにできる限り少ない作業を行う必要があります。 私はこれらの問題を解決するために反射を使用することに反対していません。私はチャレンジライターに次のようなことを要求することを検討しました: class PlayerComm extends Player { private Communicator communicator; public PlayerComm(Communicator communicator){ this.communicator = communicator; } @Override boolean vote(List<List<Boolean>> history){ return (Boolean)communicator.sendMessage(history); } } しかし、いくつかの方法がある場合、これはかなり繰り返しになる可能性があり、定数のキャストは楽しいものではありません。(sendMessageこの例では、可変数のObject引数を受け入れ、を返しますObject) これを行うより良い方法はありますか?

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