Bạn không nên gọi phân tích cú pháp khi nhìn thấy callSomething()
(tôi đoán bạn có ý callSomething
chứ không phải doSomething
). Sự khác biệt giữa a
và callSomething
là một là một định nghĩa phương thức trong khi cái còn lại là một cuộc gọi phương thức.
Khi bạn thấy một định nghĩa mới, bạn sẽ muốn thực hiện kiểm tra liên quan để đảm bảo bạn có thể thêm định nghĩa đó, vì vậy:
- Kiểm tra xem hàm không tồn tại với cùng chữ ký
- Đảm bảo rằng khai báo phương thức đang được thực hiện trong phạm vi thích hợp (nghĩa là các phương thức có thể được khai báo bên trong các khai báo phương thức khác không?)
Giả sử các kiểm tra này vượt qua, bạn có thể thêm nó vào bản đồ của mình và bắt đầu kiểm tra nội dung của phương thức đó.
Khi bạn tìm thấy một cuộc gọi phương thức như thế nào callSomething()
, bạn nên thực hiện các kiểm tra sau:
- Có
callSomething
tồn tại trong bản đồ của bạn?
- Nó có được gọi đúng không (số lượng đối số khớp với chữ ký mà bạn đã tìm thấy)?
- Các đối số có hợp lệ không (nếu tên biến được sử dụng, chúng có được khai báo không? Chúng có thể được truy cập ở phạm vi này không?)?
- Có thể gọi một cái gì đó từ nơi bạn đang ở (nó là riêng tư, công cộng, được bảo vệ?)?
Nếu bạn thấy điều đó callSomething()
là ổn, thì tại thời điểm này những gì bạn muốn làm thực sự phụ thuộc vào cách bạn muốn tiếp cận nó. Nói đúng ra, một khi bạn biết rằng một cuộc gọi như vậy là ổn vào thời điểm này, bạn chỉ có thể lưu tên của phương thức và các đối số mà không đi sâu vào chi tiết. Khi bạn chạy chương trình của mình, bạn sẽ gọi phương thức với các đối số bạn nên có trong thời gian chạy.
Nếu bạn muốn đi xa hơn, bạn có thể lưu không chỉ chuỗi mà còn liên kết đến phương thức thực tế. Điều này sẽ hiệu quả hơn, nhưng nếu bạn phải quản lý bộ nhớ, nó có thể gây nhầm lẫn. Tôi muốn khuyên bạn chỉ cần giữ chuỗi lúc đầu. Sau này bạn có thể cố gắng tối ưu hóa.
Lưu ý rằng đây là tất cả giả định rằng bạn đã lexx chương trình của bạn, có nghĩa là bạn đã nhận ra tất cả các mã thông báo trong chương trình của bạn và biết chúng là gì . Điều đó không có nghĩa là bạn biết nếu chúng có ý nghĩa với nhau chưa, đó là giai đoạn phân tích cú pháp. Nếu bạn chưa biết mã thông báo là gì, tôi khuyên bạn trước tiên nên tập trung vào việc lấy thông tin đó trước.
Tôi hy vọng điều đó sẽ giúp! Chào mừng bạn đến với lập trình viên SE!