C ++组织函数流

时间:2017-08-22 22:19:37

标签: c++ organization

我正在用C ++编写一个用于微控制器的程序,我需要编写一个函数来通过连接到它的计算机输入一些数字。

此函数应执行许多不同且定义明确的任务,例如:从计算机获取数据(字符),检查字符是否有效,转换实际数字中的字符以及许多其他字符。作为单个函数编写,它至少会有500行。因此,我将编写一组较短的函数和一个“主”函数,以唯一有意义的顺序调用其他函数。这些函数永远不会在其余代码中调用(当然除了主函数)。最后一件事 - 函数需要相互传递很多变量。

组织这些功能的最佳方法是什么?我的第一个难点是在公共部分创建一个只有“main”函数的类,其他函数和不同函数共享的变量作为私有成员,但我想知道这是不是很好的做法:我认为它不是尊重“类”的C ++概念......例如,使用这个“函数组”我需要做类似的事情:

class GetNumbers {
    public:
        //using the constructor as what I called "main" function
        GetNumbers(int arg1, char arg2) {
            performFirstAction();
            performSecondAction();
            ...
        }
    private:
        performFirstAction() {...};
        performSecondAction() {...};
        ...

        bool aSharedVariable;
        int anotherVariable;
        ...
};

我实际上需要从计算机输入这些数字:

GetNumbers thisMakesNoSenseInMyOpinion (x,y);

使“main”函数成为普通的类方法(而不是构造函数)似乎更糟糕:

GetNumbers howCanICallThis;
howCanICallThis.getNumbers(x,y);
...
//somewhere else in the same scope
howCanICallThis.getNumbers(r,s);

1 个答案:

答案 0 :(得分:0)

这确实是一个软件设计问题。说实话,除非你与其他人分享这个组件,否则我真的会担心它的封装方式。

许多库(新旧)可能会创建一系列以特定方式使用的函数。有时它们具有内置的“状态机”,但没有特定的方式来强制执行功能按特定顺序使用。只要记录良好,这是可以的。一组函数可能以同一个单词为前缀,如果要重复使用,则打包为库,这样有人可以链接到您的dll并包含相应的标题。

https://en.wikipedia.org/wiki/Finite-state_machine

  

有限状态机(FSM)或有限状态自动机(FSA,复数:自动机),有限自动机,或简称状态机,是计算的数学模型。

组织一组计算的另一种方法是将它们打包为类,允许构造函数接受所需的输入,并且......

  1. 在构造函数中启动所需的计算
  2. 在调用公共函数(例如> compute()
  3. 之后启动计算
  4. 将其变为functor(具有重载的()运算符集合的类)
  5. 除了基本上无数其他选择......
  6. 这有一些好处,因为如果以后您有多种方法来计算结果,您可以使用称为策略模式的东西即时替换它。

    https://en.wikipedia.org/wiki/Strategy_pattern

      

    在计算机编程中,策略模式(也称为策略模式)是一种行为软件设计模式,可以在运行时选择算法。

    最后,只要你保持一致,你使用哪个并不重要。如果您希望在给定的语言中创建更“惯用”的东西,那么您必须去那里查看网络上的一些代码,以了解事情是如何完成的。不同的社区喜欢不同的风格,这些风格最终都是主观的。