20 java en iyi uygulamaları
Kodunuzun kalitesini artırmanıza yardımcı olacak en iyi java uygulamalarından bazıları.
1-Mümkün olduğunda ilkel sarmalayıcılar yerine ilkelleri tercih edin.
Long idNumber;
long idNumber; // long takes less memory than Long
int birthYear;
short birthYear; // better because birth year can not be more than 32767
int personRunningSpeedKmHour;
byte personRunningSpeedKmHour; // better because a person can not have
// more than 127 km/h as speed
public boolean isOdd(int num) {
return (num & 1) != 0;
}
// best way to check the oddity of a number
String name = null; // redundant
int speed = 0; // redundant
boolean isOpen = false; // redundant
String name;
int speed;
boolean isOpen;
// same values in a cleaner way
public int age; // very bad
int age; // bad
private int age; // good
String s1 = new String("AnyString") ; // bad : low instantiation
// The constructor creates a new object, and adds the literal to the heap
String s2 = "AnyString" ; // good: fast instantiation
// This shortcut refers to the item in the String pool
// and creates a new object only if the literal is not in the String pool.
String address = streetNumber +" "+ streetName +" "
+cityName+" "+cityNumber+" "+ countryName; // bad
StringBuilder address = new StringBuilder(streetNumber).append(" ")
.append(streetName).append(" ").append(cityName).append(" ")
.append(cityNumber).append(" ").append(countryName); // good
8-Nümerik Yazılarda alt çizgi kullanmak.
int myMoneyInBank = 58356823;
int myMoneyInBank = 58_356_823; // more readable
long billsToPay = 1000000000L;
long billsToPay = 1_000_000_000L; // more readable
for (int i = 0; i < names.length; i++)
{ saveInDb(names[i]); }
for (String name : names)
{ saveInDb(name); } // cleaner
Scanner scanner = null;
try
{scanner = new Scanner(new File("test.txt"));
while (scanner.hasNext())
{System.out.println(scanner.nextLine());}}
catch (FileNotFoundException e)
{e.printStackTrace();}
finally
{if (scanner != null)
{scanner.close();}}
// error-prone as we can forget to close the scanner in the finally block
try (Scanner scanner = new Scanner(new File("test.txt")))
{while (scanner.hasNext())
{System.out.println(scanner.nextLine());}}
catch (FileNotFoundException fnfe)
{fnfe.printStackTrace();}
// cleaner and more succinct
try
{ productPrice = Integer.parseInt(integer); }
catch (NumberFormatException ex)
{ }
// fail silently without giving any feedback
try
{ productPrice = Integer.parseInt(integer); }
catch (NumberFormatException ex)
{unreadablePrices.add(productPrice); // handle error
log.error("Cannot read price : ", productPrice );// proper and meaningful message
}
- Null öğelerini döndürmek yerine Boş Koleksiyonları döndür
OptionalKullanabildiğin kadar kullanrequireNonNullYöntemlerijava.utils.ObjectsNotNull,NotEmpty,NotBlankEk AçıklamalarObjects::nonNulliçindeStreamsrequireNonNullyöntemlerjava.util.Objects
14-Eşitliği kontrol etmek için ==referanslar ve equalsnesneler için kullanın
// prerequisite: the person class overrides equals() and hashCode()
Person p1 = new Person("John","Doe");
Person p2 = new Person("John","Doe");
System.out.println(p1 == p2); // false
System.out.println(p1.equals(p2)); // true
15-Eşit uygularken daima hashCode uygulayın.
"Sözleşmeyi bozmamak" için hashCodegeçersiz kılarsanız her zaman geçersiz kılmayı unutmayın . API'ye göre, yöntemleri eşdeğer olduklarını gösteriyorsa, iki nesne için yöntemden döndürülen sonuç aynı olmalıdır . Tersi mutlaka doğru değildir .equalshashCode()equals
16-Değişmez veriler için kayıtları tercih edin (java14'ten beri)
public final class Person {
private final String name;
private final long idNumber;
public Person(String name, long idNumber) {
this.name = name;
this.idNumber = idNumber;
}
public boolean equals(Object other) {
if (other == this) return true;
if (other == null) return false;
if (other.getClass() != this.getClass()) return false;
Person that = (Person) other;
return (this.name.equals(that.name)) && (this.idNumber == that.idNumber);
}
public String toString() {
return name + " " + idNumber;
}
public int hashCode() {
return Objects.hash(idNumber, name);
}
}
// this class can be transformed to a record:
record Person(String name, long idNumber) { } // cleaner and less verbose
public final class MyValues {
private MyValues() {
// No need to instantiate the class, we can hide its constructor
}
public static final String VALUE1 = "foo";
public static final String VALUE2 = "bar";
}
// <-- empty line
@Repository
public class ...
20-Java 8'den beri tarih tipi kullanımı java.handling.java.localDateTimeönerilir.
Java ile ilgili daha fazla en iyi uygulama görmek için şu harika kitapları öneriyorum: Clean code ve Effect Java .

![Bağlantılı Liste Nedir? [Bölüm 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































