【问题标题】:Methods using arguments vs member variables [closed]使用参数与成员变量的方法[关闭]
【发布时间】:2017-07-12 13:49:32
【问题描述】:

当我编写一个类方法并想将参数传递给这个方法时,我经常想知道什么被认为是“更好的”。

  1. 选项:使用成员变量

    class Foo {
        public:
            int x, y, result;
    
            void SomeMethod()
            {
                x = 4;
                y = 10;
                AddMethod();
            }
    
            void AddMethod()
            {
                result = x + y;
            }
    }
    
  2. 选项:传递参数

    class Foo {
        public:
            int result;
    
            void SomeMethod()
            {
                result = AddMethod(4, 14);
            }
    
            int AddMethod(int x, int y)
            {
                return (x + y);
            }
    }
    

就我个人而言,我通常倾向于使用第二个选项,因为对我来说它更具可读性和可理解性。使用一个或另一个代码的正确理由是什么?

【问题讨论】:

  • 它是对象状态的一部分还是仅在该单个成员函数的上下文中使用?
  • 恕我直言,你的例子不是最好的,因为你在做什么我根本不会写一个类
  • 这类问题没有一个答案。这一切都取决于情况,而你没有表现出来。我理解这是因为您想要一个关于如何编程的通用指南,但没有任何指南 - 您必须考虑并考虑每种情况下的情况并根据论据做出决定。
  • @slawekwin 是的,我正在寻找一些通用指南。但是“对此没有一般指导方针”,也是一个答案,这对我有帮助。即使你这个问题肯定没有非常积极的共鸣,谢谢你的回复。

标签: c++ methods arguments


【解决方案1】:

OOP 中的类是描述对象的东西。以现实世界的物体为例,汽车。小车可以有accelerate_to_speed(double speed);这样的功能和Color color;这样的一些成员。方法是对象所做的事情,成员描述对象或显示拥有(汽车可以有引擎Engine engine;)。什么是成员和什么是方法的整个概念是面向对象编程的基础,它不依赖于语言,但语言依赖于它。

你仍然可以用这种方式写一辆汽车:

class Car {
    ...
    double target_speed;
    ...
    void set_target_speed(double speed) {
        target_speed = speed;
    }
    void accelerate_to_speed() {
        current_speed = target_speed;
    }
    ...
}

语言允许,但这是什么意思?汽车是用目标速度来描述的吗?如果不使用汽车,目标速度是什么意思?

【讨论】:

    猜你喜欢
    • 2010-10-06
    • 1970-01-01
    • 1970-01-01
    • 2021-07-03
    • 2017-05-29
    • 2012-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多