использование частного ключевого слова - PullRequest
20 голосов
/ 02 июня 2010

Я новичок в программировании. Я изучаю Java сейчас, есть кое-что, что я не совсем уверен, что использование частного. Почему программист устанавливает переменную как приватную, а затем пишет, получает и получает доступ к ней. Почему бы не обнародовать все, так как мы все равно это используем.

public class BadOO {
    public int size;

    public int weight;
    ...
}

public class ExploitBadOO {
    public static void main (String [] args) {
        BadOO b = new BadOO();
        b.size = -5; // Legal but bad!!
    }
}

Я нашел такой код, и я увидел комментарий законным, но плохим. Я не понимаю, почему, пожалуйста, объясните мне.

Ответы [ 12 ]

0 голосов
/ 02 июня 2010

Это зависит от того, кто имеет доступ к этим общедоступным переменным. Скорее всего, только людьми внутри вашей компании / команды. Затем тривиально преобразовать их в геттеры / сеттеры при необходимости. Я говорю, что в этом случае лучше оставить переменные общедоступными; если вы не будете вынуждены следовать соглашению о бобах Java.

Если вы пишете фреймворк или библиотеку, предназначенную для общественности, вам не следует выставлять переменные. Позже вы не сможете превратить их в геттеры / сеттеры.

Но 2-й случай более редок, чем первый; когда дело доходит до программиста, люди применяют крайне необоснованные предположения, как будто они не пишут код, а вырезают код из камня. И как будто весь мир смотрит, пока вы кодируете - на самом деле, никто никогда не прочитает ваш код, кроме вас

0 голосов
/ 02 июня 2010

Программисты на C # используют это одинаково часто, а может и чаще, чем я вижу в Java. C # называет это свойствами, где в Java это accessors / mutators

Для меня имеет смысл иметь методы getter и setter для инкапсуляции классов, чтобы ни один класс не мог изменить переменные экземпляра другого класса.

...