ロンボックまたはJava 'var'が役に立つときのユースケース[重複] -- java フィールド と var フィールド と lombok フィールド と java-10 フィールド 関連 問題

Use cases when lombok or java 'var' is useful [duplicate]












2
vote

問題

日本語

<コード> provisioning profile4 は、コードをナビゲートして最初の外観ではっきりしないコードを調査するときには一態様ではありません。開発者が自己記述されていない場合、メソッドの名前を使用すると、変数の実際のタイプとは何がかからないようにしてください。そして、Lombokの<コード> 998876615 を使用している場合は、Lombokと緊密に結合されますので、コードが非常に頻繁に使用されません。

<コード> provisioning profile6 をJava?

で使用するための有用なユースケースは何ですか?
英語

var is not very handful when you're navigating through the code and investigating the code which is not clear at the first look. When developers use not self describing methods names you have to spend some time to understand what is real type of the variable. And if you use lombok's var you will be tightly coupled with lombok so I do not use it very often in my code

What are the useful use cases for using var in java?

</div
           
       
       

回答リスト

4
 
vote
vote
ベストアンサー
 
var :を支持した引数
  • <コード> var
はタイピングが少なくなります。 <コード> Map<Integer, ArrayList<String>> 。を言うよりも短くて読みやすくなることがあります。
  • var メソッド呼び出しの入力が変更された場合には、コードが少ない必要があります。メソッド呼び出しを変更するだけでなく、それが使用されているすべての場所ではありません。
  • var は、変数のよりわかりやすい名前を奨励します。 NS。 <コード> var customer = new Customer(); <コード> var c = new Customer(); ではなく。
  • var

    に対する引数
    • var は実際の変数型を隠します。イニシャイザが明確に定義されたタイプを返しない場合は、変数のタイプにわかりません。
    • < varを使用してを使用して遅延です。 var0 var1 よりも簡単なものですが、変数名がまったく名付けられていない場合は、それが何を指すのかを知るためにはたくさん深く検索する必要があります。
    • <コード> var2 は、基礎となる変数の種類が実際にあるものが何であるかを知るのを難しくなります。
    • すべての場合において var3 を使用することはできません。好き:
      • var4 - var5 には1つの変数のみが許可されています。
      • var6 - 配列は明示的に宣言されている必要があります。
      • <コード> var7 - このLambda関数がどのタイプであるかを判断できません。
      • var8 - メソッドの参照は、それ自体の型がないため、使用できません。 詳細はこちら

    これらのほとんどは、この投稿 var9 を使用する場合の場合、 Map<Integer, ArrayList<String>>0 キーワードは最初から存在していますが、Javaではバージョン10以降にのみ利用可能です。< / P>

    OH、および<コード> Map<Integer, ArrayList<String>>1 のもう1つの大きな利点は、コードゴルフ< / a>(できるだけ少ないバイトで特定のタスク/チャレンジを実行するプログラム/関数を作成します)。 :)私は、Java(そして.NET C#、05AB1e、および空白)でCodegolf、かわいい場合、それが追加されたことを気にしないのはおそらく。

    関連:Java 7のダイヤモンド事業者。 <コード> Map<Integer, ArrayList<String>>2 <コード> Map<Integer, ArrayList<String>>3 。

    個人的には、コードゴルフを除いて、 Map<Integer, ArrayList<String>>4 の代わりに書き出しタイプを使用します。しかし、それをより頻繁に使用する前にもう少し慣れる必要があるかもしれません。読みやすさのために、そしてそれを掘ることなくタイプをより明確にそしてより簡単にすることができますが、<コード> Map<Integer, ArrayList<String>>5 はまったく使用しません。 Java 7のDiamond operatorに関しては、フィールドの直後にインスタンス化したが、他の場所でインスタンス化したときには使用するだけです(つまり、<コード> 9988766627は使用しませんが、<コード> 9988766627
    一般的にそれはすべて好みに降りるが、しかし

     

    Arguments in favor of var:

    • var requires less typing. It's shorter and sometimes easier to read than let's say Map<Integer, ArrayList<String>>.
    • var requires less code changes if a return-type of a method call changes. You only have to change the method call, but not every place it's used.
    • var encourages a more descriptive name for variables. I.e. var customer = new Customer(); rather than var c = new Customer();.

    Arguments against var:

    • var obscures the actual variable type. If the initializer doesn't return a clearly defined type, you may not be able to tell a variable's type.
    • Using var is lazy. Although var is certainly easier to type than Map<Integer, ArrayList<String>>, if the variable name isn't named well, you'd have to search a lot deeper in order to know what it refers to.
    • var makes it harder to know what the type of the underlying variable actually is.
    • You can't use var in all cases. Like:
      • var i=1,j=2; - Only one variable is accepted for var at a time.
      • var arr={1,2,3}; - Arrays must be explicitly declared.
      • var f=a->a+" "; - It cannot determine what type this lambda function is.
      • var f=String::replace; - Method references cannot be used, because they don't have a type of itself. More info here.

    Most of these are taken from this post for when to use var in .NET C#, where the var keyword has been present since the beginning, whereas with Java it's only available since version 10.

    Oh, and another big advantage of var: it's shorter for code-golfing (creating a program/function which does a certain task/challenge with as few bytes as possible). :) Probably the main reason why I don't mind that it was added, since I codegolf in Java (as well as .NET C#, 05AB1E, and Whitespace) pretty often.

    Related: Java 7's diamond operator. List<String> names = new ArrayList<>(); vs List<String> names = new ArrayList<String>();.

    Personally I still use written out types instead of var, except for code-golfing. But maybe I just need to get used to it a bit more before using it more often. For readability, and making it clearer and easier to see the type without having to dig, I don't use var at all. As for Java 7's diamond operator, I only use it when I instantiate it directly after the field, but would not when I instantiate it elsewhere (i.e. I would use List<String> names = new ArrayList<>();, but not List<String> names; /* ... some code here ...*/ names = new ArrayList<>();).
    In general it all comes down to preference, though.

    </div
     
     
       
       

    関連する質問

    16  JVM 8とJVM 10の週間の様々な行動  ( Different behavior of weekfields on jvm 8 and jvm 10 ) 
    ここでは本当に簡単なプログラムがあります。 <事前> <コード> public static void main(String[] args) { LocalDate year = LocalDate.ofYearDay(2022, 100)...

    9  nosuchMethodError:<init>(com.sun.ulass.ui.win.winapplication.staticscreen_getScreens)  ( Nosuchmethoderror init in com sun glass ui win winapplication staticscreen ge ) 
    Install4J 7.0.5およびJava 10へのアップグレード以来、Windows上でアプリケーションを実行するユーザーは、アプリケーションがスローすることを報告するユーザーが <事前> <コード> java.lang.NoSuchMethodErro...

    4  Java 10:System.out.PrintLn(...)の場合は、「ドキュメントなしのドキュメントは見つかりませんでした」  ( Java 10 no documentation found for system out println ) 
    Debian 10では、 apt-get install openjdk-10-jdk openjdk-10-doc を使用してJava SE10をインストールします。私は jshell と呼び、 System.out.println(...) のドキュメン...

    4  Spring Webflux Recificative Waysを使用したハンドラ関数でモノラルとフラックスを使う方法  ( How to use mono and flux in handler functions with spring webflux reactive ways ) 
    <コード> --> 私のモデルはこのようなものに見えます。 <事前> <コード> defaultLeft0 これは私の機能的なエンドポイントを処理するための私のハンドラクラスです。 <事前> <コード> defaultLeft1 質問:以前に書...

    931  Java:java.lang.noclassDeffounderrorを解決する方法Javax / XML / BIND / JAXBException  ( Java how to resolve java lang noclassdeffounderror javax xml bind jaxbexceptio ) 
    Java 6/7/8のJDKの一部として提供されているJAXB APIクラスを使用するコードがいくつかあります。 Java 9で同じコードを実行すると、実行時にJAXBクラスが見つからないことを示すエラーが発生します。 Java 6以降のJDKの一部として...

    0  JavaFXがJava 10 JDKと卒業を扱うようにGavaFXを取得できないようです  ( Cant seem to get javafx to work with java 10 jdk and gradle ) 
    私は私が卒業生とJavaで構築するJavaFXアプリを持っています。私は最近、新しいラップトップを得て、Java 8の代わりにJava 10 JDKをインストールし、それが大したことになるとは思わなかった。ただし、GradleプロジェクトをIntelliJにイ...

    0  JShellを使用してSpring Bootアプリケーションを起動できません  ( Not able to start spring boot application using jshell ) 
    JShellからプロジェクトにSpring Boot Jar実行可能ファイルを開始しようとしていますが、例外をスローして起動しません。 実行しているコマンド: ./ jshell --class-path myapp-0.0.1-snapshot.jar...

    8  IntelliJを言語レベルのリセットにするにはどうすればいいですか?  ( How to avoid intellij to reset language level ) 
    このサイトの時代の根絶に答えられたこれに問題があります。 私の問題を引き受けることは少し異なります。 Maven 3.5.xとJava Release 10(Maven-Compiler-Pluginで構成されている)を使用して細かく構築するプロジェクトがあり...

    4  JavaDocsはJava 10のApache NetBeansに表示されていません。  ( Javadocs are not appearing on apache netbeans for java 10 ) 
    NetBeansバージョン:Apache NetBeans 9.0 Javaバージョン:Java 10 私が何をしても、Javadocが表示され、メソッドの詳細を何でも表示することはできません。 Javaプラットフォームとjavadocsに入って、J...

    1  JDK 10をアンインストールできません - 内部エラー2318  ( Unable to uninstall jdk 10 internal error 2318 ) 
    JDK 10.1をアンインストールしようとしていますが、上記のエラーメッセージが「内部エラー-2318」と言っています。下位バージョン(Java8)をインストールし、新しくダウンロードされたセットアップを再インストールしようとしましたが、何も機能しませんでし...




    © 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有