Tại sao khi ko dùng từ khóa this để phân biệt biến toàn cục vs tham số thì máy nó chạy ra đối vs số là 0 còn vs kiểu String là null

Ví dụ :slight_smile:

public struct Size{
    private int _Width; // dấu _ và viết hoa biến private.
    private int _Height; // dấu _ và viết hoa biến private.
    
    public Width{  // public viết hoa chữ cái đầu
        get { return _Width;}
    }
    
    public void ReSize(int width, int height){  // public viết hoa các chữ cái đầu, viết thường với param
        _Width = width;
        _Height = height;
    }
     
    public Size(int width, int height){  // param viết thường toàn bộ
        _Width = width;
        _Height=height;
    }
}
3 Likes

Cách khai báo constructor của anh noz1995 hoàn toàn đúng, không vi phạm điều gì về OOP cả, nhưng có điều mình không thích cách viết này, nhìn nó cực kì “sida”
VD như code của anh noz1995

Student(int new_id, String new_name)
{
    id = new_id;
    name = new_name;
}

Khi hiển thị trên Intellisense nó hiện thế này

Thằng dev mà thấy cái này chắc chửi cho sml :wink:
“Coding style của em lạ quá ha” - Manager said :wink:

1 Like

Bạn thấy cái code đó sida thì bạn có thế cho biết cách nào khác không sida không?
chia sẻ đi chứ. đang dạy nhau học mà.

Hoá ra vấn đề là thẩm mỹ. Chắc cả DNH có mỗi mình ghét dùng từ this, hậu quả của việc lập trình cho vui chứ không làm theo team :frowning:

Nhưng mình hiểu rõ this để làm gì, chỉ là mình cảm thấy nó không cần thiết, và nó làm cho học sinh / sinh viên khi mới tiếp xúc với OOP dễ bị rối. this ở Java hay .NET cũng như nhau thôi, đều là Object cả. Cú pháp cũng giống hệt.

2 Likes

có thể dùng prefix.
m cho instance variable
s cho static variable

Lúc đọc 1 method biến nào viết thường là local, có m đằng trước là biến thuộc object.

Team Android viết theo style prefix.

public class Person {
    private String mName;
    private int mAge;

    public static int sCount = 0;

    Person(String name, int age) {
        mName = name;
        mAge = age;
    }
}
2 Likes

Truyền chính nó làm param cho chỗ khác.

Đó là vấn đề khác mà anh :frowning:

1 Like

Tưởng đang hỏi công dụng thì đấy cũng là một công dụng của this.

Thì tất nhiên, this là đối tượng nên có đầy đủ các thuộc tính của một đối tượng. Nhưng đó là vấn đề khác rồi.

1 Like

Mình nghĩ sai lầm khi dùng this thường đến từ những bạn mới học lập trình hay mới tiếp cận oop chứ sau quen rồi dùng this cho tường mình, dễ nhìn hơn hẳn mà. Nghĩ lại mà xem this đâu có thực sự khó khăn hay phức tạp gì đâu để rồi sinh ra một đống cách đặt tên, prefix như _ hay m khi mà vấn đề đặt tên cho project cực kì nhức nhối khi project trở nên phình to. Trong khi ngôn ngữ đã sinh ra từ this cho chúng ta làm tường minh mọi thứ rồi :smiley:

3 Likes

Vấn đề này do Java thoải mái trong việc có this hay không this để truy xuất instance variable. Trong docs chính thức của Java thì lại recommend không dùng this trừ trường hợp bị trùng biến local, nhưng community covention lại khuyến khích dùng this cho tất cả trường hợp. [spoiler]Mình thì theo trường phái dùng this mọi nơi.[/spoiler]

Vụ tiền tố “m” bắt đầu từ Android Team, sau này lan ra bên cộng đồng, nên có 1 số lib cũng viết kiểu tiền tố luôn, tất nhiên đa số là lib cho Android. Bên Web không có vụ tiền tố “m”.

Còn “_” cho identifer chưa thấy bao giờ, trừ biến final static


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors - Jeff Atwood

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?