почему геттеры и сеттеры необходимы в задаче c? - PullRequest
1 голос
/ 31 мая 2011

Я прочитал несколько ответов на stackoverflow с этим вопросом в моей голове, но мой вопрос немного другой.то, что я хочу знать, для переменных, которые не зависят от других переменных класса, почему я не могу объявить переменную public, как мы делаем в Java, а затем получить доступ к переменной напрямую?

я имею в виду в объективнойc, если у меня есть переменная, которую я объявил в интерфейсе класса, почему я не могу напрямую (без создания ее методов получения и установки) получить доступ к, self.variable или instanceofclass.variable ....?

это то, что мы обычно делаем в Java и других объектно-ориентированных языках.

Методы получения и установки имеют свои преимущества, но когда вы делаете простые вещи, было бы лучше, если бы вы обращались к переменным вкак я упоминал выше.

PS: я очень плохо знаком с задачей c, поэтому, если мы можем получить доступ к переменным так, как я утверждаю, что мы не можем, пожалуйста, извините.Я пытался сделать это, но произошла ошибка, поэтому я спрашиваю, но это вполне могло быть связано с чем-то другим.еще раз, пожалуйста, извините.

заранее спасибо.

1 Ответ

2 голосов
/ 31 мая 2011

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

Единственная ситуация, когда это не является проблемой, - это когда у вас есть чистая структура, класс, члены которого предназначены только для хранения и переноса множества данных под общим именем, и стратегия хранения уже раскрывается характер данных, которые вы носите с собой.

...