Информация об изменениях

Сообщение Re[6]: хромая логика от 01.12.2016 23:23

Изменено 01.12.2016 23:34 __kot2

Здравствуйте, CreatorCray, Вы писали:
CC>В данном случае префикс позволяет понять в какую переменную в данном месте мы лезем: член класса, локальную или, простигосподи, глобальную.
с учетом того, что большая часть кода работает именно с локальными переменными, имело бы смысл делать префикс скоре не для них, а то весь код в префиксах получается. но все же понимают, что это изврат, потому что без классов такого не было.
вот и решили ввести подчеркивания для приватных.

CC>Как только сделают хорошую схему для syntax highlighting которая бы этот вопрос качественно решала без превращения кода в цветомузыку — это применение тоже отсохнет естественным путём.

у С++ есть одно прекрасное свойство — можно любой обьект вернуть как const и он будет только для чтения разумеется.

не вижу никакой разницы — вызывать p.x() или читать напрямую p.x из const Point &p;
нафиг тогда вообзе p.x() нужен? единственный случай — есть какой-то шаблонный код, который всегда вызывает именно p.x(), который для некоторых обьектов вычисляется. но я не думаю, что это по этой причине сделано.

людям, пришедшим из явы-C# это концепция дается с трудом, но все-таки надо же пользоваться именно инструментами языка, а не писать в стиле другого
Re[6]: хромая логика
Здравствуйте, CreatorCray, Вы писали:
CC>В данном случае префикс позволяет понять в какую переменную в данном месте мы лезем: член класса, локальную или, простигосподи, глобальную.
с учетом того, что большая часть кода работает именно с локальными переменными, имело бы смысл делать префикс скоре не для них, а то весь код в префиксах получается. но все же понимают, что это изврат, потому что без классов такого не было.
вот и решили ввести подчеркивания для приватных.

CC>Как только сделают хорошую схему для syntax highlighting которая бы этот вопрос качественно решала без превращения кода в цветомузыку — это применение тоже отсохнет естественным путём.

у С++ есть одно прекрасное свойство — можно любой обьект вернуть как const и он будет только для чтения разумеется.

не вижу никакой разницы — вызывать p.x() или читать напрямую p.x из const Point &p;
нафиг тогда вообзе p.x() нужен? единственный случай — есть какой-то шаблонный код, который всегда вызывает именно p.x(), который для некоторых обьектов вычисляется. но я не думаю, что это по этой причине сделано.

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

вообще, на самом деле к оечно придирабс и хромиум — один из лучших проектов на С++. есть такой мрак, что прямо кровь из глаз течет и ничего — пользуются люди. но если придираться, то я мое ревью бы на Point.h выглядело бы так:
constexpr Point() : x_(0), y_(0) {}  - нафиг constexpr. что он дает?
  constexpr Point(int x, int y) : x_(x), y_(y) {} - зачем два конструктора, когда одного достаточно с дефолтными параметрами?

 constexpr int x() const { return x_; } - убрать нафиг эти методы, сделать члены x и y публичными
  constexpr int y() const { return y_; }

  void set_x(int x) { x_ = x; } - наркомания!
  void set_y(int y) { y_ = y; }
  void SetPoint(int x, int y) { - тяжелая наркомания! зачем нужен метод копирующий реализацию конструктора? почему не p = Point(10, 20), зачем вообще нужен этот set?
    x_ = x;
    y_ = y;
  }

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

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

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