Senior & Junior Java Dev – điều gì làm nên sự khác biệt (2)

4. Danh sách chứa rất nhiều giá trị, không nên sử dụng list.get(i).

Khi danh sách chứa rất nhiều giá trị, không nên sử dụng hàm get tại vị trí thứ i để lấy giá trị này ra.

Nguyên nhân là do hàm get sẽ thực hiện duyệt từng phần tử từ 0 -> i để lấy giá trị của vị trí thứ i này ra, việc này sẽ tốn rất nhiều thời gian nếu vị trí cần lấy là càng về cuối của danh sách.

Ví dụ:

  • get(0)-> Danh sách duyệt 1 lần để trả về giá trị tại vị trí thứ 0.
  • get(10)-> Danh sách duyệt 11 lần để trả về giá trị tại vị trí thứ 10.
  • get(100)-> Danh sách duyệt 101 lần để trả về giá trị tại vị trí thứ 100
// Trường hợp giá trị của danh sách là kiểu Object, 
// Object này có một hạng mục là key để phân biệt với các phần tử khác trong danh sách. 
-> Sử dụng map<key, object> 

// Trường hợp cần loop trên từng phần tử của danh sách 
-> Sử dụng for each 
for (Object dto : dtoList) { 

-> Sử dụng iterator 
Iterator ite = dtoList.iterator(); 
while (ite.hasNext()) { 
Object obj = ite.next(); 
}

5. So sánh String trong Java.

Khi thực hiện so sánh String, không nên sử dụng ==.

if (str == "1") 
// Trường hợp str là NULL, sẽ phát sinh NullPoiterException

Nên:

  • Sử dụng equals
  • Để giá trị cố định đằng trước.
if ("1".equals(str)) 
// Trường hợp str là NULL, 
// Giá trị sẽ trả về là FALSE mà không phát sinh NullPoiterException

6. Hạn chế thiết lập cứng giá trị trong source code.

Nhiều bạn thường hay thiết lập giá trị cố định vào đoạn source của mình. Tuy nhiên, giá trị này có khi được sử dụng ở nhiều nơi khác nhau trong source.

Như thế, trường hợp có thay đổi tài liệu, hoặc do mình thiết lập giá trị sai, ta phải sửa lại giá trị này ở tất cả mọi nơi đang sử dụng nó, trong lúc sửa, có thể ta cũng sẽ sửa sót, không hết những chỗ cần sửa.

String projectNameHasVersion = "Project AAA" + "1.0.0"; 
if (str == "ABCDE") {

Nên:

Hãy khai báo Constants ở đầu file, hoặc trong constants.java

public static String PROJECT_NAME = "Project AAA"; 
public static String VERSION = "1.0.0"; 

public void Function_1() { 
String projectNameHasVersion = PROJECT_NAME + VERSION; 
} 

public void Function_2() { 
if (VERSION > …) 
}

7. Luôn sử dụng ENUM khi có thể.

Trường hợp cần phải thiết lập nhiều giá trị Constants mà lại phụ thuộc vào một Key nào đó, nếu ta chỉ khai báo constant thì khi sử dụng có khả năng ta sẽ sử dụng sai giá trị constants của key tương ứng này.

public static String TYPE_A_NAME = "..."; 
public static String TYPE_A_WIDTH = "..."; 
public static String TYPE_A_LENGTH = "..."; 

public static String TYPE_B_NAME = "..."; 
public static String TYPE_B_WIDTH = "..."; 
public static String TYPE_B_LENGTH = "..."; 

public void getInfo(String typeName) { 
if (TYPE_A_NAME.equals(typeName) { 
return TYPE_A_WIDTH + TYPE_A_LENGTH; 
} else if (TYPE_B_NAME.equals(typeName) { 
// -> Ở đây đúng ra cần trả về thông tin của TYPE_B,
// Nhưng có thể do bất cẩn hoặc do lỗi copy
// lại đang trả về giá trị của TYPE_A

return TYPE_B_WIDTH + TYPE_A_LENGTH; 
} 
}

Nên:

Tạo enum để lưu các giá trị thuộc về cùng một key vào 1 giá trị duy nhất

public enum MyType { 
TYPE_A("Type A", "Width of A", "Length of A"), -> Mô tả các giá trị của TYPE_A
TYPE_B("Type B", "Width of B", "Length of B"), -> Mô tả các giá trị của TYPE_B
; 

private String name; 
private String width; 
private String length; 

MyType(String name, String width, String length) { 
this.name = name; 
this.width = width; 
this.length = length; 
} 

public String getName() { 
return name; 
} 

public String getWidth() { 
return width; 
} 

public String getLength() { 
return length; 
} 
}
public void getInfo(String typeName) { 
if (MyType.TYPE_A.getName().equals(typeName) { 
return MyType.TYPE_A.getWidth() + MyType.TYPE_A.getLength(); 
if (MyType.TYPE_B.getName().equals(typeName) { 
return MyType.TYPE_B.getWidth() + MyType.TYPE_B.getLength(); 
} 
} 

public void getInfo(MyType myType) { 
return myType.getWidth() + myType.getLength(); 
}

8. Tìm hiểu thêm về Stream, forEach, Lambda.

Từ phiên bản 1.8 trở đi, java có hỗ trợ thêm các feature mới là Stream, forEach, Lambda nếu có thời gian, nên tìm hiểu thêm phần này. Muốn trở thành Senior tất nhiên phải bỏ công học hỏi.

Nó sẽ giúp việc lập trình trở nên đơn giản và tiết kiệm thời gian hơn!.

Again, thanks for reading, love u so much!

Tham khảo khóa học lập trình web 6 tháng, đảm bảo 100% công việc đầu ra!

Nguồn: https://topdev.vn/blog/senior-junior-java-dev-dieu-gi-lam-nen-su-khac-biet/

Bài viết liên quan

Leave a Reply

Your email address will not be published.