Giriş
2017 basımı Edition 3'te toplam 90 madde var.
Item 1 Static Factory Methods
Sınıflarda isimsiz constructor yerine ne işe yaradığını daha anlaşılır olan static metodlar kullanılabilir.
Item - 2 Consider a Builder When Faced with Many Constructor Parameters
2017 basımı Edition 3'te toplam 90 madde var.
Item 1 Static Factory Methods
Sınıflarda isimsiz constructor yerine ne işe yaradığını daha anlaşılır olan static metodlar kullanılabilir.
Item - 2 Consider a Builder When Faced with Many Constructor Parameters
Örnek
Bu kod yerine
public Product(int ID,String name,String description,String type,String[] images,BigDecimal price,int quantity, int categoryId, int sellerId, OffsetDateTime createdAt) {...}
Şöyle yaparız
public static class ProductBuilder {// Fields ... public ProductBuilder id(int id) { this.id = id; return this; } public ProductBuilder description(String description) { this.description = description; return this; } ... public Product build() { return new Product(this); } }
Item 8 - Avoid finalizers and cleaners
Şu uyarıya dikkat etmek gerekiyor.
Item 22 - Use Interfaces Only To Define TypesThere is a severe performance penalty for using finalizers.
Örnek - Static Final Alan
Sadece static final alanlardan oluşan arayüz kötü bir tasarım. Effective Java kitabından bir alıntı şöyle
Yine kitaptan bir alıntı şöyleThe constant interface pattern is a poor use of interfaces. That a class uses some constants internally is an implementation detail. Implementing a constant interface causes this implementation detail to leak into the class’s exported API. It is of no consequence to the users of a class that the class implements a constant interface
There are several constant interfaces in the Java platform libraries...These interfaces should be regarded as anomalies and should not be emulated.
Sınıf içinde üye alan olarak Object[] kullanmak iyi değil
Örnek
Şu kod iyi değil.
class CustomArrayList<E> {
private static final int INITIAL_CAPACITY = 10;
private Object[] elementData;
private int size = 0;
public CustomArrayList() {
elementData = new Object[INITIAL_CAPACITY];
}
...
}
Şöyle yaparızclass CustomArrayList<E> {
private E[] elementData;
/* ... */
public CustomArrayList() {
elementData = (E[]) new Object[INITIAL_CAPACITY];
}
/* ... */
}
Item 47 : Prefer Collection to Stream as a return type
Şöyle yaparız
// Böyle değil
Stream<Integer> getValues();
Iterable<Integer> getValues();
// Böyle
Collection<Integer> getValues();
Açıklaması şöyle. Yani Collection hem Stream hem de Iterable nesneye zaten kolayca döndürülebilir.
The Collection interface is subtype of Iterable and has stream method. Therefore, Collection or an appropriate subtype is generally the best return type for a public, sequence returning method. If you are writing a method that returns a sequence of objects and you know that it will only be used in stream pipeline, then, you should feel free to return a stream.
Item 85 : Prefer alternatives to java serialization
JEP 290 - Serialization Filtering yazısına taşıdım
Item 90 - Consider Serialization Proxies Instead of Serialized Instances
Binary Serialization - Serialization Proxy yazısına taşıdım
Hiç yorum yok:
Yorum Gönder