Re[8]: хромая логика
От: __kot2  
Дата: 02.12.16 01:26
Оценка:
Здравствуйте, CreatorCray, Вы писали:
CC>>>В данном случае префикс позволяет понять в какую переменную в данном месте мы лезем: член класса, локальную или, простигосподи, глобальную.
__>>с учетом того, что большая часть кода работает именно с локальными переменными, имело бы смысл делать префикс скоре не для них, а то весь код в префиксах получается.
CC>Ну так и получается. Все локальные (параметры функции — локальные) без префикса, любые мемберы с m_, статики s_, глобальные g_. Больше никаких префиксов не надо.
для глоальных есть префикс :: про статически s_ первый раз слышу. писать m_ это как примерно писать сущ_ перед каждым существительным — удобно только тем, кто привык

__>>не вижу никакой разницы — вызывать p.x() или читать напрямую p.x из const Point &p;

CC>Потому что далеко не всегда у тебя есть исключительно const ссылка на объект, и тогда в том месте можно в p.x ещё и писать, что может вызвать совсем не тот эффект, который ожидался. Получается дыра в интерфейсе через которую можно внутрях всё испортить.
CC>Так что нет.
так и так дыра есть интерфейсе в виде set. для того, чтобы дыр не было Point должен быть иммутабельным

__>>людям, пришедшим из явы-C# это концепция дается с трудом, но все-таки надо же пользоваться именно инструментами языка, а не писать в стиле другого

CC>в жабашарпах есть синтаксическая сахарная нашлёпка, называется property. Это автоматически создаваемый getter + setter, который можно переопределить.
фигня это по сравнению с const

__>> constexpr Point(int x, int y) : x_(x), y_(y) {} — зачем два конструктора, когда одного достаточно с дефолтными параметрами?

CC>Спорно, ну да ладно. Тут скорее вопрос стилистики, единообразия интерфейсов и чистоты кода в более сложных случаях чем этот.
можно обьяснить политическим запретом дефолтных значений, но в данном случае уместно по-моему все-таки иметь дефолтные

CC>Публичные поля в классе — один из признаков говнокода. Хочешь публичные поля — определяй struct.

разумеется Point должен быть struct. не должно быть в нем ничего приватного

__>> void set_x(int x) { x_ = x; } — наркомания!

__>> void set_y(int y) { y_ = y; }
CC>Нет.
что нет? дырка в интерфейсе

__>>почему паскалевское именование в С++ проекте?

CC>А какая компилятору разница?
это паскалевсокму компилятору нет разницы, потому что он регистр не различает, а люди мучаются
CC>Что и как называть определяется принятым в команде coding standard.

__>> void SetToMin(const Point& other); — непонятная фигня. почему это метод класса Point?

CC>А почему нет? Что оно делает внутри?
а х.з. а зачем такие х.з. методы в Point?

__>> std::string ToString() const; — почему это метод класса а не статич ф-ия?

CC>А почему это должна быть статическая функция? Её ж пользовать неудобно.
CC>Если чо, это вообще могло бы быть operator std::string () const;
ну да, влепить tostring в класс прямо мог только джавист-сишарпник. не должно быть это членом класса по уму
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.