Trong bài viết này, tôi xin giới thiệu một số thủ thuật khi viết code trong J2ME.

1. Tạo và loại bỏ các đối tượng

Trong J2ME, để tạo ra một đối tượng mới, ta sử dụng toán tử new, và việc tạo ra đối tượng mới sẽ tốn chi phí rất nhiều về bộ nhớ. Vì vậy, chỉ tạo ra đối tượng khi bạn cảm thấy thật sự cần thiết, và không nên tạo ra đối tượng trong vòng lặp, ví dụ như:

for (int i = 0; i < length; i++) {
ClassName p = new ClassName ();
results[i] = p.calculateResult();
}

String và StringBuffer: Bất cứ lúc nào bạn sử dụng toán tử cộng(“+”) 2 chuỗi hay sử dụng phương thức substring() của lớp String thì nó đều tạo ra một đối tượng String mới. Vì vậy khi sử dụng phương thức substring, nối chuỗi thì bạn nên sử dụng lớp StringBuffer để thay thế.

2.Tối ưu vòng lặp

Nếu có thể, bạn nên sử dụng vòng lặp for để thay thế cho vòng lặp while, và tốt nhất là bạn không nên đưa công việc tính toán vào điều kiện lặp, ví dụ:

//bad
for (int i = 0; i < v.size(); i++) {
    // Do something 
}
//good
int size = v.size();
for (int i = 0; i < size; i++) {
 
  // Do something
}
//better
for (int i = 0,n = v.size(); i < n; i++) {
 
  // Do something
}

3.Phân chia các class của ứng dụng

Môi trường MIDP runtime chỉ load các class mà chúng cần, vì thế bạn nên chia các class lớn thành các class nhỏ hơn. Ngoài ra, bạn chỉ nên import các class mà bạn cần, nên tránh sử dụng import bằng dấu “*” như import java.util.*, thay vào đó nếu bạn muốn import lớp Date, bạn sử dụng import java.util.Date.

4.Tránh xa việc tạo ra quá nhiều thread

Nếu có thể, bạn nên tránh xa việc tạo ra quá nhiều thread, bởi chúng sẽ làm tiếu tốn rất nhiều bộ nhớ và CPU. Chẳng hạn như bạn muốn lưu trữ dữ liệu, nếu dữ liệu ít thì nên sử dụng RecordStore thay vì file để tránh tạo ra thread.

Ngoài ra, khi sử dụng cơ chế đồng bộ giữa các thread, bạn nên chú ý trường hợp deadlock.

5.Tránh xa việc thường xuyên mở các RecordStore

Nếu sử dụng RecordStore, cần nhóm việc read và write tại một nơi nếu có thể, điều này đòi hỏi ứng dụng phải được thiết kế cẩn thận. Việc read và write RecordStore khắp nơi sẽ làm giảm hiệu suất thực thi của ứng dụng. Ngoài ra, việc mở và đóng RecordStore cũng cần được giảm thiểu với thiết kế phù hợp.

6.Tái sử dụng các thành phần giao diện

Việc tái sử dụng các thành phần giao diện như Form, TextBox… thay vì tạo mới nếu có thể được, điều này sẽ giảm thiểu được bộ nhớ lưu trữ.

7.Sử dụng các kiểu phù hợp cho các biến

Việc sử dụng các kiểu phù hợp cho các biến sẽ tránh được việc lãng phí bộ nhớ RAM.

8.Tái sử dụng biến

Bạn nên cố gắng tái sử dụng biến ngay khi có thể. Việc tạo ra quá nhiều biến tự động(auto) cũng gây chậm hiệu suất thực thi và bộ nhớ sử dụng. Việc cấp phát và giải phóng các biến cũng tốn một chi phí nhất định. Tái sử dụng biến có nghĩa là tạo ra các biến global và cần phải cẩn thận để nó không làm ảnh hưởng tới thiết kế của class.

Bạn thấy bài viết này thế nào?

Các bài liên quan
Để viết ứng dụng trên J2ME có hiệu quả – Phần 2