2009-11-28 31 views
5

Tôi nghĩ rằng AS3 hiện có khả năng riêng tư được thêm vào. Vậy tại sao tôi vẫn nên bắt đầu các biến riêng với dấu gạch dưới?AS3: các biến riêng tư có _

private var _privVar:String; 
+0

Bạn có tìm thấy câu trả lời đúng không? –

Trả lời

3

Bạn không phải làm như vậy. Đó là một cái gì đó khuyến khích khả năng đọc, nhưng không có nghĩa là bắt buộc. Hoàn toàn là sở thích cá nhân.

10

Tôi làm cho quy tắc chung trong ActionScript 3 tuân theo phong cách của Adobe.

Không sử dụng dấu gạch dưới cho chênh lệch riêng trừ khi bạn sử dụng getter or setter. Ví dụ:

private var _foo:String; 
public function get foo():String 
{ 
    return _foo; 
} 
public function set foo(value:String):void 
{ 
    _foo = value; 
} 

Ví dụ này getter/setter hơi vô dụng vì bạn chỉ có thể tạo một thuộc tính công khai thực hiện tương tự. Chỉ sử dụng một getter hoặc setter khi bạn cần phải làm một cái gì đó đặc biệt khi bạn nhận được hoặc thiết lập các tài sản. Thậm chí sau đó, nó thường tốt nhất chỉ để tạo ra một phương pháp công cộng để thay thế.

Cũng là một điểm khác. Cá nhân tôi không nghĩ rằng bạn nên viết tắt tên biến hoặc tên phương pháp của mình. Vì vậy, thay vì gọi số của tôi privVar, tôi sẽ gọi nó là riêngVariable. Điều này đặc biệt đúng nếu bạn đang sử dụng một IDE với autocomplete/đề nghị như FlashBuilder (Flex Builder) hoặc FlashDevelop.

Hãy xem Adobe - coding conventions and best practices để biết thêm thông tin.

+1

Nếu getter và setter không làm bất cứ điều gì đặc biệt, nó sẽ nhanh hơn để chỉ biến biến thành công khai. Nó sẽ không làm tổn thương ai cả. – LiraNuna

+0

chính xác! Ví dụ của tôi chỉ là một ví dụ rất đơn giản để thể hiện quan điểm của tôi. Nó là khá hiếm hoi mà bạn thực sự sẽ sử dụng getters hoặc setters trong AS3. Hầu hết thời gian bạn tạo tài sản công cộng hoặc phương thức công khai. –

+1

Khá hiếm? Khó khăn. Tôi đoán nó phụ thuộc vào cách bạn mã, nhưng tôi mã chống lại giao diện khá một chút và getter/setter là cách duy nhất để đạt được điều này. –

0

Sử dụng dấu gạch dưới chỉ là một quy ước. Và tôi cố gắng tránh chúng vì nó gây rối với sự tò mò của tôi. Tôi đang sử dụng để gõ obj.va và nhấn Ctrl-không gian trong xây dựng flex để có được obj.variableName - điều này không làm việc tốt với _variableName

Btw, làm phiên bản trước của ActionScript yêu cầu bạn phải mở đầu tên biến "riêng" với một dấu gạch dưới ?

+0

Nó làm phiền nó, bởi vì có vẻ như bạn không có ý tưởng. Sử dụng dấu gạch dưới là vì bạn muốn đánh dấu một biến là một 'thành viên'. Điều đó có nghĩa là riêng tư hoặc được bảo vệ. Vì vậy, bạn không thể chỉ đơn giản là sử dụng nó như obj.variable - điều này nên được chức năng hoặc getter/setter, mà tất nhiên không bắt đầu với gạch dưới. –

0

Tôi nghĩ rằng bạn không nên viết tắt các biến. nó làm tăng khả năng đọc và tự động hoàn thành. Mặt khác trong thực tế của tôi nó không phải là một điều tốt để sử dụng built-in AS getters và setters với một cú pháp của function set someVar (value) : void. Nó cứng tái cấu trúc rất nhiều bởi vì khi nhận được trong nhiều thời gian bởi chỉ không biết rằng một số biến là một setter hoặc getter.

Ở nơi tôi đã từng làm việc, chúng tôi đã sử dụng quy ước truy cập thuộc tính Java Beans như function setSomeVar (value) : void. Tất nhiên, bởi vì nó không phải là một sử dụng phổ biến trong cộng đồng AS, như IDE như FlashDevelop doen't hỗ trợ như vậy getters và setters thế hệ.

Các vấn đề liên quan