あなたの代わりにユーティリティクラスのコードを繰り返して好きですか?

user2684198:

私たちは、Javaでサービスを持っていることを実行するためのさまざまなモデルのために、これらのファイルを用意し、ユーザーがアップロードしたファイル、およびタスクの多くを扱っています。

準備の一つのそのような相は、JSONファイルの値をオーバーライド含まれていました。10個のタスクのうち4は、これを行うことになりました。

私は、のようなものをJSONファイルの値を上書きする機能が含まれて静的なユーティリティクラスを作成しました

public static class ParameterUtils {
   public static String overrideParameter(String originalContent, String key, String newValue) {
     //4 lines of code that overrides this value and return modified content.
   }
}

しかし、私の先輩開発者は、私はDRY原則を維持しようとしたとき、このユーティリティクラスはほとんど、任意の値を提供しないことを言いました。終わりに、私は、このユーティリティクラスを取り除くなかった、と今のコードの4行は、4つの異なるファイルにJSONファイルの存在の値を上書きします。

あなたはこのクラスとメソッドは、OOPの観点から良いものではありませんと思いますか?なぜ、なぜありませんか?

vikarjramun:

いいえ、間違いなく、複数の場所で(やや複雑な)コードを複製する悪い習慣です。

DRYの原則は、「自分を繰り返してはいけない」と言います。これは心に留めておくべきものです、あなたはこのパラメータを複数回上書きするようにコンピュータに指示することによって自分自身を繰り返したくはありません。

しかし、ただ一つの方法があり、静的なユーティリティクラスよりも、これを置くために、より良い場所があるかもしれません。

あなたがすべてでそれを使用する4つのファイルが特定のクラスを拡張する場合、多分それが保護された静的メソッドにします。それとも、JSON文字列を返すクラスに配置します。

しかし、文字列としてJSONの周りに渡すと、あなたは文字列操作を通してそれを操作している場合は特に、コードのにおいのように思えます。このようなジャクソンやorg.jsonとしてJSONライブラリを使用するのは良い考えかもしれません。あなたはジャクソンのデータバインド機能(ジャクソンを使用する最も一般的な方法)を使用する場合は、実際のゲッターとセッターとのPOJOを作成し、ジャクソンはJSONに変換するの面倒を。org.jsonの場合は、あなたが仕事JSONObjectに非常によく似ているクラス、Map<String, Object>とあなたがマップするようにあなたはそれを変異させて、単一のメソッドでStringにしてから、それを変換することができます。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=334787&siteId=1
おすすめ